You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2017/10/31 20:36:35 UTC

[airavata] branch revert-135-master created (now b7159b0)

This is an automated email from the ASF dual-hosted git repository.

smarru pushed a change to branch revert-135-master
in repository https://gitbox.apache.org/repos/asf/airavata.git.


      at b7159b0  Revert "Container Based Task Execution Workflow for Airavata"

This branch includes the following new commits:

     new b7159b0  Revert "Container Based Task Execution Workflow for Airavata"

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
['"commits@airavata.apache.org" <co...@airavata.apache.org>'].

[airavata] 01/01: Revert "Container Based Task Execution Workflow for Airavata"

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch revert-135-master
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit b7159b06f96cc9fc7f54011b3f30a1c107b4936b
Author: Suresh Marru <sm...@apache.org>
AuthorDate: Tue Oct 31 16:36:33 2017 -0400

    Revert "Container Based Task Execution Workflow for Airavata"
---
 sandbox/airavata-kubernetes/Design Document.pdf    |  Bin 566742 -> 0 bytes
 sandbox/airavata-kubernetes/User Guide.pdf         |  Bin 532940 -> 0 bytes
 .../modules/api-resource/pom.xml                   |   49 -
 .../application/ApplicationDeploymentResource.java |  100 -
 .../application/ApplicationIfaceResource.java      |   92 -
 .../application/ApplicationInputResource.java      |   79 -
 .../application/ApplicationModuleResource.java     |   70 -
 .../application/ApplicationOutputResource.java     |   68 -
 .../k8s/api/resources/compute/ComputeResource.java |   90 -
 .../k8s/api/resources/data/DataEntryResource.java  |   60 -
 .../experiment/ExperimentInputResource.java        |   90 -
 .../experiment/ExperimentOutputResource.java       |   80 -
 .../resources/experiment/ExperimentResource.java   |  168 -
 .../experiment/ExperimentStatusResource.java       |   79 -
 .../k8s/api/resources/process/ProcessResource.java |  125 -
 .../resources/process/ProcessStatusResource.java   |  107 -
 .../k8s/api/resources/task/TaskParamResource.java  |   60 -
 .../k8s/api/resources/task/TaskResource.java       |  163 -
 .../k8s/api/resources/task/TaskStatusResource.java |   99 -
 .../modules/compute-resource-api/pom.xml           |   61 -
 .../k8s/compute/api/ComputeOperations.java         |   32 -
 .../airavata/k8s/compute/api/ExecutionResult.java  |   60 -
 .../k8s/compute/impl/MockComputeOperation.java     |   68 -
 .../k8s/compute/impl/SSHComputeOperations.java     |  302 -
 .../modules/microservices/api-server/pom.xml       |  162 -
 .../airavata/k8s/api/server/Application.java       |   66 -
 .../k8s/api/server/ServerRuntimeException.java     |   40 -
 .../ApplicationDeploymentController.java           |   60 -
 .../controller/ApplicationInterfaceController.java |   59 -
 .../controller/ApplicationModuleController.java    |   60 -
 .../controller/ComputeResourceController.java      |   59 -
 .../api/server/controller/DataStoreController.java |   71 -
 .../server/controller/ExperimentController.java    |   64 -
 .../api/server/controller/ProcessController.java   |   59 -
 .../k8s/api/server/controller/TaskController.java  |   65 -
 .../model/application/ApplicationDeployment.java   |  109 -
 .../server/model/application/ApplicationInput.java |  116 -
 .../model/application/ApplicationInterface.java    |  100 -
 .../model/application/ApplicationModule.java       |   73 -
 .../model/application/ApplicationOutput.java       |  108 -
 .../k8s/api/server/model/commons/ErrorModel.java   |  108 -
 .../server/model/compute/ComputeResourceModel.java |   96 -
 .../k8s/api/server/model/data/DataStoreModel.java  |   88 -
 .../api/server/model/experiment/Experiment.java    |  168 -
 .../model/experiment/ExperimentInputData.java      |  114 -
 .../model/experiment/ExperimentOutputData.java     |  106 -
 .../server/model/experiment/ExperimentStatus.java  |   99 -
 .../k8s/api/server/model/job/JobModel.java         |  168 -
 .../k8s/api/server/model/job/JobStatus.java        |  109 -
 .../k8s/api/server/model/process/ProcessModel.java |  135 -
 .../api/server/model/process/ProcessStatus.java    |  124 -
 .../k8s/api/server/model/task/TaskModel.java       |  190 -
 .../k8s/api/server/model/task/TaskParam.java       |   82 -
 .../k8s/api/server/model/task/TaskStatus.java      |  121 -
 .../ApplicationDeploymentRepository.java           |   36 -
 .../repository/ApplicationIfaceRepository.java     |   36 -
 .../repository/ApplicationInputRepository.java     |   32 -
 .../repository/ApplicationModuleRepository.java    |   36 -
 .../repository/ApplicationOutputRepository.java    |   32 -
 .../api/server/repository/ComputeRepository.java   |   36 -
 .../api/server/repository/DataStoreRepository.java |   36 -
 .../repository/ExperimentInputDataRepository.java  |   32 -
 .../repository/ExperimentOutputDataRepository.java |   35 -
 .../server/repository/ExperimentRepository.java    |   35 -
 .../repository/ExperimentStatusRepository.java     |   32 -
 .../api/server/repository/ProcessRepository.java   |   35 -
 .../server/repository/ProcessStatusRepository.java |   32 -
 .../api/server/repository/TaskParamRepository.java |   32 -
 .../k8s/api/server/repository/TaskRepository.java  |   35 -
 .../server/repository/TaskStatusRepository.java    |   36 -
 .../service/ApplicationDeploymentService.java      |   87 -
 .../server/service/ApplicationIfaceService.java    |  109 -
 .../server/service/ApplicationModuleService.java   |   69 -
 .../api/server/service/ComputeResourceService.java |   70 -
 .../k8s/api/server/service/ExperimentService.java  |  149 -
 .../k8s/api/server/service/ProcessService.java     |   99 -
 .../k8s/api/server/service/TaskService.java        |  109 -
 .../api/server/service/data/DataStoreService.java  |   71 -
 .../server/service/messaging/MessagingService.java |   42 -
 .../api/server/service/messaging/SenderConfig.java |   64 -
 .../api/server/service/util/ToResourceUtil.java    |  305 -
 .../src/main/resources/application.properties      |    5 -
 .../api-server/src/main/resources/application.yml  |    4 -
 .../src/main/resources/docker/Dockerfile           |    6 -
 .../modules/microservices/event-sink/pom.xml       |  151 -
 .../org/apache/airavata/k8s/sink/Application.java  |   49 -
 .../airavata/k8s/sink/messaging/KafkaReceiver.java |   53 -
 .../airavata/k8s/sink/messaging/KafkaSender.java   |   43 -
 .../k8s/sink/messaging/ReceiverConfig.java         |   85 -
 .../airavata/k8s/sink/messaging/SenderConfig.java  |   69 -
 .../k8s/sink/service/EventPersistingService.java   |   56 -
 .../src/main/resources/application.properties      |    4 -
 .../event-sink/src/main/resources/application.yml  |    4 -
 .../modules/microservices/task-scheduler/pom.xml   |  151 -
 .../org/apache/airavata/k8s/gfac/Application.java  |   49 -
 .../k8s/gfac/core/ProcessLifeCycleManager.java     |  124 -
 .../airavata/k8s/gfac/messaging/KafkaReceiver.java |   53 -
 .../airavata/k8s/gfac/messaging/KafkaSender.java   |   39 -
 .../k8s/gfac/messaging/ReceiverConfig.java         |  109 -
 .../airavata/k8s/gfac/messaging/SenderConfig.java  |   69 -
 .../airavata/k8s/gfac/service/WorkerService.java   |   88 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../tasks/egress-staging-task/pom.xml              |  156 -
 .../airavata/k8s/task/egress/Application.java      |   49 -
 .../k8s/task/egress/messaging/KafkaReceiver.java   |   45 -
 .../k8s/task/egress/messaging/KafkaSender.java     |   43 -
 .../k8s/task/egress/messaging/ReceiverConfig.java  |   85 -
 .../k8s/task/egress/messaging/SenderConfig.java    |   69 -
 .../task/egress/service/TaskExecutionService.java  |  183 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../microservices/tasks/env-cleanup-task/pom.xml   |  156 -
 .../airavata/k8s/task/cleanup/Application.java     |   49 -
 .../k8s/task/cleanup/messaging/KafkaReceiver.java  |   45 -
 .../k8s/task/cleanup/messaging/KafkaSender.java    |   43 -
 .../k8s/task/cleanup/messaging/ReceiverConfig.java |   85 -
 .../k8s/task/cleanup/messaging/SenderConfig.java   |   69 -
 .../task/cleanup/service/TaskExecutionService.java |  153 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../microservices/tasks/env-setup-task/pom.xml     |  157 -
 .../airavata/k8s/task/env/setup/Application.java   |   49 -
 .../task/env/setup/messaging/KafkaReceiver.java    |   45 -
 .../k8s/task/env/setup/messaging/KafkaSender.java  |   43 -
 .../task/env/setup/messaging/ReceiverConfig.java   |   85 -
 .../k8s/task/env/setup/messaging/SenderConfig.java |   69 -
 .../env/setup/service/TaskExecutionService.java    |  153 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../tasks/ingress-staging-task/pom.xml             |  156 -
 .../airavata/k8s/task/ingress/Application.java     |   49 -
 .../k8s/task/ingress/messaging/KafkaReceiver.java  |   45 -
 .../k8s/task/ingress/messaging/KafkaSender.java    |   43 -
 .../k8s/task/ingress/messaging/ReceiverConfig.java |   85 -
 .../k8s/task/ingress/messaging/SenderConfig.java   |   69 -
 .../task/ingress/service/TaskExecutionService.java |  126 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../tasks/job-submission-task/pom.xml              |  156 -
 .../apache/airavata/k8s/task/job/Application.java  |   49 -
 .../k8s/task/job/messaging/KafkaReceiver.java      |   45 -
 .../k8s/task/job/messaging/KafkaSender.java        |   43 -
 .../k8s/task/job/messaging/ReceiverConfig.java     |   85 -
 .../k8s/task/job/messaging/SenderConfig.java       |   69 -
 .../k8s/task/job/service/TaskExecutionService.java |  160 -
 .../src/main/resources/application.properties      |    5 -
 .../src/main/resources/application.yml             |    4 -
 .../microservices/workflow-generator/pom.xml       |  153 -
 .../airavata/k8s/orchestrator/Application.java     |   49 -
 .../k8s/orchestrator/messaging/KafkaReceiver.java  |   46 -
 .../k8s/orchestrator/messaging/KafkaSender.java    |   39 -
 .../k8s/orchestrator/messaging/ReceiverConfig.java |   81 -
 .../k8s/orchestrator/messaging/SenderConfig.java   |   69 -
 .../service/ExperimentLaunchService.java           |  259 -
 .../src/main/resources/application.properties      |    4 -
 .../src/main/resources/application.yml             |    4 -
 sandbox/airavata-kubernetes/pom.xml                |   85 -
 sandbox/airavata-kubernetes/readme.txt             |   21 -
 .../scripts/k8s/api-server/api-server-dep.yml      |   26 -
 .../scripts/k8s/api-server/api-server-svc.yml      |   14 -
 .../airavata-kubernetes/scripts/k8s/db-service.yml |   30 -
 .../scripts/k8s/event-sink/event-sink-dep.yml      |   21 -
 .../scripts/k8s/kafka-service.yml                  |   30 -
 .../k8s/task-scheduler/task-secheduler-dep.yml     |   21 -
 .../egress-staging-task-dep.yml                    |   21 -
 .../env-cleanup-task/env-cleanup-task-dep.yml      |   21 -
 .../tasks/env-setup-task/env-setup-task-dep.yml    |   21 -
 .../ingress-staging-task-dep.yml                   |   21 -
 .../job-submission-task-dep.yml                    |   21 -
 .../workflow-generator/workflow-generator-dep.yml  |   21 -
 .../web-console/.angular-cli.json                  |   64 -
 .../airavata-kubernetes/web-console/.editorconfig  |   13 -
 sandbox/airavata-kubernetes/web-console/.gitignore |   42 -
 sandbox/airavata-kubernetes/web-console/README.md  |   32 -
 .../web-console/docker/Dockerfile                  |    2 -
 .../web-console/e2e/app.e2e-spec.ts                |   14 -
 .../airavata-kubernetes/web-console/e2e/app.po.ts  |   11 -
 .../web-console/e2e/tsconfig.e2e.json              |   14 -
 .../airavata-kubernetes/web-console/karma.conf.js  |   33 -
 .../web-console/package-lock.json                  | 9608 --------------------
 .../airavata-kubernetes/web-console/package.json   |   49 -
 .../web-console/protractor.conf.js                 |   28 -
 .../web-console/src/app/app.component.css          |    0
 .../web-console/src/app/app.component.html         |   20 -
 .../web-console/src/app/app.component.spec.ts      |   27 -
 .../web-console/src/app/app.component.ts           |   13 -
 .../web-console/src/app/app.module.ts              |   42 -
 .../web-console/src/app/app.routing.ts             |   14 -
 .../app-dep/list/app.dep.list.component.ts         |   90 -
 .../src/app/components/app-dep/list/list.html      |   77 -
 .../app-iface/list/app.iface.list.component.ts     |   88 -
 .../src/app/components/app-iface/list/list.html    |  111 -
 .../app-module/list/app.module.list.component.ts   |   64 -
 .../src/app/components/app-module/list/list.html   |   56 -
 .../compute/list/compute.list.component.ts         |   66 -
 .../src/app/components/compute/list/list.html      |   69 -
 .../components/dashboard/dashboard.component.ts    |   12 -
 .../src/app/components/dashboard/dashboard.html    |   45 -
 .../app/components/dashboard/dashboard.routes.ts   |   50 -
 .../app/components/experiment/detail/detail.html   |  124 -
 .../experiment/detail/experiment.detail.ts         |   64 -
 .../experiment/list/experiment.list.component.ts   |  141 -
 .../src/app/components/experiment/list/list.html   |  117 -
 .../src/app/components/process/detail/detail.html  |  107 -
 .../process/detail/process.detail.component.ts     |   47 -
 .../src/app/components/setup/setup.component.ts    |   25 -
 .../src/app/components/setup/setup.html            |   13 -
 .../application/application.deployment.model.ts    |   27 -
 .../models/application/application.iface.model.ts  |   29 -
 .../models/application/application.ipnput.model.ts |   22 -
 .../models/application/application.module.model.ts |   21 -
 .../models/application/application.output.model.ts |   21 -
 .../app/models/compute/compute.resource.model.ts   |   30 -
 .../src/app/models/data/data.entry.model.ts        |    9 -
 .../models/experiment/experiment.input.model.ts    |   22 -
 .../src/app/models/experiment/experiment.model.ts  |   44 -
 .../models/experiment/experiment.output.model.ts   |   20 -
 .../models/experiment/experiment.status.model.ts   |   10 -
 .../src/app/models/process/process.model.ts        |   20 -
 .../src/app/models/process/process.status.model.ts |   15 -
 .../web-console/src/app/models/task/task.model.ts  |   41 -
 .../src/app/models/task/task.param.model.ts        |   18 -
 .../src/app/models/task/task.status.model.ts       |   24 -
 .../web-console/src/app/services/api.service.ts    |   46 -
 .../src/app/services/app.module.service.ts         |   23 -
 .../src/app/services/application.iface.service.ts  |   23 -
 .../src/app/services/compute.service.ts            |   22 -
 .../src/app/services/deployment.service.ts         |   21 -
 .../src/app/services/experiment.service.ts         |   31 -
 .../src/app/services/process.service.ts            |   28 -
 .../web-console/src/app/services/task.service.ts   |   25 -
 .../web-console/src/assets/.gitkeep                |    0
 .../src/environments/environment.prod.ts           |    3 -
 .../web-console/src/environments/environment.ts    |    8 -
 .../web-console/src/favicon.ico                    |  Bin 5430 -> 0 bytes
 .../airavata-kubernetes/web-console/src/index.html |   16 -
 .../airavata-kubernetes/web-console/src/main.ts    |   12 -
 .../web-console/src/polyfills.ts                   |   76 -
 .../airavata-kubernetes/web-console/src/styles.css |    1 -
 .../airavata-kubernetes/web-console/src/test.ts    |   32 -
 .../web-console/src/tsconfig.app.json              |   13 -
 .../web-console/src/tsconfig.spec.json             |   20 -
 .../web-console/src/typings.d.ts                   |    5 -
 .../airavata-kubernetes/web-console/tsconfig.json  |   19 -
 .../airavata-kubernetes/web-console/tslint.json    |  141 -
 246 files changed, 24487 deletions(-)

diff --git a/sandbox/airavata-kubernetes/Design Document.pdf b/sandbox/airavata-kubernetes/Design Document.pdf
deleted file mode 100644
index aac8cf2..0000000
Binary files a/sandbox/airavata-kubernetes/Design Document.pdf and /dev/null differ
diff --git a/sandbox/airavata-kubernetes/User Guide.pdf b/sandbox/airavata-kubernetes/User Guide.pdf
deleted file mode 100644
index 80ca6c2..0000000
Binary files a/sandbox/airavata-kubernetes/User Guide.pdf and /dev/null differ
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/pom.xml b/sandbox/airavata-kubernetes/modules/api-resource/pom.xml
deleted file mode 100644
index e0e879e..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>api-resource</artifactId>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationDeploymentResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationDeploymentResource.java
deleted file mode 100644
index 3d1bb51..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationDeploymentResource.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.application;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ApplicationDeploymentResource {
-
-    private long id;
-    private String name;
-    private long applicationModuleId;
-    private long computeResourceId;
-    private String executablePath;
-    private String preJobCommand;
-    private String postJobCommand;
-
-    public long getId() {
-        return id;
-    }
-
-    public ApplicationDeploymentResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public long getApplicationModuleId() {
-        return applicationModuleId;
-    }
-
-    public ApplicationDeploymentResource setApplicationModuleId(long applicationModuleId) {
-        this.applicationModuleId = applicationModuleId;
-        return this;
-    }
-
-    public long getComputeResourceId() {
-        return computeResourceId;
-    }
-
-    public ApplicationDeploymentResource setComputeResourceId(long computeResourceId) {
-        this.computeResourceId = computeResourceId;
-        return this;
-    }
-
-    public String getExecutablePath() {
-        return executablePath;
-    }
-
-    public ApplicationDeploymentResource setExecutablePath(String executablePath) {
-        this.executablePath = executablePath;
-        return this;
-    }
-
-    public String getPreJobCommand() {
-        return preJobCommand;
-    }
-
-    public ApplicationDeploymentResource setPreJobCommand(String preJobCommand) {
-        this.preJobCommand = preJobCommand;
-        return this;
-    }
-
-    public String getPostJobCommand() {
-        return postJobCommand;
-    }
-
-    public ApplicationDeploymentResource setPostJobCommand(String postJobCommand) {
-        this.postJobCommand = postJobCommand;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationDeploymentResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationIfaceResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationIfaceResource.java
deleted file mode 100644
index 2a42f9d..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationIfaceResource.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.application;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ApplicationIfaceResource {
-    private long id;
-    private String name;
-    private String description;
-    private long applicationModuleId;
-    private List<ApplicationInputResource> inputs = new ArrayList<>();
-    private List<ApplicationOutputResource> outputs = new ArrayList<>();
-
-    public long getId() {
-        return id;
-    }
-
-    public ApplicationIfaceResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationIfaceResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public ApplicationIfaceResource setDescription(String description) {
-        this.description = description;
-        return this;
-    }
-
-    public long getApplicationModuleId() {
-        return applicationModuleId;
-    }
-
-    public ApplicationIfaceResource setApplicationModuleId(long applicationModuleId) {
-        this.applicationModuleId = applicationModuleId;
-        return this;
-    }
-
-    public List<ApplicationInputResource> getInputs() {
-        return inputs;
-    }
-
-    public ApplicationIfaceResource setInputs(List<ApplicationInputResource> inputs) {
-        this.inputs = inputs;
-        return this;
-    }
-
-    public List<ApplicationOutputResource> getOutputs() {
-        return outputs;
-    }
-
-    public ApplicationIfaceResource setOutputs(List<ApplicationOutputResource> outputs) {
-        this.outputs = outputs;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationInputResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationInputResource.java
deleted file mode 100644
index 60bffd2..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationInputResource.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.application;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ApplicationInputResource {
-
-    private long id;
-    private String name;
-    private int type;
-    private String value;
-    private String arguments;
-
-    public long getId() {
-        return id;
-    }
-
-    public ApplicationInputResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationInputResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public void setType(int type) {
-        this.type = type;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public ApplicationInputResource setValue(String value) {
-        this.value = value;
-        return this;
-    }
-
-    public String getArguments() {
-        return arguments;
-    }
-
-    public ApplicationInputResource setArguments(String arguments) {
-        this.arguments = arguments;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationModuleResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationModuleResource.java
deleted file mode 100644
index 59de417..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationModuleResource.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.application;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ApplicationModuleResource {
-
-    private long id;
-    private String name;
-    private String version;
-    private String description;
-
-    public long getId() {
-        return id;
-    }
-
-    public ApplicationModuleResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationModuleResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public ApplicationModuleResource setVersion(String version) {
-        this.version = version;
-        return this;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public ApplicationModuleResource setDescription(String description) {
-        this.description = description;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationOutputResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationOutputResource.java
deleted file mode 100644
index 20d385f..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/application/ApplicationOutputResource.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.application;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ApplicationOutputResource {
-    private long id;
-    private String name;
-    private int type;
-    private String value;
-
-    public long getId() {
-        return id;
-    }
-
-    public ApplicationOutputResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationOutputResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public void setType(int type) {
-        this.type = type;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public ApplicationOutputResource setValue(String value) {
-        this.value = value;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/compute/ComputeResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/compute/ComputeResource.java
deleted file mode 100644
index b4d3eee..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/compute/ComputeResource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.compute;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ComputeResource {
-
-    private long id;
-    private String name;
-    private String host;
-    private String userName;
-    private String password;
-    private String communicationType;
-
-    public long getId() {
-        return id;
-    }
-
-    public ComputeResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ComputeResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    public ComputeResource setHost(String host) {
-        this.host = host;
-        return this;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public ComputeResource setUserName(String userName) {
-        this.userName = userName;
-        return this;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public ComputeResource setPassword(String password) {
-        this.password = password;
-        return this;
-    }
-
-    public String getCommunicationType() {
-        return communicationType;
-    }
-
-    public ComputeResource setCommunicationType(String communicationType) {
-        this.communicationType = communicationType;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/data/DataEntryResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/data/DataEntryResource.java
deleted file mode 100644
index 912e7a2..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/data/DataEntryResource.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.data;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class DataEntryResource {
-
-    private long id;
-    private String dataType;
-    private String name;
-
-    public long getId() {
-        return id;
-    }
-
-    public DataEntryResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public DataEntryResource setDataType(String dataType) {
-        this.dataType = dataType;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public DataEntryResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentInputResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentInputResource.java
deleted file mode 100644
index dbaecad..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentInputResource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.experiment;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ExperimentInputResource {
-
-    private long id;
-    private String name;
-    private int type;
-    private String value;
-    private String arguments;
-
-    public long getId() {
-        return id;
-    }
-
-    public ExperimentInputResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ExperimentInputResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public ExperimentInputResource setType(int type) {
-        this.type = type;
-        return this;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public ExperimentInputResource setValue(String value) {
-        this.value = value;
-        return this;
-    }
-
-    public String getArguments() {
-        return arguments;
-    }
-
-    public ExperimentInputResource setArguments(String arguments) {
-        this.arguments = arguments;
-        return this;
-    }
-
-    public static final class Types {
-        public static final int STRING = 0;
-        public static final int INTEGER = 1;
-        public static final int FLOAT = 2;
-        public static final int URI = 3;
-        public static final int URI_COLLECTION = 4;
-        public static final int STDOUT = 5;
-        public static final int STDERR = 6;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentOutputResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentOutputResource.java
deleted file mode 100644
index 3c3fa59..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentOutputResource.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.experiment;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ExperimentOutputResource {
-
-    private long id;
-    private String name;
-    private String value;
-    private int type;
-
-    public long getId() {
-        return id;
-    }
-
-    public ExperimentOutputResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ExperimentOutputResource setName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public ExperimentOutputResource setValue(String value) {
-        this.value = value;
-        return this;
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public ExperimentOutputResource setType(int type) {
-        this.type = type;
-        return this;
-    }
-
-    public static final class Types {
-        public static final int STRING = 0;
-        public static final int INTEGER = 1;
-        public static final int FLOAT = 2;
-        public static final int URI = 3;
-        public static final int URI_COLLECTION = 4;
-        public static final int STDOUT = 5;
-        public static final int STDERR = 6;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentResource.java
deleted file mode 100644
index 7c8ab73..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentResource.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.experiment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ExperimentResource {
-
-    private long id;
-    private String experimentName;
-    private long creationTime;
-    private String description;
-    private long applicationInterfaceId;
-    private String applicationInterfaceName;
-    private long applicationDeploymentId;
-    private String applicationDeploymentName;
-
-    private List<ExperimentInputResource> experimentInputs = new ArrayList<>();
-
-    private List<ExperimentOutputResource> experimentOutputs = new ArrayList<>();
-
-    private List<ExperimentStatusResource> experimentStatus = new ArrayList<>();
-
-    private List<Long> errorsIds = new ArrayList<>();
-
-    private List<Long> processIds = new ArrayList<>();
-
-    public long getId() {
-        return id;
-    }
-
-    public ExperimentResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getExperimentName() {
-        return experimentName;
-    }
-
-    public ExperimentResource setExperimentName(String experimentName) {
-        this.experimentName = experimentName;
-        return this;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public ExperimentResource setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-        return this;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public ExperimentResource setDescription(String description) {
-        this.description = description;
-        return this;
-    }
-
-    public long getApplicationInterfaceId() {
-        return applicationInterfaceId;
-    }
-
-    public ExperimentResource setApplicationInterfaceId(long applicationInterfaceId) {
-        this.applicationInterfaceId = applicationInterfaceId;
-        return this;
-    }
-
-    public long getApplicationDeploymentId() {
-        return applicationDeploymentId;
-    }
-
-    public ExperimentResource setApplicationDeploymentId(long applicationDeploymentId) {
-        this.applicationDeploymentId = applicationDeploymentId;
-        return this;
-    }
-
-    public List<ExperimentInputResource> getExperimentInputs() {
-        return experimentInputs;
-    }
-
-    public ExperimentResource setExperimentInputs(List<ExperimentInputResource> experimentInputs) {
-        this.experimentInputs = experimentInputs;
-        return this;
-    }
-
-    public List<ExperimentOutputResource> getExperimentOutputs() {
-        return experimentOutputs;
-    }
-
-    public ExperimentResource setExperimentOutputs(List<ExperimentOutputResource> experimentOutputs) {
-        this.experimentOutputs = experimentOutputs;
-        return this;
-    }
-
-    public List<ExperimentStatusResource> getExperimentStatus() {
-        return experimentStatus;
-    }
-
-    public ExperimentResource setExperimentStatus(List<ExperimentStatusResource> experimentStatus) {
-        this.experimentStatus = experimentStatus;
-        return this;
-    }
-
-    public List<Long> getErrorsIds() {
-        return errorsIds;
-    }
-
-    public ExperimentResource setErrorsIds(List<Long> errorsIds) {
-        this.errorsIds = errorsIds;
-        return this;
-    }
-
-    public List<Long> getProcessIds() {
-        return processIds;
-    }
-
-    public ExperimentResource setProcessIds(List<Long> processIds) {
-        this.processIds = processIds;
-        return this;
-    }
-
-    public String getApplicationInterfaceName() {
-        return applicationInterfaceName;
-    }
-
-    public ExperimentResource setApplicationInterfaceName(String applicationInterfaceName) {
-        this.applicationInterfaceName = applicationInterfaceName;
-        return this;
-    }
-
-    public String getApplicationDeploymentName() {
-        return applicationDeploymentName;
-    }
-
-    public ExperimentResource setApplicationDeploymentName(String applicationDeploymentName) {
-        this.applicationDeploymentName = applicationDeploymentName;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentStatusResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentStatusResource.java
deleted file mode 100644
index aa605b2..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/experiment/ExperimentStatusResource.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.experiment;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ExperimentStatusResource {
-    private long id;
-    private int state;
-    private String stateStr;
-    private long timeOfStateChange;
-    private String reason;
-
-    public long getId() {
-        return id;
-    }
-
-    public ExperimentStatusResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public ExperimentStatusResource setState(int state) {
-        this.state = state;
-        return this;
-    }
-
-    public String getStateStr() {
-        return stateStr;
-    }
-
-    public ExperimentStatusResource setStateStr(String stateStr) {
-        this.stateStr = stateStr;
-        return this;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public ExperimentStatusResource setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-        return this;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public ExperimentStatusResource setReason(String reason) {
-        this.reason = reason;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessResource.java
deleted file mode 100644
index 8805e74..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessResource.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.process;
-
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ProcessResource {
-
-    private long id;
-    private long experimentId;
-    private long creationTime;
-    private long lastUpdateTime;
-    private List<ProcessStatusResource> processStatuses = new ArrayList<>();
-    private List<TaskResource> tasks = new ArrayList<>();
-    private List<Long> processErrorIds = new ArrayList<>();
-    private String taskDag;
-    private String experimentDataDir;
-
-    public long getId() {
-        return id;
-    }
-
-    public ProcessResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public long getExperimentId() {
-        return experimentId;
-    }
-
-    public ProcessResource setExperimentId(long experimentId) {
-        this.experimentId = experimentId;
-        return this;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public ProcessResource setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-        return this;
-    }
-
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public ProcessResource setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-        return this;
-    }
-
-    public List<ProcessStatusResource> getProcessStatuses() {
-        return processStatuses;
-    }
-
-    public ProcessResource setProcessStatuses(List<ProcessStatusResource> processStatuses) {
-        this.processStatuses = processStatuses;
-        return this;
-    }
-
-    public List<TaskResource> getTasks() {
-        return tasks;
-    }
-
-    public ProcessResource setTasks(List<TaskResource> tasks) {
-        this.tasks = tasks;
-        return this;
-    }
-
-    public String getTaskDag() {
-        return taskDag;
-    }
-
-    public ProcessResource setTaskDag(String taskDag) {
-        this.taskDag = taskDag;
-        return this;
-    }
-
-    public List<Long> getProcessErrorIds() {
-        return processErrorIds;
-    }
-
-    public ProcessResource setProcessErrorIds(List<Long> processErrorIds) {
-        this.processErrorIds = processErrorIds;
-        return this;
-    }
-
-    public String getExperimentDataDir() {
-        return experimentDataDir;
-    }
-
-    public ProcessResource setExperimentDataDir(String experimentDataDir) {
-        this.experimentDataDir = experimentDataDir;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessStatusResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessStatusResource.java
deleted file mode 100644
index cfaa212..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/process/ProcessStatusResource.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.process;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ProcessStatusResource {
-
-    private long id;
-    private int state;
-    private String stateStr;
-    private long timeOfStateChange;
-    private String reason;
-    private long processId;
-
-    public long getId() {
-        return id;
-    }
-
-    public ProcessStatusResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public ProcessStatusResource setState(int state) {
-        this.state = state;
-        return this;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public ProcessStatusResource setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-        return this;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public ProcessStatusResource setReason(String reason) {
-        this.reason = reason;
-        return this;
-    }
-
-    public long getProcessId() {
-        return processId;
-    }
-
-    public ProcessStatusResource setProcessId(long processId) {
-        this.processId = processId;
-        return this;
-    }
-
-    public String getStateStr() {
-        return stateStr;
-    }
-
-    public ProcessStatusResource setStateStr(String stateStr) {
-        this.stateStr = stateStr;
-        return this;
-    }
-
-    public static final class State {
-        public static final int CREATED = 0;
-        public static final int VALIDATED = 1;
-        public static final int STARTED = 2;
-        public static final int PRE_PROCESSING = 3;
-        public static final int CONFIGURING_WORKSPACE = 4;
-        public static final int INPUT_DATA_STAGING = 5;
-        public static final int EXECUTING = 6;
-        public static final int MONITORING = 7;
-        public static final int OUTPUT_DATA_STAGING = 8;
-        public static final int POST_PROCESSING = 9;
-        public static final int COMPLETED = 10;
-        public static final int FAILED = 11;
-        public static final int CANCELLING = 12;
-        public static final int CANCELED = 13;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskParamResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskParamResource.java
deleted file mode 100644
index 033e367..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskParamResource.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.task;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class TaskParamResource {
-
-    private long id;
-    private String key;
-    private String value;
-
-    public long getId() {
-        return id;
-    }
-
-    public TaskParamResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public TaskParamResource setKey(String key) {
-        this.key = key;
-        return this;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public TaskParamResource setValue(String value) {
-        this.value = value;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskResource.java
deleted file mode 100644
index 10948f7..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskResource.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.task;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class TaskResource {
-
-    private long id;
-    private int taskType;
-    private String taskTypeStr;
-    private long parentProcessId;
-    private long creationTime;
-    private long lastUpdateTime;
-    private List<TaskStatusResource> taskStatus = new ArrayList<>();
-    private String taskDetail;
-    private List<Long> taskErrorIds = new ArrayList<>();
-    private List<TaskParamResource> taskParams = new ArrayList<>();
-    private List<Long> jobIds;
-    private int order;
-
-    public long getId() {
-        return id;
-    }
-
-    public TaskResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public int getTaskType() {
-        return taskType;
-    }
-
-    public TaskResource setTaskType(int taskType) {
-        this.taskType = taskType;
-        return this;
-    }
-
-    public long getParentProcessId() {
-        return parentProcessId;
-    }
-
-    public TaskResource setParentProcessId(long parentProcessId) {
-        this.parentProcessId = parentProcessId;
-        return this;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public TaskResource setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-        return this;
-    }
-
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public TaskResource setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-        return this;
-    }
-
-    public List<TaskStatusResource> getTaskStatus() {
-        return taskStatus;
-    }
-
-    public TaskResource setTaskStatus(List<TaskStatusResource> taskStatus) {
-        this.taskStatus = taskStatus;
-        return this;
-    }
-
-    public String getTaskDetail() {
-        return taskDetail;
-    }
-
-    public TaskResource setTaskDetail(String taskDetail) {
-        this.taskDetail = taskDetail;
-        return this;
-    }
-
-    public List<Long> getTaskErrorIds() {
-        return taskErrorIds;
-    }
-
-    public TaskResource setTaskErrorIds(List<Long> taskErrorIds) {
-        this.taskErrorIds = taskErrorIds;
-        return this;
-    }
-
-    public List<Long> getJobIds() {
-        return jobIds;
-    }
-
-    public TaskResource setJobIds(List<Long> jobIds) {
-        this.jobIds = jobIds;
-        return this;
-    }
-
-    public List<TaskParamResource> getTaskParams() {
-        return taskParams;
-    }
-
-    public TaskResource setTaskParams(List<TaskParamResource> taskParams) {
-        this.taskParams = taskParams;
-        return this;
-    }
-
-    public String getTaskTypeStr() {
-        return taskTypeStr;
-    }
-
-    public TaskResource setTaskTypeStr(String taskTypeStr) {
-        this.taskTypeStr = taskTypeStr;
-        return this;
-    }
-
-    public int getOrder() {
-        return order;
-    }
-
-    public TaskResource setOrder(int order) {
-        this.order = order;
-        return this;
-    }
-
-    public static final class TaskTypes {
-        public static final int ENV_SETUP = 0;
-        public static final int INGRESS_DATA_STAGING = 1;
-        public static final int EGRESS_DATA_STAGING = 2;
-        public static final int JOB_SUBMISSION = 3;
-        public static final int ENV_CLEANUP = 4;
-        public static final int MONITORING = 5;
-        public static final int OUTPUT_FETCHING = 6;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskStatusResource.java b/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskStatusResource.java
deleted file mode 100644
index 884a2b4..0000000
--- a/sandbox/airavata-kubernetes/modules/api-resource/src/main/java/org/apache/airavata/k8s/api/resources/task/TaskStatusResource.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.resources.task;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class TaskStatusResource {
-
-    private long id;
-    private int state;
-    private String stateStr;
-    private long timeOfStateChange;
-    private String reason;
-    private long taskId;
-
-    public long getId() {
-        return id;
-    }
-
-    public TaskStatusResource setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public TaskStatusResource setState(int state) {
-        this.state = state;
-        return this;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public TaskStatusResource setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-        return this;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public TaskStatusResource setReason(String reason) {
-        this.reason = reason;
-        return this;
-    }
-
-    public long getTaskId() {
-        return taskId;
-    }
-
-    public TaskStatusResource setTaskId(long taskId) {
-        this.taskId = taskId;
-        return this;
-    }
-
-    public String getStateStr() {
-        return stateStr;
-    }
-
-    public TaskStatusResource setStateStr(String stateStr) {
-        this.stateStr = stateStr;
-        return this;
-    }
-
-    public static final class State {
-        public static final int CREATED = 0;
-        public static final int SCHEDULED = 1;
-        public static final int EXECUTING = 2;
-        public static final int COMPLETED = 3;
-        public static final int FAILED = 4;
-        public static final int CANCELED = 5;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/compute-resource-api/pom.xml b/sandbox/airavata-kubernetes/modules/compute-resource-api/pom.xml
deleted file mode 100644
index def9012..0000000
--- a/sandbox/airavata-kubernetes/modules/compute-resource-api/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>compute-resource-api</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.jcraft</groupId>
-            <artifactId>jsch</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ComputeOperations.java b/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ComputeOperations.java
deleted file mode 100644
index 3147a93..0000000
--- a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ComputeOperations.java
+++ /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.
- */
-package org.apache.airavata.k8s.compute.api;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ComputeOperations {
-    public ExecutionResult executeCommand(String command) throws Exception;
-    public void transferDataIn(String source, String target, String protocol) throws Exception;
-    public void transferDataOut(String source, String target, String protocol) throws Exception;
-}
diff --git a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ExecutionResult.java b/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ExecutionResult.java
deleted file mode 100644
index 820890f..0000000
--- a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/api/ExecutionResult.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.compute.api;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ExecutionResult {
-
-    private String stdOut;
-    private String stdErr;
-    private int exitStatus = -1;
-
-    public String getStdOut() {
-        return stdOut;
-    }
-
-    public ExecutionResult setStdOut(String stdOut) {
-        this.stdOut = stdOut;
-        return this;
-    }
-
-    public String getStdErr() {
-        return stdErr;
-    }
-
-    public ExecutionResult setStdErr(String stdErr) {
-        this.stdErr = stdErr;
-        return this;
-    }
-
-    public int getExitStatus() {
-        return exitStatus;
-    }
-
-    public ExecutionResult setExitStatus(int exitStatus) {
-        this.exitStatus = exitStatus;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/MockComputeOperation.java b/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/MockComputeOperation.java
deleted file mode 100644
index 350bcff..0000000
--- a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/MockComputeOperation.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.compute.impl;
-
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.api.ExecutionResult;
-
-import java.io.File;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class MockComputeOperation implements ComputeOperations {
-
-    private String computeHost;
-
-    public MockComputeOperation(String computeHost) {
-        this.computeHost = computeHost;
-    }
-
-    @Override
-    public ExecutionResult executeCommand(String command) throws Exception {
-        System.out.println("Executing command " + command + " on host " + this.computeHost);
-        ExecutionResult executionResult = new ExecutionResult();
-        executionResult.setExitStatus(0);
-        executionResult.setStdOut("Sample standard out");
-        executionResult.setStdErr("Simple standard error");
-        Thread.sleep(5000);
-        System.out.println("Command successfully executed");
-        return executionResult;
-    }
-
-    @Override
-    public void transferDataIn(String source, String target, String protocol) throws Exception {
-        System.out.println("Transferring data in from " + source + " to " + target);
-        Thread.sleep(5000);
-        System.out.println("Transferred data in from " + source + " to " + target);
-    }
-
-    @Override
-    public void transferDataOut(String source, String target, String protocol) throws Exception {
-        System.out.println("Transferring data out from " + source + " to " + target);
-        File f = new File(target);
-        f.getParentFile().mkdirs();
-        f.createNewFile();
-        System.out.println("Transferred data out from " + source + " to " + target);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/SSHComputeOperations.java b/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/SSHComputeOperations.java
deleted file mode 100644
index 140c5b6..0000000
--- a/sandbox/airavata-kubernetes/modules/compute-resource-api/src/main/java/org/apache/airavata/k8s/compute/impl/SSHComputeOperations.java
+++ /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.
- */
-package org.apache.airavata.k8s.compute.impl;
-
-import com.jcraft.jsch.*;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.api.ExecutionResult;
-
-import java.io.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class SSHComputeOperations implements ComputeOperations {
-
-    private String computeHost;
-    private String userName;
-    private String password;
-    private int port = 22;
-
-    public SSHComputeOperations(String computeHost, String userName, String password) {
-        this.computeHost = computeHost;
-        this.userName = userName;
-        this.password = password;
-    }
-
-    public SSHComputeOperations(String computeHost, String userName, String password, int port) {
-        this.computeHost = computeHost;
-        this.userName = userName;
-        this.password = password;
-        this.port = port;
-    }
-
-    public ExecutionResult executeCommand(String command) throws JSchException, IOException {
-        JSch jsch = new JSch();
-        Session session = jsch.getSession(userName, this.computeHost, port);
-        session.setConfig("StrictHostKeyChecking", "no");
-
-        session.setUserInfo(new UserInfo() {
-            @Override
-            public String getPassphrase() {
-                return password;
-            }
-
-            @Override
-            public String getPassword() {
-                return password;
-            }
-
-            @Override
-            public boolean promptPassword(String s) {
-                return true;
-            }
-
-            @Override
-            public boolean promptPassphrase(String s) {
-                return false;
-            }
-
-            @Override
-            public boolean promptYesNo(String s) {
-                return false;
-            }
-
-            @Override
-            public void showMessage(String s) {
-
-            }
-        });
-
-        session.connect();
-        Channel channel=session.openChannel("exec");
-        ((ChannelExec)channel).setCommand(command);
-
-        ByteArrayOutputStream sysOut = new ByteArrayOutputStream();
-        channel.setOutputStream(sysOut);
-        ByteArrayOutputStream sysErr = new ByteArrayOutputStream();
-        ((ChannelExec) channel).setErrStream(sysErr);
-
-        InputStream in = channel.getInputStream();
-
-        channel.connect();
-
-        ExecutionResult result = new ExecutionResult();
-        byte[] tmp = new byte[1024];
-        while (true) {
-            while (in.available()>0) {
-                int i = in.read(tmp, 0, 1024);
-                if (i<0) break;
-                System.out.print(new String(tmp, 0, i));
-            }
-            if (channel.isClosed()) {
-                if (in.available() > 0) continue;
-                System.out.println("exit-status: " + channel.getExitStatus());
-                result.setExitStatus(channel.getExitStatus());
-                break;
-            }
-            try {
-                Thread.sleep(1000);
-            } catch(Exception e){}
-        }
-
-        channel.disconnect();
-        session.disconnect();
-
-        result.setStdErr(sysErr.toString("UTF-8"));
-        result.setStdOut(sysOut.toString("UTF-8"));
-        return result;
-    }
-
-    public void transferDataIn(String source, String target, String protocol) {
-
-    }
-
-    public void transferDataOut(String source, String target, String protocol) throws Exception {
-        JSch jsch = new JSch();
-        Session session = jsch.getSession(userName, this.computeHost, port);
-        session.setConfig("StrictHostKeyChecking", "no");
-
-        session.setUserInfo(new UserInfo() {
-            @Override
-            public String getPassphrase() {
-                return password;
-            }
-
-            @Override
-            public String getPassword() {
-                return password;
-            }
-
-            @Override
-            public boolean promptPassword(String s) {
-                return true;
-            }
-
-            @Override
-            public boolean promptPassphrase(String s) {
-                return false;
-            }
-
-            @Override
-            public boolean promptYesNo(String s) {
-                return false;
-            }
-
-            @Override
-            public void showMessage(String s) {
-
-            }
-        });
-
-        session.connect();
-
-        copyRemoteToLocal(session, source, target);
-    }
-
-    private static void copyRemoteToLocal(Session session, String source, String target) throws JSchException, IOException {
-
-        // exec 'scp -f rfile' remotely
-        String command = "scp -f " + source;
-        Channel channel = session.openChannel("exec");
-        ((ChannelExec) channel).setCommand(command);
-
-        // get I/O streams for remote scp
-        OutputStream out = channel.getOutputStream();
-        InputStream in = channel.getInputStream();
-
-        channel.connect();
-
-        byte[] buf = new byte[1024];
-
-        // send '\0'
-        buf[0] = 0;
-        out.write(buf, 0, 1);
-        out.flush();
-
-        while (true) {
-            int c = checkAck(in);
-            if (c != 'C') {
-                break;
-            }
-
-            // read '0644 '
-            in.read(buf, 0, 5);
-
-            long filesize = 0L;
-            while (true) {
-                if (in.read(buf, 0, 1) < 0) {
-                    // error
-                    break;
-                }
-                if (buf[0] == ' ') break;
-                filesize = filesize * 10L + (long) (buf[0] - '0');
-            }
-
-            String file = null;
-            for (int i = 0; ; i++) {
-                in.read(buf, i, 1);
-                if (buf[i] == (byte) 0x0a) {
-                    file = new String(buf, 0, i);
-                    break;
-                }
-            }
-
-            System.out.println("file-size=" + filesize + ", file=" + file);
-
-            // send '\0'
-            buf[0] = 0;
-            out.write(buf, 0, 1);
-            out.flush();
-
-            // read a content of lfile
-            FileOutputStream fos = new FileOutputStream(target);
-            int foo;
-            while (true) {
-                if (buf.length < filesize) foo = buf.length;
-                else foo = (int) filesize;
-                foo = in.read(buf, 0, foo);
-                if (foo < 0) {
-                    // error
-                    break;
-                }
-                fos.write(buf, 0, foo);
-                filesize -= foo;
-                if (filesize == 0L) break;
-            }
-
-            if (checkAck(in) != 0) {
-                System.exit(0);
-            }
-
-            // send '\0'
-            buf[0] = 0;
-            out.write(buf, 0, 1);
-            out.flush();
-
-            try {
-                if (fos != null) fos.close();
-            } catch (Exception ex) {
-                System.out.println(ex);
-            }
-        }
-
-        channel.disconnect();
-        session.disconnect();
-    }
-
-    public static int checkAck(InputStream in) throws IOException {
-        int b = in.read();
-        // b may be 0 for success,
-        //          1 for error,
-        //          2 for fatal error,
-        //         -1
-        if (b == 0) return b;
-        if (b == -1) return b;
-
-        if (b == 1 || b == 2) {
-            StringBuffer sb = new StringBuffer();
-            int c;
-            do {
-                c = in.read();
-                sb.append((char) c);
-            }
-            while (c != '\n');
-            if (b == 1) { // error
-                System.out.print(sb.toString());
-            }
-            if (b == 2) { // fatal error
-                System.out.print(sb.toString());
-            }
-        }
-        return b;
-    }
-
-    public static void main(String args[]) throws IOException, Exception {
-        SSHComputeOperations operations = new SSHComputeOperations("192.168.1.101", "dimuthu", "123456");
-        //ExecutionResult result = operations.executeCommand("sh /opt/sample.sh > /tmp/stdout.txt 2> /tmp/stderr.txt");
-        //System.out.println(result.getStdOut());
-        //System.out.println(result.getStdErr());
-        operations.transferDataOut("/tmp/stdout.txt", "/tmp/b.txt", "SCP");
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/api-server/pom.xml
deleted file mode 100644
index 2ecd6bd..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/pom.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>api-server</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/api-server</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <exposes>
-                                <expose>8080</expose>
-                            </exposes>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>api-server</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/Application.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/Application.java
deleted file mode 100644
index bc06c79..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/Application.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-/**
- * TODO: Class level comments please
- *
- * @author Dimuthu Upeksha
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication(scanBasePackages={"org.apache.airavata.k8s.api.server.controller"})
-@EnableJpaRepositories(basePackages = {"org.apache.airavata.k8s.api.server.repository"})
-@Configuration
-@EnableAutoConfiguration
-@ComponentScan
-public class Application extends SpringBootServletInitializer {
-
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
-        return application.sources(Application.class);
-    }
-
-    public static void main(String args[]) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public WebMvcConfigurer corsConfigurer() {
-        return new WebMvcConfigurerAdapter() {
-            @Override
-            public void addCorsMappings(CorsRegistry registry) {
-                registry.addMapping("/**").allowedOrigins("*");
-            }
-        };
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/ServerRuntimeException.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/ServerRuntimeException.java
deleted file mode 100644
index aae15b4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/ServerRuntimeException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ServerRuntimeException extends RuntimeException {
-    public ServerRuntimeException(Exception e) {
-        super(e);
-    }
-
-    public ServerRuntimeException(String message) {
-        super(message);
-    }
-
-    public ServerRuntimeException(String message, Exception e) {
-        super(message, e);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationDeploymentController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationDeploymentController.java
deleted file mode 100644
index ae3be0d..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationDeploymentController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.application.ApplicationDeploymentResource;
-import org.apache.airavata.k8s.api.server.service.ApplicationDeploymentService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/appdep")
-public class ApplicationDeploymentController {
-
-    @Resource
-    private ApplicationDeploymentService applicationDeploymentService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public Long createApplicationModule(@RequestBody ApplicationDeploymentResource resource) {
-        return applicationDeploymentService.create(resource);
-    }
-
-    @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ApplicationDeploymentResource> getAllDepResources() {
-        return this.applicationDeploymentService.getAll();
-    }
-
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ApplicationDeploymentResource findAppModuleById(@PathVariable("id") long id) {
-        return this.applicationDeploymentService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("App deployment with id " + id + " can not be found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationInterfaceController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationInterfaceController.java
deleted file mode 100644
index e191f66..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationInterfaceController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.application.ApplicationIfaceResource;
-import org.apache.airavata.k8s.api.server.service.ApplicationIfaceService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/appiface")
-public class ApplicationInterfaceController {
-
-    @Resource
-    private ApplicationIfaceService ifaceService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public Long createApplicationModule(@RequestBody ApplicationIfaceResource resource) {
-        return ifaceService.create(resource);
-    }
-
-    @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ApplicationIfaceResource> getAllDepResources() {
-        return this.ifaceService.getAll();
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ApplicationIfaceResource findAppModuleById(@PathVariable("id") long id) {
-        return this.ifaceService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("App interface with id " + id + " can not be found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationModuleController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationModuleController.java
deleted file mode 100644
index 271974b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ApplicationModuleController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.application.ApplicationModuleResource;
-import org.apache.airavata.k8s.api.server.service.ApplicationModuleService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/appmodule")
-public class ApplicationModuleController {
-
-    @Resource
-    private ApplicationModuleService applicationModuleService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public Long createApplicationModule(@RequestBody ApplicationModuleResource resource) {
-        return applicationModuleService.create(resource);
-    }
-
-    @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ApplicationModuleResource> getAllAppModules() {
-        return this.applicationModuleService.getAll();
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ApplicationModuleResource findAppModuleById(@PathVariable("id") long id) {
-        return this.applicationModuleService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Compute resource with id " + id + " can not be found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ComputeResourceController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ComputeResourceController.java
deleted file mode 100644
index 610bb1c..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ComputeResourceController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.server.service.ComputeResourceService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/compute")
-public class ComputeResourceController {
-
-    @Resource
-    private ComputeResourceService computeResourceService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public Long createComputeResource(@RequestBody ComputeResource resource) {
-        return computeResourceService.create(resource);
-    }
-
-    @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ComputeResource> getAllComputeResources() {
-        return this.computeResourceService.getAll();
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ComputeResource findComputeResourceById(@PathVariable("id") long id) {
-        return this.computeResourceService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Compute resource with id " + id + " cab not be found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/DataStoreController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/DataStoreController.java
deleted file mode 100644
index 016011d..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/DataStoreController.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.resources.data.DataEntryResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.service.data.DataStoreService;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import javax.annotation.Resource;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/data")
-public class DataStoreController {
-
-    @Resource
-    private DataStoreService dataStoreService;
-
-    @PostMapping("{taskId}/{expOutputId}/upload")
-    public long uploadData(@RequestParam("file") MultipartFile file, @PathVariable("taskId") long taskId,
-                           @PathVariable("expOutputId") long expOutputId, RedirectAttributes redirectAttributes) {
-
-        System.out.println("Received data for task id " + taskId + " and experiment output id " + expOutputId);
-        if (file.isEmpty()) {
-            throw new ServerRuntimeException("Data file is empty");
-        }
-        try {
-            // Get the file and save it somewhere
-            byte[] bytes = file.getBytes();
-            return this.dataStoreService.createEntry(taskId, expOutputId, bytes);
-        } catch (IOException e) {
-            e.printStackTrace();
-            throw new ServerRuntimeException("Failed to store file", e);
-        }
-    }
-
-    @GetMapping("process/{id}")
-    public List<DataEntryResource> getAllEntriesForProcess(@PathVariable("id") long processId) {
-        return this.dataStoreService.getEntriesForProcess(processId);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ExperimentController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ExperimentController.java
deleted file mode 100644
index 074b8b5..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ExperimentController.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentResource;
-import org.apache.airavata.k8s.api.server.service.ExperimentService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/experiment")
-public class ExperimentController {
-
-    @Resource
-    private ExperimentService experimentService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public long createExperiment(@RequestBody ExperimentResource resource) {
-        return experimentService.create(resource);
-    }
-
-    @GetMapping(path = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public List<ExperimentResource> getAllExperiments() {
-        return this.experimentService.getAll();
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ExperimentResource findExperimentById(@PathVariable("id") long id) {
-        return this.experimentService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Experiment with id " + id + " not found"));
-    }
-
-    @GetMapping(path = "{id}/launch", produces = MediaType.APPLICATION_JSON_VALUE)
-    public long launchExperiment(@PathVariable("id") long id) {
-        return this.experimentService.launchExperiment(id);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ProcessController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ProcessController.java
deleted file mode 100644
index 7dffe68..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/ProcessController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.resources.process.ProcessStatusResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.resources.process.ProcessResource;
-import org.apache.airavata.k8s.api.server.service.ProcessService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/process")
-public class ProcessController {
-
-    @Resource
-    private ProcessService processService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public long createProcess(@RequestBody ProcessResource resource) {
-        return processService.create(resource);
-    }
-
-    @PostMapping( path = "{id}/status", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public long addStatus(@PathVariable("id") long id, @RequestBody ProcessStatusResource resource) {
-        return processService.addProcessStatus(id, resource);
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ProcessResource findProcessById(@PathVariable("id") long id) {
-        return this.processService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Process with id " + id + " not found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/TaskController.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/TaskController.java
deleted file mode 100644
index ef8c797..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/controller/TaskController.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.controller;
-
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.service.TaskService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@RestController
-@RequestMapping(path="/task")
-public class TaskController {
-
-    @Resource
-    private TaskService taskService;
-
-    @PostMapping( path = "", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public long createTask(@RequestBody TaskResource resource) {
-        return taskService.create(resource);
-    }
-
-    @PostMapping( path = "{id}/status", consumes = MediaType.APPLICATION_JSON_VALUE)
-    public long addStatus(@PathVariable("id") long id, @RequestBody TaskStatusResource resource) {
-        return taskService.addTaskStatus(id, resource);
-    }
-
-    @GetMapping(path = "{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public TaskResource findTaskById(@PathVariable("id") long id) {
-        return this.taskService.findById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Task with id " + id + " not found"));
-    }
-
-    @GetMapping(path = "status/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public TaskStatusResource findTaskStatusById(@PathVariable("id") long id) {
-        return this.taskService.findTaskStatusById(id)
-                .orElseThrow(() -> new ServerRuntimeException("Task status with id " + id + " not found"));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationDeployment.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationDeployment.java
deleted file mode 100644
index f7da42d..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationDeployment.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.application;
-
-import org.apache.airavata.k8s.api.server.model.compute.ComputeResourceModel;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "APPLICATION_DEPLOYMENT")
-public class ApplicationDeployment {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @ManyToOne
-    @JoinColumn(name = "APPLICATION_MODULE_ID")
-    private ApplicationModule applicationModule;
-
-    @ManyToOne
-    @JoinColumn(name = "COMPUTE_RESOURCE_ID")
-    private ComputeResourceModel computeResource;
-
-    private String name;
-    private String executablePath;
-    private String preJobCommand;
-    private String postJobCommand;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public ApplicationModule getApplicationModule() {
-        return applicationModule;
-    }
-
-    public void setApplicationModule(ApplicationModule applicationModule) {
-        this.applicationModule = applicationModule;
-    }
-
-    public ComputeResourceModel getComputeResource() {
-        return computeResource;
-    }
-
-    public void setComputeResource(ComputeResourceModel computeResourceModel) {
-        this.computeResource = computeResourceModel;
-    }
-
-    public String getExecutablePath() {
-        return executablePath;
-    }
-
-    public void setExecutablePath(String executablePath) {
-        this.executablePath = executablePath;
-    }
-
-    public String getPreJobCommand() {
-        return preJobCommand;
-    }
-
-    public void setPreJobCommand(String preJobCommand) {
-        this.preJobCommand = preJobCommand;
-    }
-
-    public String getPostJobCommand() {
-        return postJobCommand;
-    }
-
-    public void setPostJobCommand(String postJobCommand) {
-        this.postJobCommand = postJobCommand;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public ApplicationDeployment setName(String name) {
-        this.name = name;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInput.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInput.java
deleted file mode 100644
index 1cc97e3..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInput.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.application;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "APPLICATION_INPUT")
-public class ApplicationInput {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String value;
-    private DataType type;
-    private String arguments;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public DataType getType() {
-        return type;
-    }
-
-    public void setType(DataType type) {
-        this.type = type;
-    }
-
-    public String getArguments() {
-        return arguments;
-    }
-
-    public void setArguments(String arguments) {
-        this.arguments = arguments;
-    }
-
-    public static enum DataType {
-        STRING(0),
-        INTEGER(1),
-        FLOAT(2),
-        URI(3),
-        URI_COLLECTION(4),
-        STDOUT(5),
-        STDERR(6);
-
-        private final int value;
-        private static Map<Integer, DataType> map = new HashMap();
-
-        static {
-            for (DataType dataType : DataType.values()) {
-                map.put(dataType.value, dataType);
-            }
-        }
-
-        private DataType(int value) {
-            this.value = value;
-        }
-
-        public static DataType valueOf(int dataType) {
-            return map.get(dataType);
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInterface.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInterface.java
deleted file mode 100644
index 43d3d07..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationInterface.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.application;
-
-import javax.persistence.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "APPLICATION_INTERFACE")
-public class ApplicationInterface {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String description;
-
-    @ManyToOne
-    @JoinColumn(name = "APP_MODULE_ID")
-    private ApplicationModule applicationModule;
-
-    @OneToMany
-    private List<ApplicationInput> inputs = new ArrayList<>();
-
-    @OneToMany
-    private List<ApplicationOutput> outputs = new ArrayList<>();
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public ApplicationModule getApplicationModule() {
-        return applicationModule;
-    }
-
-    public void setApplicationModule(ApplicationModule applicationModule) {
-        this.applicationModule = applicationModule;
-    }
-
-    public List<ApplicationInput> getInputs() {
-        return inputs;
-    }
-
-    public void setInputs(List<ApplicationInput> inputs) {
-        this.inputs = inputs;
-    }
-
-    public List<ApplicationOutput> getOutputs() {
-        return outputs;
-    }
-
-    public void setOutputs(List<ApplicationOutput> outputs) {
-        this.outputs = outputs;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationModule.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationModule.java
deleted file mode 100644
index 8b06fef..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationModule.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.model.application;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "APPLICATION_MODULE")
-public class ApplicationModule {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String version;
-    private String description;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationOutput.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationOutput.java
deleted file mode 100644
index 1f3ab8d..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/application/ApplicationOutput.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.application;
-
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "APPLICATION_OUTPUT")
-public class ApplicationOutput {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String value;
-    private DataType type;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public DataType getType() {
-        return type;
-    }
-
-    public void setType(DataType type) {
-        this.type = type;
-    }
-
-    public static enum DataType {
-        STRING(0),
-        INTEGER(1),
-        FLOAT(2),
-        URI(3),
-        URI_COLLECTION(4),
-        STDOUT(5),
-        STDERR(6);
-
-        private final int value;
-        private static Map<Integer, DataType> map = new HashMap<>();
-
-        static {
-            for (DataType dataType : DataType.values()) {
-                map.put(dataType.value, dataType);
-            }
-        }
-
-        private DataType(int value) {
-            this.value = value;
-        }
-
-        public static DataType valueOf(int dataType) {
-            return map.get(dataType);
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/commons/ErrorModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/commons/ErrorModel.java
deleted file mode 100644
index b4925e6..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/commons/ErrorModel.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.commons;
-
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-
-import javax.persistence.*;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "ERROR_MODEL")
-public class ErrorModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private long creationTime;
-    private String actualErrorMessage;
-    private String userFriendlyMessage;
-    private boolean transientOrPersistent;
-
-    @ManyToOne
-    private TaskModel taskModel;
-
-    @OneToMany
-    private List<ErrorModel> rootCauseErrorList;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    public String getActualErrorMessage() {
-        return actualErrorMessage;
-    }
-
-    public void setActualErrorMessage(String actualErrorMessage) {
-        this.actualErrorMessage = actualErrorMessage;
-    }
-
-    public String getUserFriendlyMessage() {
-        return userFriendlyMessage;
-    }
-
-    public void setUserFriendlyMessage(String userFriendlyMessage) {
-        this.userFriendlyMessage = userFriendlyMessage;
-    }
-
-    public boolean isTransientOrPersistent() {
-        return transientOrPersistent;
-    }
-
-    public void setTransientOrPersistent(boolean transientOrPersistent) {
-        this.transientOrPersistent = transientOrPersistent;
-    }
-
-    public List<ErrorModel> getRootCauseErrorList() {
-        return rootCauseErrorList;
-    }
-
-    public void setRootCauseErrorList(List<ErrorModel> rootCauseErrorList) {
-        this.rootCauseErrorList = rootCauseErrorList;
-    }
-
-    public TaskModel getTaskModel() {
-        return taskModel;
-    }
-
-    public ErrorModel setTaskModel(TaskModel taskModel) {
-        this.taskModel = taskModel;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/compute/ComputeResourceModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/compute/ComputeResourceModel.java
deleted file mode 100644
index 3244c2b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/compute/ComputeResourceModel.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.compute;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "COMPUTE_RESOURCE")
-public class ComputeResourceModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String host;
-    private String userName;
-    private String password;
-    private String communicationType;
-
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    public ComputeResourceModel setHost(String host) {
-        this.host = host;
-        return this;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public ComputeResourceModel setUserName(String userName) {
-        this.userName = userName;
-        return this;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public ComputeResourceModel setPassword(String password) {
-        this.password = password;
-        return this;
-    }
-
-    public String getCommunicationType() {
-        return communicationType;
-    }
-
-    public ComputeResourceModel setCommunicationType(String communicationType) {
-        this.communicationType = communicationType;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/data/DataStoreModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/data/DataStoreModel.java
deleted file mode 100644
index 71df7c4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/data/DataStoreModel.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.data;
-
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentInputData;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentOutputData;
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "DATA_STORE")
-public class DataStoreModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @Lob
-    @Column(length = 1000000, name = "CONTENT")
-    @Basic(fetch = FetchType.LAZY)
-    private byte[] content;
-
-    @ManyToOne
-    private ExperimentOutputData experimentOutputData;
-
-    @ManyToOne
-    private TaskModel taskModel;
-
-    public long getId() {
-        return id;
-    }
-
-    public DataStoreModel setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public byte[] getContent() {
-        return content;
-    }
-
-    public DataStoreModel setContent(byte[] content) {
-        this.content = content;
-        return this;
-    }
-
-    public ExperimentOutputData getExperimentOutputData() {
-        return experimentOutputData;
-    }
-
-    public DataStoreModel setExperimentOutputData(ExperimentOutputData experimentOutputData) {
-        this.experimentOutputData = experimentOutputData;
-        return this;
-    }
-
-    public TaskModel getTaskModel() {
-        return taskModel;
-    }
-
-    public DataStoreModel setTaskModel(TaskModel taskModel) {
-        this.taskModel = taskModel;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/Experiment.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/Experiment.java
deleted file mode 100644
index 8b96163..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/Experiment.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.experiment;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationDeployment;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInterface;
-import org.apache.airavata.k8s.api.server.model.commons.ErrorModel;
-import org.apache.airavata.k8s.api.server.model.process.ProcessModel;
-
-import javax.persistence.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "EXPERIMENT")
-public class Experiment {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String experimentName;
-    private long creationTime;
-    private String description;
-
-    @ManyToOne
-    private ApplicationInterface applicationInterface;
-
-    @ManyToOne
-    private ApplicationDeployment applicationDeployment;
-
-    @OneToMany
-    private List<ExperimentInputData> experimentInputs = new ArrayList<>();
-
-    @OneToMany
-    private List<ExperimentOutputData> experimentOutputs = new ArrayList<>();
-
-    @OneToMany
-    private List<ExperimentStatus> experimentStatus = new ArrayList<>();
-
-    @OneToMany
-    private List<ErrorModel> errors = new ArrayList<>();
-
-    @OneToMany(mappedBy = "experiment", cascade = CascadeType.ALL)
-    private List<ProcessModel> processes = new ArrayList<>();
-
-    public long getId() {
-        return id;
-    }
-
-    public Experiment setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getExperimentName() {
-        return experimentName;
-    }
-
-    public Experiment setExperimentName(String experimentName) {
-        this.experimentName = experimentName;
-        return this;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public Experiment setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-        return this;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public Experiment setDescription(String description) {
-        this.description = description;
-        return this;
-    }
-
-    public ApplicationInterface getApplicationInterface() {
-        return applicationInterface;
-    }
-
-    public Experiment setApplicationInterface(ApplicationInterface applicationInterface) {
-        this.applicationInterface = applicationInterface;
-        return this;
-    }
-
-    public ApplicationDeployment getApplicationDeployment() {
-        return applicationDeployment;
-    }
-
-    public Experiment setApplicationDeployment(ApplicationDeployment applicationDeployment) {
-        this.applicationDeployment = applicationDeployment;
-        return this;
-    }
-
-    public List<ExperimentInputData> getExperimentInputs() {
-        return experimentInputs;
-    }
-
-    public Experiment setExperimentInputs(List<ExperimentInputData> experimentInputs) {
-        this.experimentInputs = experimentInputs;
-        return this;
-    }
-
-    public List<ExperimentOutputData> getExperimentOutputs() {
-        return experimentOutputs;
-    }
-
-    public Experiment setExperimentOutputs(List<ExperimentOutputData> experimentOutputs) {
-        this.experimentOutputs = experimentOutputs;
-        return this;
-    }
-
-    public List<ExperimentStatus> getExperimentStatus() {
-        return experimentStatus;
-    }
-
-    public Experiment setExperimentStatus(List<ExperimentStatus> experimentStatus) {
-        this.experimentStatus = experimentStatus;
-        return this;
-    }
-
-    public List<ErrorModel> getErrors() {
-        return errors;
-    }
-
-    public Experiment setErrors(List<ErrorModel> errors) {
-        this.errors = errors;
-        return this;
-    }
-
-    public List<ProcessModel> getProcesses() {
-        return processes;
-    }
-
-    public Experiment setProcesses(List<ProcessModel> processes) {
-        this.processes = processes;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentInputData.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentInputData.java
deleted file mode 100644
index 3c19e3f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentInputData.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.experiment;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "EXPERIMENT_INPUT_OBJECT")
-public class ExperimentInputData {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String value;
-    private DataType type;
-    private String arguments;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public DataType getType() {
-        return type;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public void setType(DataType type) {
-        this.type = type;
-    }
-
-    public String getArguments() {
-        return arguments;
-    }
-
-    public void setArguments(String arguments) {
-        this.arguments = arguments;
-    }
-
-    public static enum DataType {
-        STRING(0),
-        INTEGER(1),
-        FLOAT(2),
-        URI(3),
-        URI_COLLECTION(4),
-        STDOUT(5),
-        STDERR(6);
-
-        private final int value;
-        private static Map<Integer, DataType> map = new HashMap<>();
-
-        static {
-            for (DataType dataType : DataType.values()) {
-                map.put(dataType.value, dataType);
-            }
-        }
-
-        public static DataType valueOf(int dataType) {
-            return map.get(dataType);
-        }
-
-        private DataType(int value) {
-            this.value = value;
-        }
-        public int getValue() {
-            return value;
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentOutputData.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentOutputData.java
deleted file mode 100644
index 38a2581..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentOutputData.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.experiment;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "EXPERIMENT_OUTPUT_OBJECT")
-public class ExperimentOutputData {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String name;
-    private String value;
-    private DataType type;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public DataType getType() {
-        return type;
-    }
-
-    public void setType(DataType type) {
-        this.type = type;
-    }
-
-    public static enum DataType {
-        STRING(0),
-        INTEGER(1),
-        FLOAT(2),
-        URI(3),
-        URI_COLLECTION(4),
-        STDOUT(5),
-        STDERR(6);
-
-        private final int value;
-        private static Map<Integer, DataType> map = new HashMap<>();
-
-        static {
-            for (DataType dataType : DataType.values()) {
-                map.put(dataType.value, dataType);
-            }
-        }
-
-        public static DataType valueOf(int dataType) {
-            return map.get(dataType);
-        }
-
-        private DataType(int value) {
-            this.value = value;
-        }
-        public int getValue() {
-            return value;
-        }
-
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentStatus.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentStatus.java
deleted file mode 100644
index 6a17710..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/experiment/ExperimentStatus.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.experiment;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "EXPERIMENT_STATUS")
-public class ExperimentStatus {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private ExperimentState state; // required
-    private long timeOfStateChange; // optional
-    private String reason; // optional
-
-    public long getId() {
-        return id;
-    }
-
-    public ExperimentStatus setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public ExperimentState getState() {
-        return state;
-    }
-
-    public ExperimentStatus setState(ExperimentState state) {
-        this.state = state;
-        return this;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public ExperimentStatus setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-        return this;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public ExperimentStatus setReason(String reason) {
-        this.reason = reason;
-        return this;
-    }
-
-    public enum ExperimentState {
-        CREATED(0),
-        VALIDATED(1),
-        SCHEDULED(2),
-        LAUNCHED(3),
-        EXECUTING(4),
-        CANCELING(5),
-        CANCELED(6),
-        COMPLETED(7),
-        FAILED(8);
-
-        private final int value;
-
-        private ExperimentState(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobModel.java
deleted file mode 100644
index 5e559bb..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobModel.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.job;
-
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-
-import javax.persistence.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "JOB_MODEL")
-public class JobModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @ManyToOne
-    private TaskModel task;
-
-    private String jobDescription;
-    private long creationTime;
-
-    @OneToMany(mappedBy = "jobModel", cascade = CascadeType.ALL)
-    private List<JobStatus> jobStatuses = new ArrayList<>();
-
-    @ManyToOne
-    private TaskModel taskModel;
-    
-    private String computeResourceConsumed;
-    private String jobName;
-    private String workingDir;
-    private String stdOut;
-    private String stdErr;
-    private int exitCode;
-
-    public long getId() {
-        return id;
-    }
-
-    public JobModel setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public TaskModel getTask() {
-        return task;
-    }
-
-    public JobModel setTask(TaskModel task) {
-        this.task = task;
-        return this;
-    }
-
-    public String getJobDescription() {
-        return jobDescription;
-    }
-
-    public JobModel setJobDescription(String jobDescription) {
-        this.jobDescription = jobDescription;
-        return this;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public JobModel setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-        return this;
-    }
-
-    public List<JobStatus> getJobStatuses() {
-        return jobStatuses;
-    }
-
-    public JobModel setJobStatuses(List<JobStatus> jobStatuses) {
-        this.jobStatuses = jobStatuses;
-        return this;
-    }
-
-    public TaskModel getTaskModel() {
-        return taskModel;
-    }
-
-    public JobModel setTaskModel(TaskModel taskModel) {
-        this.taskModel = taskModel;
-        return this;
-    }
-
-    public String getComputeResourceConsumed() {
-        return computeResourceConsumed;
-    }
-
-    public JobModel setComputeResourceConsumed(String computeResourceConsumed) {
-        this.computeResourceConsumed = computeResourceConsumed;
-        return this;
-    }
-
-    public String getJobName() {
-        return jobName;
-    }
-
-    public JobModel setJobName(String jobName) {
-        this.jobName = jobName;
-        return this;
-    }
-
-    public String getWorkingDir() {
-        return workingDir;
-    }
-
-    public JobModel setWorkingDir(String workingDir) {
-        this.workingDir = workingDir;
-        return this;
-    }
-
-    public String getStdOut() {
-        return stdOut;
-    }
-
-    public JobModel setStdOut(String stdOut) {
-        this.stdOut = stdOut;
-        return this;
-    }
-
-    public String getStdErr() {
-        return stdErr;
-    }
-
-    public JobModel setStdErr(String stdErr) {
-        this.stdErr = stdErr;
-        return this;
-    }
-
-    public int getExitCode() {
-        return exitCode;
-    }
-
-    public JobModel setExitCode(int exitCode) {
-        this.exitCode = exitCode;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobStatus.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobStatus.java
deleted file mode 100644
index 38c1ff0..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/job/JobStatus.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.job;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "JOB_STATUS")
-public class JobStatus {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private JobState jobState;
-    private long timeOfStateChange;
-    private String reason;
-    
-    @ManyToOne
-    private JobModel jobModel;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public JobState getJobState() {
-        return jobState;
-    }
-
-    public void setJobState(JobState jobState) {
-        this.jobState = jobState;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public JobModel getJobModel() {
-        return jobModel;
-    }
-
-    public JobStatus setJobModel(JobModel jobModel) {
-        this.jobModel = jobModel;
-        return this;
-    }
-
-    public enum JobState {
-        SUBMITTED(0),
-        QUEUED(1),
-        ACTIVE(2),
-        COMPLETE(3),
-        CANCELED(4),
-        FAILED(5),
-        SUSPENDED(6),
-        UNKNOWN(7);
-
-        private final int value;
-
-        private JobState(int value) {
-            this.value = value;
-        }
-
-        /**
-         * Get the integer value of this enum value, as defined in the Thrift IDL.
-         */
-        public int getValue() {
-            return value;
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessModel.java
deleted file mode 100644
index d3f8984..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessModel.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.process;
-
-import org.apache.airavata.k8s.api.server.model.commons.ErrorModel;
-import org.apache.airavata.k8s.api.server.model.experiment.Experiment;
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-
-import javax.persistence.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-
-@Entity
-@Table(name = "PROCESS_MODEL")
-public class ProcessModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @ManyToOne
-    private Experiment experiment;
-
-    private long creationTime;
-    private long lastUpdateTime;
-
-    @OneToMany(mappedBy = "processModel", cascade = CascadeType.ALL)
-    private List<ProcessStatus> processStatuses = new ArrayList<>();
-
-    @OneToMany(mappedBy = "parentProcess", cascade = CascadeType.ALL)
-    private List<TaskModel> tasks = new ArrayList<>();
-
-    private String taskDag;
-
-    @OneToMany
-    private List<ErrorModel> processErrors = new ArrayList<>();
-
-    private String experimentDataDir;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public Experiment getExperiment() {
-        return experiment;
-    }
-
-    public void setExperiment(Experiment experiment) {
-        this.experiment = experiment;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public void setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-    }
-
-    public List<ProcessStatus> getProcessStatuses() {
-        return processStatuses;
-    }
-
-    public void setProcessStatuses(List<ProcessStatus> processStatuses) {
-        this.processStatuses = processStatuses;
-    }
-
-    public List<TaskModel> getTasks() {
-        return tasks;
-    }
-
-    public void setTasks(List<TaskModel> tasks) {
-        this.tasks = tasks;
-    }
-
-    public String getTaskDag() {
-        return taskDag;
-    }
-
-    public void setTaskDag(String taskDag) {
-        this.taskDag = taskDag;
-    }
-
-    public List<ErrorModel> getProcessErrors() {
-        return processErrors;
-    }
-
-    public void setProcessErrors(List<ErrorModel> processErrors) {
-        this.processErrors = processErrors;
-    }
-
-    public String getExperimentDataDir() {
-        return experimentDataDir;
-    }
-
-    public void setExperimentDataDir(String experimentDataDir) {
-        this.experimentDataDir = experimentDataDir;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessStatus.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessStatus.java
deleted file mode 100644
index 616f1a4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/process/ProcessStatus.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.process;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "PROCESS_STATUS")
-public class ProcessStatus {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @ManyToOne
-    private ProcessModel processModel;
-    private ProcessState state;
-    private long timeOfStateChange;
-    private String reason;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public ProcessModel getProcessModel() {
-        return processModel;
-    }
-
-    public void setProcessModel(ProcessModel processModel) {
-        this.processModel = processModel;
-    }
-
-    public ProcessState getState() {
-        return state;
-    }
-
-    public void setState(ProcessState state) {
-        this.state = state;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public enum ProcessState {
-        CREATED(0),
-        VALIDATED(1),
-        STARTED(2),
-        PRE_PROCESSING(3),
-        CONFIGURING_WORKSPACE(4),
-        INPUT_DATA_STAGING(5),
-        EXECUTING(6),
-        MONITORING(7),
-        OUTPUT_DATA_STAGING(8),
-        POST_PROCESSING(9),
-        COMPLETED(10),
-        FAILED(11),
-        CANCELLING(12),
-        CANCELED(13);
-
-        private final int value;
-
-        private ProcessState(int value) {
-            this.value = value;
-        }
-
-        private static Map<Integer, ProcessState> map = new HashMap<>();
-
-        static {
-            for (ProcessState state : ProcessState.values()) {
-                map.put(state.value, state);
-            }
-        }
-
-        public static ProcessState valueOf(int prcessState) {
-            return map.get(prcessState);
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskModel.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskModel.java
deleted file mode 100644
index 6ce995d..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskModel.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.task;
-
-import org.apache.airavata.k8s.api.server.model.commons.ErrorModel;
-import org.apache.airavata.k8s.api.server.model.job.JobModel;
-import org.apache.airavata.k8s.api.server.model.process.ProcessModel;
-
-import javax.persistence.*;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "TASK_MODEL")
-public class TaskModel {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private TaskTypes taskType;
-
-    @ManyToOne
-    private ProcessModel parentProcess;
-
-    private long creationTime;
-    private long lastUpdateTime;
-    private int orderIndex;
-
-    @OneToMany(mappedBy = "taskModel", cascade = CascadeType.ALL)
-    private List<TaskStatus> taskStatuses = new ArrayList<>();
-
-    private String taskDetail;
-
-    @OneToMany(mappedBy = "taskModel", cascade = CascadeType.ALL)
-    private List<ErrorModel> taskErrors = new ArrayList<>();
-
-    @OneToMany(mappedBy = "taskModel", cascade = CascadeType.ALL)
-    private List<JobModel> jobs = new ArrayList<>();
-
-    @OneToMany(mappedBy = "taskModel", cascade = CascadeType.ALL)
-    private List<TaskParam> taskParams = new ArrayList<>();
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public TaskTypes getTaskType() {
-        return taskType;
-    }
-
-    public void setTaskType(TaskTypes taskType) {
-        this.taskType = taskType;
-    }
-
-    public ProcessModel getParentProcess() {
-        return parentProcess;
-    }
-
-    public void setParentProcess(ProcessModel parentProcess) {
-        this.parentProcess = parentProcess;
-    }
-
-    public long getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(long creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    public long getLastUpdateTime() {
-        return lastUpdateTime;
-    }
-
-    public void setLastUpdateTime(long lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
-    }
-
-    public List<TaskStatus> getTaskStatuses() {
-        return taskStatuses;
-    }
-
-    public void setTaskStatuses(List<TaskStatus> taskStatuses) {
-        this.taskStatuses = taskStatuses;
-    }
-
-    public String getTaskDetail() {
-        return taskDetail;
-    }
-
-    public void setTaskDetail(String taskDetail) {
-        this.taskDetail = taskDetail;
-    }
-
-    public List<ErrorModel> getTaskErrors() {
-        return taskErrors;
-    }
-
-    public void setTaskErrors(List<ErrorModel> taskErrors) {
-        this.taskErrors = taskErrors;
-    }
-
-    public List<JobModel> getJobs() {
-        return jobs;
-    }
-
-    public void setJobs(List<JobModel> jobs) {
-        this.jobs = jobs;
-    }
-
-    public List<TaskParam> getTaskParams() {
-        return taskParams;
-    }
-
-    public TaskModel setTaskParams(List<TaskParam> taskParams) {
-        this.taskParams = taskParams;
-        return this;
-    }
-
-    public int getOrderIndex() {
-        return orderIndex;
-    }
-
-    public TaskModel setOrderIndex(int orderIndex) {
-        this.orderIndex = orderIndex;
-        return this;
-    }
-
-    public enum TaskTypes {
-        ENV_SETUP(0),
-        INGRESS_DATA_STAGING(1),
-        EGRESS_DATA_STAGING(2),
-        JOB_SUBMISSION(3),
-        ENV_CLEANUP(4),
-        MONITORING(5),
-        OUTPUT_FETCHING(6);
-
-        private static Map<Integer, TaskTypes> map = new HashMap<>();
-
-        static {
-            for (TaskTypes taskType : TaskTypes.values()) {
-                map.put(taskType.value, taskType);
-            }
-        }
-        private final int value;
-
-        public static TaskTypes valueOf(int taskType) {
-            return map.get(taskType);
-        }
-
-        private TaskTypes(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskParam.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskParam.java
deleted file mode 100644
index cbeaace..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskParam.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.task;
-
-import javax.persistence.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "TASK_PARAM")
-public class TaskParam {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    @Column(name = "PARAM_KEY")
-    private String key;
-
-    @Column(name = "PARAM_VALUE")
-    private String value;
-
-    @ManyToOne
-    private TaskModel taskModel;
-
-    public long getId() {
-        return id;
-    }
-
-    public TaskParam setId(long id) {
-        this.id = id;
-        return this;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public TaskParam setKey(String key) {
-        this.key = key;
-        return this;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public TaskParam setValue(String value) {
-        this.value = value;
-        return this;
-    }
-
-    public TaskModel getTaskModel() {
-        return taskModel;
-    }
-
-    public TaskParam setTaskModel(TaskModel taskModel) {
-        this.taskModel = taskModel;
-        return this;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskStatus.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskStatus.java
deleted file mode 100644
index d62f450..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/model/task/TaskStatus.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.model.task;
-
-import javax.persistence.*;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Entity
-@Table(name = "TASK_STATUS")
-public class TaskStatus {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private TaskState state; // required
-    private long timeOfStateChange; // optional
-    private String reason; // optional
-
-    @ManyToOne
-    private TaskModel taskModel;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public TaskState getState() {
-        return state;
-    }
-
-    public void setState(TaskState state) {
-        this.state = state;
-    }
-
-    public long getTimeOfStateChange() {
-        return timeOfStateChange;
-    }
-
-    public void setTimeOfStateChange(long timeOfStateChange) {
-        this.timeOfStateChange = timeOfStateChange;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public TaskModel getTaskModel() {
-        return taskModel;
-    }
-
-    public TaskStatus setTaskModel(TaskModel taskModel) {
-        this.taskModel = taskModel;
-        return this;
-    }
-
-    public enum TaskState {
-        CREATED(0),
-        SCHEDULED(1),
-        EXECUTING(2),
-        COMPLETED(3),
-        FAILED(4),
-        CANCELED(5);
-
-        private final int value;
-
-        private TaskState(int value) {
-            this.value = value;
-        }
-
-        private static Map<Integer, TaskState> map = new HashMap<>();
-
-        static {
-            for (TaskState state : TaskState.values()) {
-                map.put(state.value, state);
-            }
-        }
-
-        public static TaskState valueOf(int taskState) {
-            return map.get(taskState);
-        }
-
-        /**
-         * Get the integer value of this enum value, as defined in the Thrift IDL.
-         */
-        public int getValue() {
-            return value;
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationDeploymentRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationDeploymentRepository.java
deleted file mode 100644
index 8699bea..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationDeploymentRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationDeployment;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ApplicationDeploymentRepository extends CrudRepository<ApplicationDeployment, Long> {
-
-    public Optional<ApplicationDeployment> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationIfaceRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationIfaceRepository.java
deleted file mode 100644
index 57a35fb..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationIfaceRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInterface;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ApplicationIfaceRepository extends CrudRepository<ApplicationInterface, Long> {
-
-    public Optional<ApplicationInterface> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationInputRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationInputRepository.java
deleted file mode 100644
index 624fdfe..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationInputRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInput;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ApplicationInputRepository extends CrudRepository<ApplicationInput, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationModuleRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationModuleRepository.java
deleted file mode 100644
index fd1a2ae..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationModuleRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationModule;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ApplicationModuleRepository extends CrudRepository <ApplicationModule, Long> {
-
-    public Optional<ApplicationModule> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationOutputRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationOutputRepository.java
deleted file mode 100644
index 852179f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ApplicationOutputRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationOutput;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ApplicationOutputRepository extends CrudRepository<ApplicationOutput, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ComputeRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ComputeRepository.java
deleted file mode 100644
index fb73dfb..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ComputeRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.compute.ComputeResourceModel;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ComputeRepository extends CrudRepository<ComputeResourceModel, Long> {
-
-    public Optional<ComputeResourceModel> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/DataStoreRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/DataStoreRepository.java
deleted file mode 100644
index ec584c3..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/DataStoreRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.data.DataStoreModel;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.List;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface DataStoreRepository extends CrudRepository<DataStoreModel, Long>{
-
-    List<DataStoreModel> findByTaskModel_ParentProcess_Id(long processId);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentInputDataRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentInputDataRepository.java
deleted file mode 100644
index 9087da7..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentInputDataRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentInputData;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ExperimentInputDataRepository extends CrudRepository<ExperimentInputData, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentOutputDataRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentOutputDataRepository.java
deleted file mode 100644
index b3b9392..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentOutputDataRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentOutputData;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ExperimentOutputDataRepository extends CrudRepository<ExperimentOutputData, Long> {
-    public Optional<ExperimentOutputData> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentRepository.java
deleted file mode 100644
index ca98567..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.experiment.Experiment;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ExperimentRepository extends CrudRepository<Experiment, Long> {
-    public Optional<Experiment> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentStatusRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentStatusRepository.java
deleted file mode 100644
index 0b795c1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ExperimentStatusRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentStatus;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ExperimentStatusRepository extends CrudRepository<ExperimentStatus, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessRepository.java
deleted file mode 100644
index d0dc311..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.process.ProcessModel;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ProcessRepository extends CrudRepository<ProcessModel, Long> {
-    Optional<ProcessModel> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessStatusRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessStatusRepository.java
deleted file mode 100644
index bb11a9a..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/ProcessStatusRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.process.ProcessStatus;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface ProcessStatusRepository extends CrudRepository<ProcessStatus, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskParamRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskParamRepository.java
deleted file mode 100644
index 8d66c41..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskParamRepository.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.task.TaskParam;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface TaskParamRepository extends CrudRepository<TaskParam, Long> {
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskRepository.java
deleted file mode 100644
index 2701c33..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface TaskRepository extends CrudRepository<TaskModel, Long> {
-    public Optional<TaskModel> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskStatusRepository.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskStatusRepository.java
deleted file mode 100644
index b79ad2b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/repository/TaskStatusRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.repository;
-
-import org.apache.airavata.k8s.api.server.model.task.TaskStatus;
-import org.springframework.data.repository.CrudRepository;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public interface TaskStatusRepository extends CrudRepository<TaskStatus, Long> {
-
-    public Optional<TaskStatus> findById(long id);
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationDeploymentService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationDeploymentService.java
deleted file mode 100644
index 941ee6e..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationDeploymentService.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationDeployment;
-import org.apache.airavata.k8s.api.server.repository.ApplicationDeploymentRepository;
-import org.apache.airavata.k8s.api.server.repository.ApplicationModuleRepository;
-import org.apache.airavata.k8s.api.server.repository.ComputeRepository;
-import org.apache.airavata.k8s.api.resources.application.ApplicationDeploymentResource;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ApplicationDeploymentService {
-
-    private ApplicationDeploymentRepository applicationDeploymentRepository;
-    private ComputeRepository computeRepository;
-    private ApplicationModuleRepository applicationModuleRepository;
-
-    @Autowired
-    public ApplicationDeploymentService(ApplicationDeploymentRepository applicationDeploymentRepository,
-                                        ComputeRepository computeRepository,
-                                        ApplicationModuleRepository applicationModuleRepository) {
-        this.applicationDeploymentRepository = applicationDeploymentRepository;
-        this.computeRepository = computeRepository;
-        this.applicationModuleRepository = applicationModuleRepository;
-    }
-
-    public long create(ApplicationDeploymentResource resource) {
-        ApplicationDeployment deployment = new ApplicationDeployment();
-        deployment.setPreJobCommand(resource.getPreJobCommand());
-        deployment.setPostJobCommand(resource.getPostJobCommand());
-        deployment.setExecutablePath(resource.getExecutablePath());
-        deployment.setName(resource.getName());
-        deployment.setComputeResource(computeRepository
-                .findById(resource.getComputeResourceId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find a compute resource with id " +
-                        resource.getComputeResourceId())));
-        deployment.setApplicationModule(applicationModuleRepository
-                .findById(resource.getApplicationModuleId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find an app module with id "
-                        + resource.getApplicationModuleId())));
-        ApplicationDeployment saved = applicationDeploymentRepository.save(deployment);
-        return saved.getId();
-    }
-
-    public Optional<ApplicationDeploymentResource> findById(long id) {
-        return ToResourceUtil.toResource(applicationDeploymentRepository.findById(id).get());
-    }
-
-    public List<ApplicationDeploymentResource> getAll() {
-        List<ApplicationDeploymentResource> deploymentList = new ArrayList<>();
-        Optional.ofNullable(applicationDeploymentRepository.findAll())
-                .ifPresent(deployments ->
-                        deployments.forEach(dep -> deploymentList.add(ToResourceUtil.toResource(dep).get())));
-        return deploymentList;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationIfaceService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationIfaceService.java
deleted file mode 100644
index e95b651..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationIfaceService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInput;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInterface;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationOutput;
-import org.apache.airavata.k8s.api.server.repository.ApplicationIfaceRepository;
-import org.apache.airavata.k8s.api.server.repository.ApplicationInputRepository;
-import org.apache.airavata.k8s.api.server.repository.ApplicationModuleRepository;
-import org.apache.airavata.k8s.api.server.repository.ApplicationOutputRepository;
-import org.apache.airavata.k8s.api.resources.application.ApplicationIfaceResource;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ApplicationIfaceService {
-
-    private ApplicationIfaceRepository ifaceRepository;
-    private ApplicationInputRepository inputRepository;
-    private ApplicationOutputRepository outputRepository;
-    private ApplicationModuleRepository moduleRepository;
-
-    @Autowired
-    public ApplicationIfaceService(ApplicationIfaceRepository ifaceRepository,
-                                   ApplicationInputRepository inputRepository,
-                                   ApplicationOutputRepository outputRepository,
-                                   ApplicationModuleRepository moduleRepository) {
-        this.ifaceRepository = ifaceRepository;
-        this.inputRepository = inputRepository;
-        this.outputRepository = outputRepository;
-        this.moduleRepository = moduleRepository;
-    }
-
-    public long create(ApplicationIfaceResource resource) {
-
-        ApplicationInterface iface = new ApplicationInterface();
-        iface.setName(resource.getName());
-        iface.setDescription(resource.getDescription());
-
-        iface.setApplicationModule(moduleRepository
-                .findById(resource.getApplicationModuleId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find app module with id " +
-                        resource.getApplicationModuleId())));
-
-        Optional.ofNullable(resource.getInputs()).ifPresent(ips -> ips.forEach(ip -> {
-            ApplicationInput appInput = new ApplicationInput();
-            appInput.setName(ip.getName());
-            appInput.setValue(ip.getValue());
-            appInput.setArguments(ip.getArguments());
-            appInput.setType(ApplicationInput.DataType.valueOf(ip.getType()));
-            ApplicationInput saved = inputRepository.save(appInput);
-            iface.getInputs().add(saved);
-        }));
-
-        Optional.ofNullable(resource.getOutputs()).ifPresent(ops -> ops.forEach(op -> {
-            ApplicationOutput appOutput = new ApplicationOutput();
-            appOutput.setName(op.getName());
-            appOutput.setValue(op.getValue());
-            appOutput.setType(ApplicationOutput.DataType.valueOf(op.getType()));
-            ApplicationOutput saved = outputRepository.save(appOutput);
-            iface.getOutputs().add(saved);
-        }));
-
-        ApplicationInterface saved = ifaceRepository.save(iface);
-        return saved.getId();
-    }
-
-    public Optional<ApplicationIfaceResource> findById(long id) {
-        return ToResourceUtil.toResource(ifaceRepository.findById(id).get());
-    }
-
-    public List<ApplicationIfaceResource> getAll() {
-        List<ApplicationIfaceResource> computeList = new ArrayList<>();
-        Optional.ofNullable(ifaceRepository.findAll())
-                .ifPresent(computes ->
-                        computes.forEach(compute -> computeList.add(ToResourceUtil.toResource(compute).get())));
-        return computeList;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationModuleService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationModuleService.java
deleted file mode 100644
index e658c42..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ApplicationModuleService.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.server.model.application.ApplicationModule;
-import org.apache.airavata.k8s.api.server.repository.ApplicationModuleRepository;
-import org.apache.airavata.k8s.api.resources.application.ApplicationModuleResource;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ApplicationModuleService {
-
-    private ApplicationModuleRepository applicationModuleRepository;
-
-    @Autowired
-    public ApplicationModuleService(ApplicationModuleRepository applicationModuleRepository) {
-        this.applicationModuleRepository = applicationModuleRepository;
-    }
-
-    public long create(ApplicationModuleResource resource) {
-        ApplicationModule module = new ApplicationModule();
-        module.setName(resource.getName());
-        module.setVersion(resource.getVersion());
-        module.setDescription(resource.getDescription());
-        ApplicationModule saved = this.applicationModuleRepository.save(module);
-        return saved.getId();
-    }
-
-    public Optional<ApplicationModuleResource> findById(long id) {
-        return ToResourceUtil.toResource(applicationModuleRepository.findById(id).get());
-    }
-
-    public List<ApplicationModuleResource> getAll() {
-        List<ApplicationModuleResource> computeList = new ArrayList<>();
-        Optional.ofNullable(applicationModuleRepository.findAll())
-                .ifPresent(computes ->
-                        computes.forEach(compute -> computeList.add(ToResourceUtil.toResource(compute).get())));
-        return computeList;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ComputeResourceService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ComputeResourceService.java
deleted file mode 100644
index bceda0b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ComputeResourceService.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.server.model.compute.ComputeResourceModel;
-import org.apache.airavata.k8s.api.server.repository.ComputeRepository;
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ComputeResourceService {
-    private ComputeRepository computeRepository;
-
-    @Autowired
-    public ComputeResourceService(ComputeRepository computeRepository) {
-        this.computeRepository = computeRepository;
-    }
-
-    public long create(ComputeResource resource) {
-        ComputeResourceModel model = new ComputeResourceModel();
-        model.setName(resource.getName());
-        model.setHost(resource.getHost());
-        model.setUserName(resource.getUserName());
-        model.setPassword(resource.getPassword());
-        model.setCommunicationType(resource.getCommunicationType());
-        ComputeResourceModel saved = computeRepository.save(model);
-        return saved.getId();
-    }
-
-    public Optional<ComputeResource> findById(long id) {
-        return ToResourceUtil.toResource(computeRepository.findById(id).get());
-    }
-
-    public List<ComputeResource> getAll() {
-        List<ComputeResource> computeList = new ArrayList<>();
-        Optional.ofNullable(computeRepository.findAll())
-                .ifPresent(computes ->
-                        computes.forEach(compute -> computeList.add(ToResourceUtil.toResource(compute).get())));
-        return computeList;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ExperimentService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ExperimentService.java
deleted file mode 100644
index 1ded541..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ExperimentService.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.model.experiment.Experiment;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentInputData;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentOutputData;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentStatus;
-import org.apache.airavata.k8s.api.server.repository.*;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentResource;
-import org.apache.airavata.k8s.api.server.service.messaging.MessagingService;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-@Transactional
-public class ExperimentService {
-
-    private ExperimentRepository experimentRepository;
-    private ApplicationDeploymentRepository appDepRepository;
-    private ApplicationIfaceRepository appIfaceRepository;
-    private ExperimentInputDataRepository inputDataRepository;
-    private ExperimentOutputDataRepository outputDataRepository;
-    private ExperimentStatusRepository experimentStatusRepository;
-
-    private MessagingService messagingService;
-
-    @Value("${launch.topic.name}")
-    private String launchTopic;
-
-    @Autowired
-    public ExperimentService(ExperimentRepository experimentRepository,
-                             ApplicationDeploymentRepository appDepRepository,
-                             ApplicationIfaceRepository appIfaceRepository,
-                             ExperimentInputDataRepository inputDataRepository,
-                             ExperimentOutputDataRepository outputDataRepository,
-                             ExperimentStatusRepository experimentStatusRepository,
-                             MessagingService messagingService) {
-
-        this.experimentRepository = experimentRepository;
-        this.appDepRepository = appDepRepository;
-        this.appIfaceRepository = appIfaceRepository;
-        this.inputDataRepository = inputDataRepository;
-        this.outputDataRepository = outputDataRepository;
-        this.experimentStatusRepository = experimentStatusRepository;
-        this.messagingService = messagingService;
-    }
-
-    public long create(ExperimentResource resource) {
-        Experiment experiment = new Experiment();
-        experiment.setExperimentName(resource.getExperimentName());
-
-        experiment.setApplicationDeployment(appDepRepository.findById(resource.getApplicationDeploymentId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find app deployment with id " +
-                        resource.getApplicationDeploymentId())));
-
-        experiment.setApplicationInterface(appIfaceRepository.findById(resource.getApplicationInterfaceId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find app inerface with id " +
-                        resource.getApplicationInterfaceId())));
-
-        Optional.ofNullable(resource.getExperimentOutputs()).ifPresent(ops -> {
-            ops.forEach(op -> {
-                ExperimentOutputData outputData = new ExperimentOutputData();
-                outputData.setName(op.getName());
-                outputData.setValue(op.getValue());
-                outputData.setType(ExperimentOutputData.DataType.valueOf(op.getType()));
-                ExperimentOutputData saved = outputDataRepository.save(outputData);
-                experiment.getExperimentOutputs().add(saved);
-            });
-        });
-
-        Optional.ofNullable(resource.getExperimentInputs()).ifPresent(ips -> {
-            ips.forEach(ip -> {
-                ExperimentInputData inputData = new ExperimentInputData();
-                inputData.setName(ip.getName());
-                inputData.setValue(ip.getValue());
-                inputData.setType(ExperimentInputData.DataType.valueOf(ip.getType()));
-                inputData.setArguments(ip.getArguments());
-                ExperimentInputData saved = inputDataRepository.save(inputData);
-                experiment.getExperimentInputs().add(saved);
-            });
-        });
-
-        Experiment saved = experimentRepository.save(experiment);
-        return saved.getId();
-    }
-
-    public Optional<ExperimentResource> findById(long id) {
-        return ToResourceUtil.toResource(findEntityById(id).get());
-    }
-
-    public Optional<Experiment> findEntityById(long id) {
-        return this.experimentRepository.findById(id);
-    }
-
-    public long launchExperiment(long id) {
-        Experiment experiment = this.experimentRepository.findById(id).orElseThrow(() -> new ServerRuntimeException("Experiment with id " +
-                id + "can not be found"));
-        // TODO validate status and get a lock
-
-        ExperimentStatus experimentStatus = this.experimentStatusRepository.save(new ExperimentStatus()
-                .setState(ExperimentStatus.ExperimentState.LAUNCHED)
-                .setTimeOfStateChange(System.currentTimeMillis()));
-
-        experiment.getExperimentStatus().add(experimentStatus);
-
-        this.messagingService.send(this.launchTopic, "exp-" + id);
-        return 0;
-    }
-
-    public List<ExperimentResource> getAll() {
-        List<ExperimentResource> experimentList = new ArrayList<>();
-        Optional.ofNullable(experimentRepository.findAll())
-                .ifPresent(experiments ->
-                        experiments.forEach(experiment -> experimentList.add(ToResourceUtil.toResource(experiment).get())));
-        return experimentList;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ProcessService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ProcessService.java
deleted file mode 100644
index 532a1d5..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/ProcessService.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.resources.process.ProcessStatusResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.model.process.ProcessModel;
-import org.apache.airavata.k8s.api.server.model.process.ProcessStatus;
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-import org.apache.airavata.k8s.api.server.repository.ProcessRepository;
-import org.apache.airavata.k8s.api.resources.process.ProcessResource;
-import org.apache.airavata.k8s.api.server.repository.ProcessStatusRepository;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.stereotype.Service;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ProcessService {
-
-    private ProcessRepository processRepository;
-    private ProcessStatusRepository processStatusRepository;
-
-    private ExperimentService experimentService;
-    private TaskService taskService;
-
-    public ProcessService(ProcessRepository processRepository,
-                          ProcessStatusRepository processStatusRepository,
-                          ExperimentService experimentService,
-                          TaskService taskService) {
-
-        this.processRepository = processRepository;
-        this.processStatusRepository = processStatusRepository;
-        this.experimentService = experimentService;
-        this.taskService = taskService;
-    }
-
-    public long create(ProcessResource resource) {
-
-        ProcessModel processModel = new ProcessModel();
-        processModel.setId(resource.getId());
-        processModel.setCreationTime(resource.getCreationTime());
-        processModel.setLastUpdateTime(resource.getLastUpdateTime());
-        processModel.setExperiment(experimentService.findEntityById(resource.getExperimentId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find experiment with id " +
-                        resource.getExperimentId())));
-        processModel.setExperimentDataDir(resource.getExperimentDataDir());
-
-        ProcessModel saved = processRepository.save(processModel);
-
-        Optional.ofNullable(resource.getTasks()).ifPresent(taskResources -> taskResources.forEach(taskRes -> {
-            TaskModel taskModel = new TaskModel();
-            taskRes.setParentProcessId(saved.getId());
-            taskModel.setId(taskService.create(taskRes));
-        }));
-
-        return saved.getId();
-    }
-
-    public long addProcessStatus(long processId, ProcessStatusResource resource) {
-        ProcessModel processModel = processRepository.findById(processId)
-                .orElseThrow(() -> new ServerRuntimeException("Process with id " + processId + " can not be found"));
-
-        ProcessStatus status = new ProcessStatus();
-        status.setReason(resource.getReason());
-        status.setState(ProcessStatus.ProcessState.valueOf(resource.getState()));
-        status.setTimeOfStateChange(resource.getTimeOfStateChange());
-        status.setProcessModel(processModel);
-        ProcessStatus savedStatus = processStatusRepository.save(status);
-        return savedStatus.getId();
-    }
-
-    public Optional<ProcessResource> findById(long id) {
-        return ToResourceUtil.toResource(processRepository.findById(id).get());
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/TaskService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/TaskService.java
deleted file mode 100644
index 11a3b91..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/TaskService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service;
-
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.api.server.ServerRuntimeException;
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-import org.apache.airavata.k8s.api.server.model.task.TaskParam;
-import org.apache.airavata.k8s.api.server.model.task.TaskStatus;
-import org.apache.airavata.k8s.api.server.repository.ProcessRepository;
-import org.apache.airavata.k8s.api.server.repository.TaskParamRepository;
-import org.apache.airavata.k8s.api.server.repository.TaskRepository;
-import org.apache.airavata.k8s.api.server.repository.TaskStatusRepository;
-import org.apache.airavata.k8s.api.server.service.util.ToResourceUtil;
-import org.springframework.stereotype.Service;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskService {
-
-    private ProcessRepository processRepository;
-    private TaskRepository taskRepository;
-    private TaskParamRepository taskParamRepository;
-    private TaskStatusRepository taskStatusRepository;
-
-    public TaskService(ProcessRepository processRepository,
-                       TaskRepository taskRepository,
-                       TaskParamRepository taskParamRepository,
-                       TaskStatusRepository taskStatusRepository) {
-
-        this.processRepository = processRepository;
-        this.taskRepository = taskRepository;
-        this.taskParamRepository = taskParamRepository;
-        this.taskStatusRepository = taskStatusRepository;
-    }
-
-    public long create(TaskResource resource) {
-        TaskModel taskModel = new TaskModel();
-        taskModel.setCreationTime(resource.getCreationTime());
-        taskModel.setLastUpdateTime(resource.getLastUpdateTime());
-        taskModel.setOrderIndex(resource.getOrder());
-        taskModel.setTaskDetail(resource.getTaskDetail());
-        taskModel.setParentProcess(processRepository.findById(resource.getParentProcessId())
-                .orElseThrow(() -> new ServerRuntimeException("Can not find process with id " +
-                        resource.getParentProcessId())));
-        taskModel.setTaskType(TaskModel.TaskTypes.valueOf(resource.getTaskType()));
-
-        TaskModel savedTask = taskRepository.save(taskModel);
-
-        Optional.ofNullable(resource.getTaskParams()).ifPresent(params -> params.forEach(param -> {
-            TaskParam taskParam = new TaskParam();
-            taskParam.setKey(param.getKey());
-            taskParam.setValue(param.getValue());
-            taskParam.setTaskModel(savedTask);
-            taskParamRepository.save(taskParam);
-
-        }));
-        return savedTask.getId();
-    }
-
-    public long addTaskStatus(long taskId, TaskStatusResource resource) {
-
-        TaskModel taskModel = taskRepository.findById(taskId)
-                .orElseThrow(() -> new ServerRuntimeException("Task with id " + taskId + " can not be found"));
-
-        TaskStatus status = new TaskStatus();
-        status.setReason(resource.getReason());
-        status.setState(TaskStatus.TaskState.valueOf(resource.getState()));
-        status.setTimeOfStateChange(resource.getTimeOfStateChange());
-        status.setTaskModel(taskModel);
-        TaskStatus savedStatus = taskStatusRepository.save(status);
-
-        return savedStatus.getId();
-    }
-
-    public Optional<TaskStatusResource> findTaskStatusById(long id) {
-        return ToResourceUtil.toResource(taskStatusRepository.findById(id).get());
-    }
-
-    public Optional<TaskResource> findById(long id) {
-        return ToResourceUtil.toResource(taskRepository.findById(id).get());
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/data/DataStoreService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/data/DataStoreService.java
deleted file mode 100644
index 27fceb1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/data/DataStoreService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service.data;
-
-import org.apache.airavata.k8s.api.resources.data.DataEntryResource;
-import org.apache.airavata.k8s.api.server.model.data.DataStoreModel;
-import org.apache.airavata.k8s.api.server.repository.DataStoreRepository;
-import org.apache.airavata.k8s.api.server.repository.ExperimentOutputDataRepository;
-import org.apache.airavata.k8s.api.server.repository.TaskRepository;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class DataStoreService {
-
-    private DataStoreRepository dataStoreRepository;
-    private TaskRepository taskRepository;
-    private ExperimentOutputDataRepository experimentOutputDataRepository;
-
-    public DataStoreService(DataStoreRepository dataStoreRepository,
-                            TaskRepository taskRepository,
-                            ExperimentOutputDataRepository experimentOutputDataRepository) {
-        this.dataStoreRepository = dataStoreRepository;
-        this.taskRepository = taskRepository;
-        this.experimentOutputDataRepository = experimentOutputDataRepository;
-    }
-
-    public long createEntry(long taskId, long expOutId, byte[] content) {
-        DataStoreModel model = new DataStoreModel();
-        model.setTaskModel(taskRepository.findById(taskId).get())
-                .setExperimentOutputData(experimentOutputDataRepository.findById(expOutId).get())
-                .setContent(content);
-        return dataStoreRepository.save(model).getId();
-    }
-
-    public List<DataEntryResource> getEntriesForProcess(long processId) {
-        List<DataEntryResource> entries = new ArrayList<>();
-        List<DataStoreModel> dataStoreModels = this.dataStoreRepository.findByTaskModel_ParentProcess_Id(processId);
-        Optional.ofNullable(dataStoreModels).ifPresent(models -> models.forEach(model -> entries.add(new DataEntryResource()
-                .setId(model.getId())
-                .setName(model.getExperimentOutputData().getName())
-                .setDataType(model.getExperimentOutputData().getType().name()))));
-        return entries;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/MessagingService.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/MessagingService.java
deleted file mode 100644
index 19c9312..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/MessagingService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.stereotype.Service;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class MessagingService {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/SenderConfig.java
deleted file mode 100644
index 0ec1c74..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.api.server.service.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/util/ToResourceUtil.java b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/util/ToResourceUtil.java
deleted file mode 100644
index 0318978..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/java/org/apache/airavata/k8s/api/server/service/util/ToResourceUtil.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.api.server.service.util;
-
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentStatusResource;
-import org.apache.airavata.k8s.api.resources.process.ProcessStatusResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationDeployment;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationInterface;
-import org.apache.airavata.k8s.api.server.model.application.ApplicationModule;
-import org.apache.airavata.k8s.api.server.model.compute.ComputeResourceModel;
-import org.apache.airavata.k8s.api.server.model.experiment.Experiment;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentInputData;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentOutputData;
-import org.apache.airavata.k8s.api.server.model.experiment.ExperimentStatus;
-import org.apache.airavata.k8s.api.server.model.process.ProcessModel;
-import org.apache.airavata.k8s.api.server.model.process.ProcessStatus;
-import org.apache.airavata.k8s.api.server.model.task.TaskModel;
-import org.apache.airavata.k8s.api.resources.application.*;
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentInputResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentOutputResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentResource;
-import org.apache.airavata.k8s.api.resources.process.ProcessResource;
-import org.apache.airavata.k8s.api.server.model.task.TaskParam;
-import org.apache.airavata.k8s.api.server.model.task.TaskStatus;
-
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ToResourceUtil {
-
-    public static Optional<ExperimentStatusResource> toResource(ExperimentStatus experimentStatus) {
-        if (experimentStatus != null) {
-            ExperimentStatusResource resource = new ExperimentStatusResource();
-            resource.setId(experimentStatus.getId());
-            resource.setState(experimentStatus.getState().getValue());
-            resource.setReason(experimentStatus.getReason());
-            resource.setStateStr(experimentStatus.getState().name());
-            resource.setTimeOfStateChange(experimentStatus.getTimeOfStateChange());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ExperimentResource> toResource(Experiment experiment) {
-
-        if (experiment != null) {
-            ExperimentResource resource = new ExperimentResource();
-            resource.setId(experiment.getId());
-            resource.setExperimentName(experiment.getExperimentName());
-            resource.setDescription(experiment.getDescription());
-            resource.setCreationTime(experiment.getCreationTime());
-            Optional.ofNullable(experiment.getErrors())
-                    .ifPresent(errs -> errs.forEach(err -> resource.getErrorsIds().add(err.getId())));
-            Optional.ofNullable(experiment.getExperimentStatus())
-                    .ifPresent(sts -> sts.forEach(status -> resource.getExperimentStatus().add(toResource(status).get())));
-            Optional.ofNullable(experiment.getExperimentInputs())
-                    .ifPresent(ips -> ips.forEach(ip -> resource.getExperimentInputs().add(toResource(ip).get())));
-            Optional.ofNullable(experiment.getExperimentOutputs())
-                    .ifPresent(ops -> ops.forEach(op -> resource.getExperimentOutputs().add(toResource(op).get())));
-            Optional.ofNullable(experiment.getApplicationDeployment())
-                    .ifPresent(appDep -> {
-                        resource.setApplicationDeploymentId(appDep.getId());
-                        resource.setApplicationDeploymentName(appDep.getName());
-                    });
-            Optional.ofNullable(experiment.getApplicationInterface())
-                    .ifPresent(iface -> {
-                        resource.setApplicationInterfaceId(iface.getId());
-                        resource.setApplicationInterfaceName(iface.getName());
-                    });
-            Optional.ofNullable(experiment.getProcesses())
-                    .ifPresent(processModels -> processModels
-                            .forEach(processModel -> resource.getProcessIds().add(processModel.getId())));
-            return Optional.of(resource);
-
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ExperimentInputResource> toResource(ExperimentInputData input) {
-        if (input != null) {
-            ExperimentInputResource resource = new ExperimentInputResource();
-            resource.setId(input.getId());
-            resource.setName(input.getName());
-            resource.setValue(input.getValue());
-            resource.setType(input.getType().getValue());
-            resource.setArguments(input.getArguments());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ExperimentOutputResource> toResource(ExperimentOutputData output) {
-        if (output != null) {
-            ExperimentOutputResource resource = new ExperimentOutputResource();
-            resource.setId(output.getId());
-            resource.setName(output.getName());
-            resource.setValue(output.getValue());
-            resource.setType(output.getType().getValue());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ComputeResource> toResource(ComputeResourceModel computeResourceModel) {
-
-        if (computeResourceModel != null) {
-            ComputeResource resource = new ComputeResource();
-            resource.setId(computeResourceModel.getId());
-            resource.setName(computeResourceModel.getName());
-            resource.setUserName(computeResourceModel.getUserName());
-            resource.setPassword(computeResourceModel.getPassword());
-            resource.setCommunicationType(computeResourceModel.getCommunicationType());
-            resource.setHost(computeResourceModel.getHost());
-            return Optional.of(resource);
-
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ApplicationModuleResource> toResource(ApplicationModule applicationModule) {
-
-        if (applicationModule != null) {
-            ApplicationModuleResource resource = new ApplicationModuleResource();
-            resource.setId(applicationModule.getId());
-            resource.setName(applicationModule.getName());
-            resource.setDescription(applicationModule.getDescription());
-            resource.setVersion(applicationModule.getVersion());
-            return Optional.of(resource);
-
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ApplicationDeploymentResource> toResource(ApplicationDeployment applicationDeployment) {
-        if (applicationDeployment != null) {
-            ApplicationDeploymentResource resource = new ApplicationDeploymentResource();
-            resource.setId(applicationDeployment.getId());
-            resource.setExecutablePath(applicationDeployment.getExecutablePath());
-            resource.setPreJobCommand(applicationDeployment.getPreJobCommand());
-            resource.setPostJobCommand(applicationDeployment.getPostJobCommand());
-            resource.setName(applicationDeployment.getName());
-            Optional.ofNullable(applicationDeployment.getApplicationModule())
-                    .ifPresent(module -> resource.setApplicationModuleId(module.getId()));
-            Optional.ofNullable(applicationDeployment.getComputeResource())
-                    .ifPresent(cr -> resource.setComputeResourceId(cr.getId()));
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ApplicationIfaceResource> toResource(ApplicationInterface applicationInterface) {
-        if (applicationInterface != null) {
-            ApplicationIfaceResource resource = new ApplicationIfaceResource();
-            resource.setId(applicationInterface.getId());
-            resource.setName(applicationInterface.getName());
-            resource.setApplicationModuleId(applicationInterface.getId());
-            resource.setDescription(applicationInterface.getDescription());
-
-            Optional.ofNullable(applicationInterface.getInputs()).ifPresent(ips -> ips.forEach(ip -> {
-                ApplicationInputResource ipResource = new ApplicationInputResource();
-                ipResource.setId(ip.getId());
-                ipResource.setName(ip.getName());
-                ipResource.setArguments(ip.getArguments());
-                ipResource.setType(ip.getType().getValue());
-                ipResource.setValue(ip.getValue());
-                resource.getInputs().add(ipResource);
-            }));
-
-            Optional.ofNullable(applicationInterface.getOutputs()).ifPresent(ops -> ops.forEach(op -> {
-                ApplicationOutputResource opResource = new ApplicationOutputResource();
-                opResource.setId(op.getId());
-                opResource.setName(op.getName());
-                opResource.setType(op.getType().getValue());
-                opResource.setValue(op.getValue());
-                resource.getOutputs().add(opResource);
-            }));
-
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<TaskResource> toResource(TaskModel taskModel) {
-        if (taskModel != null) {
-            TaskResource resource = new TaskResource();
-            resource.setId(taskModel.getId());
-            resource.setLastUpdateTime(taskModel.getLastUpdateTime());
-            resource.setCreationTime(taskModel.getCreationTime());
-            resource.setParentProcessId(taskModel.getParentProcess().getId());
-            resource.setTaskType(taskModel.getTaskType().getValue());
-            resource.setTaskTypeStr(taskModel.getTaskType().name());
-            resource.setTaskDetail(taskModel.getTaskDetail());
-            Optional.ofNullable(taskModel.getTaskParams())
-                    .ifPresent(params ->
-                            params.forEach(param -> resource.getTaskParams()
-                                    .add(toResource(param).get())));
-
-            Optional.ofNullable(taskModel.getTaskStatuses())
-                    .ifPresent(taskStatuses ->
-                            taskStatuses.forEach(taskStatus -> resource.getTaskStatus()
-                                    .add(toResource(taskStatus).get())));
-
-            resource.setOrder(taskModel.getOrderIndex());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<TaskStatusResource> toResource(TaskStatus taskStatus) {
-        if (taskStatus != null) {
-            TaskStatusResource resource = new TaskStatusResource();
-            resource.setId(taskStatus.getId());
-            resource.setState(taskStatus.getState().getValue());
-            resource.setTimeOfStateChange(taskStatus.getTimeOfStateChange());
-            resource.setTaskId(taskStatus.getTaskModel().getId());
-            resource.setStateStr(taskStatus.getState().name());
-            resource.setReason(taskStatus.getReason());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<TaskParamResource> toResource(TaskParam taskParam) {
-        if (taskParam != null) {
-            TaskParamResource resource = new TaskParamResource();
-            resource.setId(taskParam.getId());
-            resource.setKey(taskParam.getKey());
-            resource.setValue(taskParam.getValue());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ProcessResource> toResource(ProcessModel processModel) {
-        if (processModel != null) {
-            ProcessResource processResource = new ProcessResource();
-            processResource.setId(processModel.getId());
-            processResource.setLastUpdateTime(processModel.getLastUpdateTime());
-            processResource.setExperimentId(processModel.getExperiment().getId());
-            processResource.setTaskDag(processModel.getTaskDag());
-            processResource.setCreationTime(processModel.getCreationTime());
-            Optional.ofNullable(processModel.getProcessStatuses())
-                    .ifPresent(stss -> stss.forEach(sts -> processResource.getProcessStatuses().add(toResource(sts).get())));
-            Optional.ofNullable(processModel.getTasks())
-                    .ifPresent(tasks -> tasks.forEach(task -> processResource.getTasks().add(toResource(task).get())));
-            Optional.ofNullable(processModel.getProcessErrors())
-                    .ifPresent(errs -> errs.forEach(err -> processResource.getProcessErrorIds().add(err.getId())));
-            return Optional.of(processResource);
-        } else {
-            return Optional.empty();
-        }
-    }
-
-    public static Optional<ProcessStatusResource> toResource(ProcessStatus processStatus) {
-        if (processStatus != null) {
-            ProcessStatusResource resource = new ProcessStatusResource();
-            resource.setId(processStatus.getId());
-            resource.setState(processStatus.getState().getValue());
-            resource.setTimeOfStateChange(processStatus.getTimeOfStateChange());
-            resource.setStateStr(processStatus.getState().name());
-            resource.setReason(processStatus.getReason());
-            resource.setProcessId(processStatus.getProcessModel().getId());
-            return Optional.of(resource);
-        } else {
-            return Optional.empty();
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.properties
deleted file mode 100644
index 6f76911..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-spring.jpa.hibernate.ddl-auto=update
-spring.datasource.url=jdbc:mysql://db.default.svc.cluster.local:3306/airavata
-spring.datasource.username=root
-spring.datasource.password=fun123
-launch.topic.name = airavata-launch
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/docker/Dockerfile b/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/docker/Dockerfile
deleted file mode 100644
index d34508b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/api-server/src/main/resources/docker/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM openjdk:8-jdk-alpine
-VOLUME /tmp
-COPY ${project.build.finalName}.jar app.jar
-ENV JAVA_OPTS=""
-EXPOSE 8080
-ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/event-sink/pom.xml
deleted file mode 100644
index 0c4d2ee..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/pom.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>event-sink</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/event-sink</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>event-sink</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/Application.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/Application.java
deleted file mode 100644
index 3c7b91f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.sink;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaReceiver.java
deleted file mode 100644
index e6bec6b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.sink.messaging;
-
-import org.apache.airavata.k8s.sink.service.EventPersistingService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private EventPersistingService eventPersistingService;
-
-    @KafkaListener(topics = "${task.event.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task status=" + payload);
-        String[] eventParts = payload.split(",");
-        long processId = Long.parseLong(eventParts[0]);
-        long taskId = Long.parseLong(eventParts[1]);
-        int state = Integer.parseInt(eventParts[2]);
-        String reason = "";
-        if (eventParts.length == 4 ) {
-            reason = eventParts[3];
-        }
-        eventPersistingService.persistTaskState(processId, taskId, state, reason);
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaSender.java
deleted file mode 100644
index df02b0b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.sink.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/ReceiverConfig.java
deleted file mode 100644
index 231863f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.sink.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/SenderConfig.java
deleted file mode 100644
index 3ff85c5..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.sink.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/service/EventPersistingService.java b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/service/EventPersistingService.java
deleted file mode 100644
index 8fb8e00..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/java/org/apache/airavata/k8s/sink/service/EventPersistingService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.sink.service;
-
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class EventPersistingService {
-
-    private final RestTemplate restTemplate;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    public EventPersistingService(RestTemplate restTemplate) {
-        this.restTemplate = restTemplate;
-    }
-
-    public void persistTaskState(long processId, long taskId, int state, String reason) {
-        System.out.println("Persisting task state event for process " + processId + ", task " + taskId + ", state "
-                + state + ", reason " + reason);
-        TaskStatusResource statusResource = new TaskStatusResource();
-        statusResource.setTaskId(taskId);
-        statusResource.setTimeOfStateChange(System.currentTimeMillis());
-        statusResource.setState(state);
-        statusResource.setReason(reason);
-        this.restTemplate.postForObject("http://" + this.apiServerUrl + "/task/" + taskId + "/status", statusResource,
-                Long.class);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.properties
deleted file mode 100644
index 01c9496..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-server.port = 8991
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = data-sink
-task.event.topic.name = airavata-task-event
diff --git a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/event-sink/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/pom.xml
deleted file mode 100644
index d2dca7c..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/pom.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>task-scheduler</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/task-scheduler</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>task-scheduler</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/Application.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/Application.java
deleted file mode 100644
index b2a10d2..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.gfac;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/ProcessLifeCycleManager.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/ProcessLifeCycleManager.java
deleted file mode 100644
index 01e53a2..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/ProcessLifeCycleManager.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.gfac.core;
-
-import org.apache.airavata.k8s.api.resources.process.ProcessStatusResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.gfac.messaging.KafkaSender;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.*;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class ProcessLifeCycleManager {
-
-    private long processId;
-    private List<TaskResource> taskDag;
-    private Map<Long, Integer> taskPoint;
-    private KafkaSender kafkaSender;
-
-    // Todo abstract out these parameters to reusable class
-    private final RestTemplate restTemplate;
-    private String apiServerUrl;
-
-    public ProcessLifeCycleManager(long processId, List<TaskResource> tasks,
-                                   KafkaSender kafkaSender,
-                                   RestTemplate restTemplate, String apiServerUrl) {
-        this.processId = processId;
-        this.taskDag = tasks;
-        this.kafkaSender = kafkaSender;
-        this.restTemplate = restTemplate;
-        this.apiServerUrl = apiServerUrl;
-    }
-
-    public void init() {
-        taskDag.sort(Comparator.comparing(TaskResource::getOrder));
-        taskPoint = new HashMap<>();
-        for (int i = 0; i < taskDag.size(); i++) {
-            taskPoint.put(taskDag.get(i).getId(), i);
-        }
-        updateProcessStatus(ProcessStatusResource.State.EXECUTING);
-    }
-
-    public synchronized void onTaskStateChanged(long taskId, int state) {
-        switch (state) {
-            case TaskStatusResource.State.COMPLETED:
-                System.out.println("Task " + taskId + " was completed");
-                Optional.ofNullable(this.taskPoint.get(taskId)).ifPresent(point -> {
-                    if (point + 1 < taskDag.size()) {
-                        TaskResource resource = taskDag.get(point + 1);
-                        submitTaskToQueue(resource);
-                    } else {
-                        updateProcessStatus(ProcessStatusResource.State.COMPLETED);
-                    }
-                });
-                break;
-            case TaskStatusResource.State.FAILED:
-                updateProcessStatus(ProcessStatusResource.State.FAILED);
-                break;
-        }
-    }
-
-    public void submitTaskToQueue(TaskResource taskResource) {
-
-        switch (taskResource.getTaskType()) {
-            case TaskResource.TaskTypes.EGRESS_DATA_STAGING :
-                System.out.println("Submitting task " + taskResource.getId() + " to egress data staging queue");
-                updateProcessStatus(ProcessStatusResource.State.OUTPUT_DATA_STAGING);
-                this.kafkaSender.send("airavata-task-egress-staging", taskResource.getId() + "");
-                break;
-            case TaskResource.TaskTypes.INGRESS_DATA_STAGING :
-                System.out.println("Submitting task " + taskResource.getId() + " to ingress data staging queue");
-                updateProcessStatus(ProcessStatusResource.State.INPUT_DATA_STAGING);
-                this.kafkaSender.send("airavata-task-ingress-staging", taskResource.getId() + "");
-                break;
-            case TaskResource.TaskTypes.ENV_SETUP :
-                System.out.println("Submitting task " + taskResource.getId() + " to env setup queue");
-                updateProcessStatus(ProcessStatusResource.State.PRE_PROCESSING);
-                this.kafkaSender.send("airavata-task-env-setup", taskResource.getId() + "");
-                break;
-            case TaskResource.TaskTypes.ENV_CLEANUP :
-                System.out.println("Submitting task " + taskResource.getId() + " to env cleanup queue");
-                updateProcessStatus(ProcessStatusResource.State.POST_PROCESSING);
-                this.kafkaSender.send("airavata-task-env-cleanup", taskResource.getId() + "");
-                break;
-            case TaskResource.TaskTypes.JOB_SUBMISSION :
-                System.out.println("Submitting task " + taskResource.getId() + " to job submission queue");
-                updateProcessStatus(ProcessStatusResource.State.EXECUTING);
-                this.kafkaSender.send("airavata-task-job-submission", taskResource.getId() + "");
-                break;
-        }
-    }
-
-    private void updateProcessStatus(int state) {
-        this.restTemplate.postForObject("http://" + apiServerUrl + "/process/" + this.processId + "/status",
-                new ProcessStatusResource()
-                        .setState(state)
-                        .setTimeOfStateChange(System.currentTimeMillis()),
-                Long.class);
-    }
-
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaReceiver.java
deleted file mode 100644
index 43e7526..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.gfac.messaging;
-
-import org.apache.airavata.k8s.gfac.service.WorkerService;
-import org.springframework.kafka.annotation.KafkaListener;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private WorkerService workerService;
-
-    @KafkaListener(topics = "${scheduler.topic.name}", containerFactory = "kafkaListenerContainerFactory")
-    public void receiveProcesses(String payload) {
-        System.out.println("received process=" + payload);
-        workerService.launchProcess(Long.parseLong(payload));
-    }
-
-    @KafkaListener(topics = "${task.event.topic.name}", containerFactory = "kafkaEventListenerContainerFactory")
-    public void receiveTaskEvent(String payload) {
-        System.out.println("received event=" + payload);
-        String[] eventParts = payload.split(",");
-        long processId = Long.parseLong(eventParts[0]);
-        long taskId = Long.parseLong(eventParts[1]);
-        int state = Integer.parseInt(eventParts[2]);
-        workerService.onTaskStateEvent(processId, taskId, state);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaSender.java
deleted file mode 100644
index f4afe30..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/KafkaSender.java
+++ /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.
- */
-package org.apache.airavata.k8s.gfac.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/ReceiverConfig.java
deleted file mode 100644
index cb94135..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/ReceiverConfig.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.gfac.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${scheduler.group.name}")
-    private String schedulerGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, schedulerGroupName);
-        return props;
-    }
-
-    @Bean
-    public Map<String, Object> consumerConfigsForEvents() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // create a random group for each consumer in order to read all events form all consumers
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, "event-group-" + UUID.randomUUID().toString());
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactoryForEvents() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigsForEvents());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-
-        return factory;
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaEventListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactoryForEvents());
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/SenderConfig.java
deleted file mode 100644
index 3bd5303..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.gfac.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java
deleted file mode 100644
index 0f20138..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.gfac.service;
-
-import org.apache.airavata.k8s.api.resources.process.ProcessResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.gfac.core.ProcessLifeCycleManager;
-import org.apache.airavata.k8s.gfac.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class WorkerService {
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-    private Map<Long, ProcessLifeCycleManager> processLifecycleStore = new HashMap<>();
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    public WorkerService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void launchProcess(long processId) {
-        System.out.println("Launching process " + processId);
-        ProcessResource processResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/process/" + processId,
-                ProcessResource.class);
-        List<TaskResource> taskResources = processResource.getTasks();
-        boolean freshProcess = true;
-        for (TaskResource taskResource : taskResources) {
-            if (taskResource.getTaskStatus() != null && taskResource.getTaskStatus().size() > 0) {
-                // Already partially completed process. This happens when the task scheduler is killed while processing a process
-                TaskStatusResource lastStatusResource = taskResource.getTaskStatus().get(taskResource.getTaskStatus().size() - 1);
-                // TODO continue from last state
-                freshProcess = false;
-            } else {
-                // Fresh task
-
-            }
-        }
-
-        if (freshProcess) {
-            System.out.println("Starting to execute process " + processId);
-            ProcessLifeCycleManager manager = new ProcessLifeCycleManager(processId, taskResources, kafkaSender, restTemplate, apiServerUrl);
-            manager.init();
-            manager.submitTaskToQueue(taskResources.get(0));
-            processLifecycleStore.put(processId, manager);
-        }
-    }
-
-    public void onTaskStateEvent(long processId, long taskId, int state) {
-        Optional.ofNullable(processLifecycleStore.get(processId))
-                .ifPresent(manager -> manager.onTaskStateChanged(taskId, state));
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.properties
deleted file mode 100644
index c4aed73..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8195
-api.server.url = api-server.default.svc.cluster.local:8080
-scheduler.topic.name = airavata-scheduler
-scheduler.group.name = gfac
-task.event.topic.name = airavata-task-event
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/task-scheduler/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/pom.xml
deleted file mode 100644
index 05852fe..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>egress-staging-task</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>compute-resource-api</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/egress-staging-task</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>egress-staging</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/Application.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/Application.java
deleted file mode 100644
index e2dbae4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apacher.airavata.k8s.task.egress;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaReceiver.java
deleted file mode 100644
index ade0aaf..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apacher.airavata.k8s.task.egress.messaging;
-
-import org.apacher.airavata.k8s.task.egress.service.TaskExecutionService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private TaskExecutionService taskExecutionService;
-
-    @KafkaListener(topics = "${task.read.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task=" + payload);
-        taskExecutionService.executeTaskAsync(Long.parseLong(payload));
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaSender.java
deleted file mode 100644
index 253daa4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apacher.airavata.k8s.task.egress.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/ReceiverConfig.java
deleted file mode 100644
index bd8ba90..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apacher.airavata.k8s.task.egress.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/SenderConfig.java
deleted file mode 100644
index 42674a3..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/messaging/SenderConfig.java
+++ /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.
- */
-package org.apacher.airavata.k8s.task.egress.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/service/TaskExecutionService.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/service/TaskExecutionService.java
deleted file mode 100644
index 30fca3b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/java/org/apacher/airavata/k8s/task/egress/service/TaskExecutionService.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apacher.airavata.k8s.task.egress.service;
-
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.impl.MockComputeOperation;
-import org.apache.airavata.k8s.compute.impl.SSHComputeOperations;
-import org.apacher.airavata.k8s.task.egress.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.http.*;
-import org.springframework.stereotype.Service;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Optional;
-import java.util.UUID;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskExecutionService {
-
-    private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${task.event.topic.name}")
-    private String taskEventPublishTopic;
-
-    public TaskExecutionService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void executeTaskAsync(long taskId) {
-
-        System.out.println("Executing task " + taskId + " as egress staging task");
-        TaskResource taskResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/task/" + taskId, TaskResource.class);
-
-        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.SCHEDULED);
-
-        this.executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                executeTask(taskResource);
-            }
-        });
-    }
-
-    public void executeTask(TaskResource taskResource) {
-        try {
-            Optional<TaskParamResource> sourceParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "source".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> targetParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "target".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> computeId = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "compute-id".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> experimentDataDir = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "exp-data-dir".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            String processDataDirectory = experimentDataDir
-                    .orElseThrow(() -> new Exception("exp-data-dir param can not be found in the params of task " +
-                            taskResource.getId())).getValue() + "/" + taskResource.getParentProcessId();
-
-
-            if (sourceParam.isPresent()) {
-                sourceParam.get().setValue(sourceParam.get().getValue().replace("{process-data-dir}", processDataDirectory));
-                if (targetParam.isPresent()) {
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.EXECUTING);
-
-                    ComputeResource computeResource = this.restTemplate.getForObject("http://" + this.apiServerUrl
-                            + "/compute/" + Long.parseLong(computeId.get().getValue()), ComputeResource.class);
-
-                    ComputeOperations operations;
-                    if ("SSH".equals(computeResource.getCommunicationType())) {
-                        operations = new SSHComputeOperations(computeResource.getHost(), computeResource.getUserName(), computeResource.getPassword());
-                    } else if ("Mock".equals(computeResource.getCommunicationType())) {
-                        operations = new MockComputeOperation(computeResource.getHost());
-                    } else {
-                        throw new Exception("No compatible communication method {" + computeResource.getCommunicationType() + "} not found for compute resource " + computeResource.getName());
-                    }
-
-                    try {
-
-                        String temporaryFile = "/tmp/" + UUID.randomUUID().toString();
-                        System.out.println("Downloading " + sourceParam.get().getValue() + " to " + temporaryFile +
-                                " from compute resource " + computeResource.getName());
-                        operations.transferDataOut(sourceParam.get().getValue(), temporaryFile, "SCP");
-
-                        RestTemplate template = new RestTemplate();
-                        LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
-                        map.add("file", new FileSystemResource(temporaryFile));
-                        HttpHeaders headers = new HttpHeaders();
-                        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
-
-                        HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<LinkedMultiValueMap<String, Object>>(
-                                map, headers);
-
-                        System.out.println("Uploading data file with task id " + taskResource.getId()
-                                + " and experiment output id " + targetParam.get().getValue() + " to data store");
-
-                        ResponseEntity<Long> result = template.exchange(
-                                "http://" + apiServerUrl + "/data/" + taskResource.getId()+ "/"
-                                        + targetParam.get().getValue() +"/upload", HttpMethod.POST, requestEntity, Long.class);
-
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(),
-                                TaskStatusResource.State.COMPLETED);
-
-                    } catch (Exception e) {
-
-                        e.printStackTrace();
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(),
-                                TaskStatusResource.State.FAILED, e.getMessage());
-                    }
-                } else {
-                    System.out.println("Target can not be null for task " + taskResource.getId());
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(),
-                            TaskStatusResource.State.FAILED, "Target can not be null for task " + taskResource.getId());
-                }
-            } else {
-                System.out.println("Source can not be null for task " + taskResource.getId());
-                publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(),
-                        TaskStatusResource.State.FAILED, "Source can not be null for task " + taskResource.getId());
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(),
-                    TaskStatusResource.State.FAILED, e.getMessage());
-        }
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status) {
-        publishTaskStatus(processId, taskId, status, "");
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status, String reason) {
-        this.kafkaSender.send(this.taskEventPublishTopic, processId + "-" + taskId,
-                processId + "," + taskId + "," + status + "," + reason);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.properties
deleted file mode 100644
index 3b443c2..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8691
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = egress-staging
-task.event.topic.name = airavata-task-event
-task.read.topic.name = airavata-task-egress-staging
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/egress-staging-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/pom.xml
deleted file mode 100644
index 43bca2c..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>env-cleanup-task</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>compute-resource-api</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/env-cleanup-task</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>env-cleanup</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/Application.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/Application.java
deleted file mode 100644
index 1e5cf1f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.cleanup;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaReceiver.java
deleted file mode 100644
index 01aaa51..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.cleanup.messaging;
-
-import org.apache.airavata.k8s.task.cleanup.service.TaskExecutionService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private TaskExecutionService taskExecutionService;
-
-    @KafkaListener(topics = "${task.read.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task=" + payload);
-        taskExecutionService.executeTaskAsync(Long.parseLong(payload));
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaSender.java
deleted file mode 100644
index 8293d31..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.cleanup.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/ReceiverConfig.java
deleted file mode 100644
index 941ba11..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.cleanup.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/SenderConfig.java
deleted file mode 100644
index a84cecf..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.cleanup.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/service/TaskExecutionService.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/service/TaskExecutionService.java
deleted file mode 100644
index 4c9cc66..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/java/org/apache/airavata/k8s/task/cleanup/service/TaskExecutionService.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.cleanup.service;
-
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.api.ExecutionResult;
-import org.apache.airavata.k8s.compute.impl.MockComputeOperation;
-import org.apache.airavata.k8s.compute.impl.SSHComputeOperations;
-import org.apache.airavata.k8s.task.cleanup.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskExecutionService {
-
-    private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${task.event.topic.name}")
-    private String taskEventPublishTopic;
-
-    public TaskExecutionService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void executeTaskAsync(long taskId) {
-
-        System.out.println("Executing task " + taskId + " as env cleanup task");
-        TaskResource taskResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/task/" + taskId, TaskResource.class);
-
-        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.SCHEDULED);
-
-        this.executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                executeTask(taskResource);
-            }
-        });
-    }
-
-    public void executeTask(TaskResource taskResource) {
-
-        try {
-            Optional<TaskParamResource> commandParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "command".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> computeId = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "compute-id".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> experimentDataDir = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "exp-data-dir".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            String processDataDirectory = experimentDataDir
-                    .orElseThrow(() -> new Exception("exp-data-dir param can not be found in the params of task " +
-                            taskResource.getId())).getValue() + "/" + taskResource.getParentProcessId();
-
-            commandParam.ifPresent(taskParamResource -> {
-
-                try {
-                    String command = taskParamResource.getValue();
-                    command = command.replace("{process-data-dir}", processDataDirectory);
-
-                    System.out.println("Executing command " + command);
-
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.EXECUTING);
-
-                    // TODO fetch this from the catalog
-                    ComputeResource computeResource = this.restTemplate.getForObject("http://" + this.apiServerUrl
-                            + "/compute/" + Long.parseLong(computeId.get().getValue()), ComputeResource.class);
-
-                    // TODO fetch this from the catalog
-                    ComputeOperations operations;
-                    if ("SSH".equals(computeResource.getCommunicationType())) {
-                        operations = new SSHComputeOperations(computeResource.getHost(), computeResource.getUserName(), computeResource.getPassword());
-                    } else if ("Mock".equals(computeResource.getCommunicationType())) {
-                        operations = new MockComputeOperation(computeResource.getHost());
-                    } else {
-                        throw new Exception("No compatible communication method {" + computeResource.getCommunicationType() + "} not found for compute resource " + computeResource.getName());
-                    }
-
-                    ExecutionResult executionResult = operations.executeCommand(command);
-                    if (executionResult.getExitStatus() == 0) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.COMPLETED);
-                    } else if (executionResult.getExitStatus() == -1) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process didn't exit successfully");
-                    } else {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process exited with error status " + executionResult.getExitStatus());
-                    }
-
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-            publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-        }
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status) {
-        publishTaskStatus(processId, taskId, status, "");
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status, String reason) {
-        this.kafkaSender.send(this.taskEventPublishTopic, processId + "-" + taskId,
-                processId + "," + taskId + "," + status + "," + reason);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.properties
deleted file mode 100644
index f9d49a7..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8591
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = env-cleanup
-task.event.topic.name = airavata-task-event
-task.read.topic.name = airavata-task-env-cleanup
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-cleanup-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/pom.xml
deleted file mode 100644
index d011d7b..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/pom.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>env-setup-task</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>compute-resource-api</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/env-setup-task</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>env-setup</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/Application.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/Application.java
deleted file mode 100644
index 43881fc..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.env.setup;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaReceiver.java
deleted file mode 100644
index 38c7bf4..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.env.setup.messaging;
-
-import org.apache.airavata.k8s.task.env.setup.service.TaskExecutionService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private TaskExecutionService taskExecutionService;
-
-    @KafkaListener(topics = "${task.read.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task=" + payload);
-        taskExecutionService.executeTaskAsync(Long.parseLong(payload));
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaSender.java
deleted file mode 100644
index 5cf6499..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.env.setup.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/ReceiverConfig.java
deleted file mode 100644
index c26395e..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.env.setup.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/SenderConfig.java
deleted file mode 100644
index ce8b975..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.env.setup.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/service/TaskExecutionService.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/service/TaskExecutionService.java
deleted file mode 100644
index 7e2c2da..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/java/org/apache/airavata/k8s/task/env/setup/service/TaskExecutionService.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.env.setup.service;
-
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.api.ExecutionResult;
-import org.apache.airavata.k8s.compute.impl.MockComputeOperation;
-import org.apache.airavata.k8s.compute.impl.SSHComputeOperations;
-import org.apache.airavata.k8s.task.env.setup.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskExecutionService {
-
-    private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${task.event.topic.name}")
-    private String taskEventPublishTopic;
-
-    public TaskExecutionService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void executeTaskAsync(long taskId) {
-
-        System.out.println("Executing task " + taskId + " as env setup task");
-        TaskResource taskResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/task/" + taskId, TaskResource.class);
-
-        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.SCHEDULED);
-
-        this.executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                executeTask(taskResource);
-            }
-        });
-    }
-
-    public void executeTask(TaskResource taskResource) {
-
-        try {
-
-            Optional<TaskParamResource> commandParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "command".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> computeId = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "compute-id".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            Optional<TaskParamResource> experimentDataDir = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "exp-data-dir".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            String processDataDirectory = experimentDataDir
-                    .orElseThrow(() -> new Exception("exp-data-dir param can not be found in the params of task " +
-                            taskResource.getId())).getValue() + "/" + taskResource.getParentProcessId();
-
-            commandParam.ifPresent(taskParamResource -> {
-                try {
-
-                    String command = taskParamResource.getValue();
-                    command = command.replace("{process-data-dir}", processDataDirectory);
-                    System.out.println("Executing command " + command);
-
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.EXECUTING);
-
-                    ComputeResource computeResource = this.restTemplate.getForObject("http://" + this.apiServerUrl
-                            + "/compute/" + Long.parseLong(computeId.get().getValue()), ComputeResource.class);
-
-                    // TODO fetch this from the catalog
-                    ComputeOperations operations;
-                    if ("SSH".equals(computeResource.getCommunicationType())) {
-                        operations = new SSHComputeOperations(computeResource.getHost(), computeResource.getUserName(), computeResource.getPassword());
-                    } else if ("Mock".equals(computeResource.getCommunicationType())) {
-                        operations = new MockComputeOperation(computeResource.getHost());
-                    } else {
-                        throw new Exception("No compatible communication method {" + computeResource.getCommunicationType() + "} not found for compute resource " + computeResource.getName());
-                    }
-
-                    ExecutionResult executionResult = operations.executeCommand(command);
-                    if (executionResult.getExitStatus() == 0) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.COMPLETED);
-                    } else if (executionResult.getExitStatus() == -1) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process didn't exit successfully");
-                    } else {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process exited with error status " + executionResult.getExitStatus());
-                    }
-
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-            publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-        }
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status) {
-        publishTaskStatus(processId, taskId, status, "");
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status, String reason) {
-        this.kafkaSender.send(this.taskEventPublishTopic, processId + "-" + taskId,
-                processId + "," + taskId + "," + status + "," + reason);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.properties
deleted file mode 100644
index 0ac80de..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8392
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = env-setup
-task.event.topic.name = airavata-task-event
-task.read.topic.name = airavata-task-env-setup
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/env-setup-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/pom.xml
deleted file mode 100644
index c1ae760..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ingress-staging-task</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>compute-resource-api</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/ingress-staging-task</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>ingress-staging</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/Application.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/Application.java
deleted file mode 100644
index b51e719..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.ingress;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaReceiver.java
deleted file mode 100644
index 912add3..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.ingress.messaging;
-
-import org.apache.airavata.k8s.task.ingress.service.TaskExecutionService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private TaskExecutionService taskExecutionService;
-
-    @KafkaListener(topics = "${task.read.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task=" + payload);
-        taskExecutionService.executeTaskAsync(Long.parseLong(payload));
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaSender.java
deleted file mode 100644
index bf0b7c1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.ingress.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/ReceiverConfig.java
deleted file mode 100644
index cfbb3f9..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.ingress.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/SenderConfig.java
deleted file mode 100644
index 8a9efbb..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.ingress.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/service/TaskExecutionService.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/service/TaskExecutionService.java
deleted file mode 100644
index 2fafa81..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/java/org/apache/airavata/k8s/task/ingress/service/TaskExecutionService.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.ingress.service;
-
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.impl.MockComputeOperation;
-import org.apache.airavata.k8s.task.ingress.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.http.*;
-import org.springframework.stereotype.Service;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import java.io.File;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskExecutionService {
-
-    private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${task.event.topic.name}")
-    private String taskEventPublishTopic;
-
-    public TaskExecutionService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void executeTaskAsync(long taskId) {
-
-        System.out.println("Executing task " + taskId + " as ingress task");
-        TaskResource taskResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/task/" + taskId, TaskResource.class);
-
-        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.SCHEDULED);
-
-        this.executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                executeTask(taskResource);
-            }
-        });
-    }
-
-    public void executeTask(TaskResource taskResource) {
-
-        Optional<TaskParamResource> sourceParam = taskResource.getTaskParams()
-                .stream()
-                .filter(taskParamResource -> "source".equals(taskParamResource.getKey()))
-                .findFirst();
-
-        Optional<TaskParamResource> targetParam = taskResource.getTaskParams()
-                .stream()
-                .filter(taskParamResource -> "target".equals(taskParamResource.getKey()))
-                .findFirst();
-
-        Optional<TaskParamResource> computeName = taskResource.getTaskParams()
-                .stream()
-                .filter(taskParamResource -> "compute-name".equals(taskParamResource.getKey()))
-                .findFirst();
-
-        if (sourceParam.isPresent()) {
-            if (targetParam.isPresent()) {
-                publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.EXECUTING);
-                ComputeOperations computeOperations = new MockComputeOperation(computeName.get().getValue());
-
-                try {
-                    computeOperations.transferDataIn(sourceParam.get().getValue(), targetParam.get().getValue(), "SCP");
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.COMPLETED);
-
-                } catch (Exception e) {
-
-                    e.printStackTrace();
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED);
-                }
-            } else {
-                System.out.println("Source can not be null for task " + taskResource.getId());
-                publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED);
-            }
-        } else {
-            System.out.println("Source can not be null for task " + taskResource.getId());
-            publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED);
-        }
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status) {
-        this.kafkaSender.send(this.taskEventPublishTopic, processId + "-" + taskId,
-                processId + "," + taskId + "," + status);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.properties
deleted file mode 100644
index 6ec9766..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8291
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = ingress-staging
-task.event.topic.name = airavata-task-event
-task.read.topic.name = airavata-task-ingress-staging
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/ingress-staging-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/pom.xml
deleted file mode 100644
index c046b87..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>job-submission-task</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>compute-resource-api</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/job-submission-task</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>job-submission</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/Application.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/Application.java
deleted file mode 100644
index 9955502..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.job;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaReceiver.java
deleted file mode 100644
index 574c075..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.job.messaging;
-
-import org.apache.airavata.k8s.task.job.service.TaskExecutionService;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private TaskExecutionService taskExecutionService;
-
-    @KafkaListener(topics = "${task.read.topic.name}")
-    public void receiveTasks(String payload, Acknowledgment ack) {
-        System.out.println("received task=" + payload);
-        taskExecutionService.executeTaskAsync(Long.parseLong(payload));
-        ack.acknowledge();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaSender.java
deleted file mode 100644
index 395ada1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/KafkaSender.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.job.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-
-    public void send(String topic, String key, String payload) {
-        kafkaTemplate.send(topic, key, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/ReceiverConfig.java
deleted file mode 100644
index 9a69ecf..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/ReceiverConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.job.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.AbstractMessageListenerContainer;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Value("${task.group.name}")
-    private String taskGroupName;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, taskGroupName);
-        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-        factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/SenderConfig.java
deleted file mode 100644
index 88a4890..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.task.job.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/service/TaskExecutionService.java b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/service/TaskExecutionService.java
deleted file mode 100644
index dfedbd9..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/java/org/apache/airavata/k8s/task/job/service/TaskExecutionService.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.task.job.service;
-
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.api.resources.task.TaskStatusResource;
-import org.apache.airavata.k8s.compute.api.ComputeOperations;
-import org.apache.airavata.k8s.compute.api.ExecutionResult;
-import org.apache.airavata.k8s.compute.impl.MockComputeOperation;
-import org.apache.airavata.k8s.compute.impl.SSHComputeOperations;
-import org.apache.airavata.k8s.task.job.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class TaskExecutionService {
-
-    private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${task.event.topic.name}")
-    private String taskEventPublishTopic;
-
-    public TaskExecutionService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void executeTaskAsync(long taskId) {
-
-        System.out.println("Executing task " + taskId + " as job submission task");
-        TaskResource taskResource = this.restTemplate.getForObject("http://" + apiServerUrl + "/task/" + taskId, TaskResource.class);
-
-        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.SCHEDULED);
-
-        this.executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                executeTask(taskResource);
-            }
-        });
-    }
-
-    private void executeTask(TaskResource taskResource) {
-
-        try {
-            Optional<TaskParamResource> commandParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "command".equals(taskParamResource.getKey()))
-                    .findFirst();
-            Optional<TaskParamResource> argumentsParam = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "arguments".equals(taskParamResource.getKey()))
-                    .findFirst();
-            Optional<TaskParamResource> computeId = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "compute-id".equals(taskParamResource.getKey()))
-                    .findFirst();
-            Optional<TaskParamResource> experimentDataDir = taskResource.getTaskParams()
-                    .stream()
-                    .filter(taskParamResource -> "exp-data-dir".equals(taskParamResource.getKey()))
-                    .findFirst();
-
-            String processDataDirectory = experimentDataDir
-                    .orElseThrow(() -> new Exception("exp-data-dir param can not be found the tas params of task " +
-                            taskResource.getId())).getValue() + "/" + taskResource.getParentProcessId();
-
-
-            commandParam.ifPresent(taskParamResource -> {
-                try {
-                    String command = taskParamResource.getValue();
-                    command = command.replace("{process-data-dir}", processDataDirectory);
-                    System.out.println("Executing command " + command);
-
-                    argumentsParam.ifPresent(taskArgParamResource -> {
-                        taskArgParamResource.setValue(taskArgParamResource.getValue()
-                                .replace("{process-data-dir}", processDataDirectory));
-                        System.out.println("With arguments " + taskArgParamResource.getValue());
-                    });
-
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.EXECUTING);
-
-                    ComputeResource computeResource = this.restTemplate.getForObject("http://" + this.apiServerUrl
-                            + "/compute/" + Long.parseLong(computeId.get().getValue()), ComputeResource.class);
-
-                    ComputeOperations operations;
-                    if ("SSH".equals(computeResource.getCommunicationType())) {
-                        operations = new SSHComputeOperations(computeResource.getHost(), computeResource.getUserName(), computeResource.getPassword());
-                    } else if ("Mock".equals(computeResource.getCommunicationType())) {
-                        operations = new MockComputeOperation(computeResource.getHost());
-                    } else {
-                        throw new Exception("No compatible communication method {" + computeResource.getCommunicationType() + "} not found for compute resource " + computeResource.getName());
-                    }
-
-                    ExecutionResult executionResult = operations.executeCommand(command +
-                            (argumentsParam.isPresent() ? argumentsParam.get().getValue() : ""));
-
-                    if (executionResult.getExitStatus() == 0) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.COMPLETED);
-                    } else if (executionResult.getExitStatus() == -1) {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process didn't exit successfully");
-                    } else {
-                        publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, "Process exited with error status " + executionResult.getExitStatus());
-                    }
-
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-            publishTaskStatus(taskResource.getParentProcessId(), taskResource.getId(), TaskStatusResource.State.FAILED, e.getMessage());
-        }
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status) {
-        publishTaskStatus(processId, taskId, status, "");
-    }
-
-    public void publishTaskStatus(long processId, long taskId, int status, String reason) {
-        this.kafkaSender.send(this.taskEventPublishTopic, processId + "-" + taskId,
-                processId + "," + taskId + "," + status + "," + reason);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.properties
deleted file mode 100644
index d1a8582..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-server.port = 8491
-api.server.url = api-server.default.svc.cluster.local:8080
-task.group.name = job-submission
-task.event.topic.name = airavata-task-event
-task.read.topic.name = airavata-task-job-submission
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/tasks/job-submission-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/pom.xml b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/pom.xml
deleted file mode 100644
index 0af82e1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/pom.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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">
-    <parent>
-        <artifactId>airavata-kubernetes</artifactId>
-        <groupId>org.apache.airavata</groupId>
-        <version>1.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>workflow-generator</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.airavata</groupId>
-            <artifactId>api-resource</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <!-- Add typical dependencies for a web application -->
-        <!-- Adds Tomcat and Spring MVC, along others -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-        </dependency>
-    </dependencies>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-
-        <profile>
-            <id>jar</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <properties>
-                <artifact-packaging>jar</artifact-packaging>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>repackage</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Create a docker image that runs the executable jar-->
-                    <plugin>
-                        <groupId>com.spotify</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
-                        <version>1.0.0</version>
-                        <configuration>
-                            <imageName>${docker.image.prefix}/workflow-generator</imageName>
-                            <baseImage>java:openjdk-8-jdk-alpine</baseImage>
-                            <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
-                            <resources>
-                                <resource>
-                                    <targetPath>/</targetPath>
-                                    <directory>${project.build.directory}</directory>
-                                    <include>${project.build.finalName}.jar</include>
-                                </resource>
-                            </resources>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-        <profile>
-            <id>war</id>
-            <properties>
-                <artifact-packaging>war</artifact-packaging>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-maven-plugin</artifactId>
-                        <version>1.4.3.RELEASE</version>
-                        <configuration>
-                            <!-- this will get rid of version info from war file name -->
-                            <finalName>workflow-generator</finalName>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/Application.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/Application.java
deleted file mode 100644
index a920c08..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/Application.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.orchestrator;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@SpringBootApplication
-@Configuration
-@ComponentScan
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-    @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder) {
-        return builder.build();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaReceiver.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaReceiver.java
deleted file mode 100644
index c33d48f..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaReceiver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.orchestrator.messaging;
-
-import org.apache.airavata.k8s.orchestrator.service.ExperimentLaunchService;
-import org.springframework.kafka.annotation.KafkaListener;
-
-import javax.annotation.Resource;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaReceiver {
-
-    @Resource
-    private ExperimentLaunchService experimentLaunchService;
-
-    @KafkaListener(topics = "${launch.topic.name}")
-    public void receive(String payload) {
-        System.out.println("received payload=" + payload);
-        if (payload.startsWith("exp-")) {
-            long experimentId = Long.parseLong(payload.substring(4));
-            this.experimentLaunchService.launch(experimentId);
-        }
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaSender.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaSender.java
deleted file mode 100644
index a31f3b1..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/KafkaSender.java
+++ /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.
- */
-package org.apache.airavata.k8s.orchestrator.messaging;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.kafka.core.KafkaTemplate;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-public class KafkaSender {
-
-    @Autowired
-    private KafkaTemplate<String, String> kafkaTemplate;
-
-    public void send(String topic, String payload) {
-        kafkaTemplate.send(topic, payload);
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/ReceiverConfig.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/ReceiverConfig.java
deleted file mode 100644
index 5eef7ee..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/ReceiverConfig.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.orchestrator.messaging;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.EnableKafka;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.config.KafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
-import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-@EnableKafka
-public class ReceiverConfig {
-
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> consumerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
-        // allows a pool of processes to divide the work of consuming and processing records
-        props.put(ConsumerConfig.GROUP_ID_CONFIG, "helloworld");
-
-        return props;
-    }
-
-    @Bean
-    public ConsumerFactory<String, String> consumerFactory() {
-        return new DefaultKafkaConsumerFactory<String, String>(consumerConfigs());
-    }
-
-    @Bean
-    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
-        ConcurrentKafkaListenerContainerFactory<String, String> factory =
-                new ConcurrentKafkaListenerContainerFactory<>();
-        factory.setConsumerFactory(consumerFactory());
-
-        return factory;
-    }
-
-    @Bean
-    public KafkaReceiver receiver() {
-        return new KafkaReceiver();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/SenderConfig.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/SenderConfig.java
deleted file mode 100644
index eeac4b8..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/messaging/SenderConfig.java
+++ /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.
- */
-package org.apache.airavata.k8s.orchestrator.messaging;
-
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.core.DefaultKafkaProducerFactory;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.core.ProducerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Configuration
-public class SenderConfig {
-    @Value("${kafka.bootstrap-servers}")
-    private String bootstrapServers;
-
-    @Bean
-    public Map<String, Object> producerConfigs() {
-        Map<String, Object> props = new HashMap<>();
-        // list of host:port pairs used for establishing the initial connections to the Kakfa cluster
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
-        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
-        return props;
-    }
-
-    @Bean
-    public ProducerFactory<String, String> producerFactory() {
-        return new DefaultKafkaProducerFactory<String, String>(producerConfigs());
-    }
-
-    @Bean
-    public KafkaTemplate<String, String> kafkaTemplate() {
-        return new KafkaTemplate<>(producerFactory());
-    }
-
-    @Bean
-    public KafkaSender kafkaSender() {
-        return new KafkaSender();
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/service/ExperimentLaunchService.java b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/service/ExperimentLaunchService.java
deleted file mode 100644
index b67eda8..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/java/org/apache/airavata/k8s/orchestrator/service/ExperimentLaunchService.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.airavata.k8s.orchestrator.service;
-
-import org.apache.airavata.k8s.api.resources.application.ApplicationDeploymentResource;
-import org.apache.airavata.k8s.api.resources.application.ApplicationIfaceResource;
-import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentInputResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentOutputResource;
-import org.apache.airavata.k8s.api.resources.experiment.ExperimentResource;
-import org.apache.airavata.k8s.api.resources.process.ProcessResource;
-import org.apache.airavata.k8s.api.resources.task.TaskParamResource;
-import org.apache.airavata.k8s.api.resources.task.TaskResource;
-import org.apache.airavata.k8s.orchestrator.messaging.KafkaSender;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-@Service
-public class ExperimentLaunchService {
-
-    private final RestTemplate restTemplate;
-    private final KafkaSender kafkaSender;
-
-    @Value("${api.server.url}")
-    private String apiServerUrl;
-
-    @Value("${scheduler.topic.name}")
-    private String schedulerTopic;
-
-    public ExperimentLaunchService(RestTemplate restTemplate, KafkaSender kafkaSender) {
-        this.restTemplate = restTemplate;
-        this.kafkaSender = kafkaSender;
-    }
-
-    public void launch(long experimentId) {
-        ExperimentResource experimentResource = this.restTemplate.getForObject(
-                "http://" + this.apiServerUrl + "/experiment/{experimentId}",
-                ExperimentResource.class,
-                experimentId);
-
-        ApplicationIfaceResource ifaceResource = this.restTemplate.getForObject(
-                "http://" + this.apiServerUrl + "/appiface/{ifaceId}",
-                ApplicationIfaceResource.class,
-                experimentResource.getApplicationInterfaceId());
-
-        ApplicationDeploymentResource deploymentResource = this.restTemplate.getForObject(
-                "http://" + this.apiServerUrl + "/appdep/{depId}",
-                ApplicationDeploymentResource.class,
-                experimentResource.getApplicationDeploymentId());
-
-        ComputeResource computeResource = this.restTemplate.getForObject(
-                "http://" + this.apiServerUrl + "/compute/{computeId}",
-                ComputeResource.class,
-                deploymentResource.getComputeResourceId());
-
-        ProcessResource processResource = new ProcessResource();
-        processResource.setCreationTime(System.currentTimeMillis());
-        processResource.setExperimentDataDir("/tmp/experiments/" + experimentId);
-        processResource.setExperimentId(experimentId);
-
-        List<TaskResource> taskDagResources = determineTaskDag(experimentResource, ifaceResource, deploymentResource, processResource, computeResource);
-        processResource.setTasks(taskDagResources);
-
-        Long processId = this.restTemplate.postForObject("http://" + this.apiServerUrl + "/process", processResource, Long.class);
-
-        System.out.println("Iface " + ifaceResource.getName() + ", Dep " + deploymentResource.getId());
-        kafkaSender.send(schedulerTopic, processId.toString());
-    }
-
-    private List<TaskResource> determineTaskDag(ExperimentResource exRes,
-                                               ApplicationIfaceResource appIfRes,
-                                               ApplicationDeploymentResource appDepRes,
-                                               ProcessResource processResource,
-                                               ComputeResource computeResource) {
-
-        List<TaskResource> taskDag = new ArrayList<>();
-
-        AtomicInteger dagOrder = new AtomicInteger(0);
-
-        TaskResource dataDirTaskReasource = new TaskResource();
-        dataDirTaskReasource.setTaskType(TaskResource.TaskTypes.ENV_SETUP);
-        dataDirTaskReasource.setCreationTime(System.currentTimeMillis());
-        dataDirTaskReasource.setTaskDetail("Create data dir command for experiment " + exRes.getId());
-        dataDirTaskReasource.setTaskParams(Arrays.asList(
-                new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                new TaskParamResource().setKey("command").setValue("/bin/mkdir -p {process-data-dir}/inputs && mkdir -p {process-data-dir}/outputs"),
-                new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-
-        dataDirTaskReasource.setOrder(dagOrder.incrementAndGet());
-        taskDag.add(dataDirTaskReasource);
-
-        Optional.ofNullable(appDepRes.getPreJobCommand()).ifPresent(preJob -> {
-            TaskResource resource = new TaskResource();
-            resource.setTaskType(TaskResource.TaskTypes.ENV_SETUP);
-            resource.setCreationTime(System.currentTimeMillis());
-            resource.setTaskDetail("Pre-job command for experiment " + exRes.getId());
-            resource.setTaskParams(Arrays.asList(
-                    new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                    new TaskParamResource().setKey("command").setValue(preJob),
-                    new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                    new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-            resource.setOrder(dagOrder.incrementAndGet());
-            taskDag.add(resource);
-        });
-
-
-        StringBuffer inputArgument = new StringBuffer();
-
-        Optional.ofNullable(exRes.getExperimentInputs()).ifPresent(exInps -> exInps.forEach(expInp -> {
-
-            switch (expInp.getType()) {
-                case ExperimentInputResource.Types.URI:
-
-                    TaskResource resource = new TaskResource();
-                    resource.setTaskType(TaskResource.TaskTypes.INGRESS_DATA_STAGING);
-                    resource.setCreationTime(System.currentTimeMillis());
-                    resource.setTaskDetail("Ingress data staging for input " + expInp.getName());
-                    String localPath = "{process-data-dir}/inputs/" + expInp.getId();
-                    resource.setTaskParams(Arrays.asList(
-                            new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                            new TaskParamResource().setKey("source").setValue(expInp.getValue()),
-                            new TaskParamResource().setKey("target").setValue(localPath),
-                            new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                            new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-                    resource.setOrder(dagOrder.incrementAndGet());
-
-                    inputArgument.append(" ");
-                    if (expInp.getArguments() != null && !expInp.getArguments().isEmpty()) {
-                        inputArgument.append(expInp.getArguments());
-                        inputArgument.append(" ");
-                    }
-                    inputArgument.append(localPath);
-                    taskDag.add(resource);
-                    break;
-
-                case ExperimentInputResource.Types.FLOAT:
-                case ExperimentInputResource.Types.STRING:
-                case ExperimentInputResource.Types.INTEGER:
-                    inputArgument.append(" ");
-                    if (expInp.getArguments() != null && !expInp.getArguments().isEmpty()) {
-                        inputArgument.append(expInp.getArguments());
-                        inputArgument.append(" ");
-                    }
-                    inputArgument.append(expInp.getValue());
-                    break;
-            }
-
-        }));
-
-        inputArgument.append(" > {process-data-dir}/outputs/stdout.txt 2> {process-data-dir}/outputs/stderr.txt");
-
-        Optional.ofNullable(appDepRes.getExecutablePath()).ifPresent(exPath -> {
-            TaskResource resource = new TaskResource();
-            resource.setTaskType(TaskResource.TaskTypes.JOB_SUBMISSION);
-            resource.setCreationTime(System.currentTimeMillis());
-            resource.setTaskDetail("Job submission command for experiment " + exRes.getId());
-
-            resource.setTaskParams(Arrays.asList(
-                    new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                    new TaskParamResource().setKey("command").setValue(exPath),
-                    new TaskParamResource().setKey("arguments").setValue(inputArgument.toString()),
-                    new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                    new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-            resource.setOrder(dagOrder.incrementAndGet());
-            taskDag.add(resource);
-        });
-
-        Optional.ofNullable(exRes.getExperimentOutputs()).ifPresent(exOps -> exOps.forEach(expOut -> {
-            if (expOut.getType() == ExperimentOutputResource.Types.URI) {
-                TaskResource resource = new TaskResource();
-                resource.setTaskType(TaskResource.TaskTypes.EGRESS_DATA_STAGING);
-                resource.setCreationTime(System.currentTimeMillis());
-                resource.setTaskDetail("Egress data staging for output " + expOut.getName());
-                resource.setTaskParams(Arrays.asList(
-                        new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                        new TaskParamResource().setKey("source").setValue("{process-data-dir}/" + expOut.getValue()),
-                        new TaskParamResource().setKey("target").setValue(expOut.getId() + ""),
-                        new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                        new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-                resource.setOrder(dagOrder.incrementAndGet());
-                taskDag.add(resource);
-            }
-
-            if (expOut.getType() == ExperimentOutputResource.Types.STDOUT) {
-                TaskResource resource = new TaskResource();
-                resource.setTaskType(TaskResource.TaskTypes.EGRESS_DATA_STAGING);
-                resource.setCreationTime(System.currentTimeMillis());
-                resource.setTaskDetail("Egress data staging for output " + expOut.getName());
-                resource.setTaskParams(Arrays.asList(
-                        new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                        new TaskParamResource().setKey("source").setValue("{process-data-dir}/outputs/stdout.txt"),
-                        new TaskParamResource().setKey("target").setValue(expOut.getId() + ""),
-                        new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                        new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-                resource.setOrder(dagOrder.incrementAndGet());
-                taskDag.add(resource);
-            }
-
-            if (expOut.getType() == ExperimentOutputResource.Types.STDERR) {
-                TaskResource resource = new TaskResource();
-                resource.setTaskType(TaskResource.TaskTypes.EGRESS_DATA_STAGING);
-                resource.setCreationTime(System.currentTimeMillis());
-                resource.setTaskDetail("Egress data staging for output " + expOut.getName());
-                resource.setTaskParams(Arrays.asList(
-                        new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                        new TaskParamResource().setKey("source").setValue("{process-data-dir}/outputs/stderr.txt"),
-                        new TaskParamResource().setKey("target").setValue(expOut.getId() + ""),
-                        new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                        new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-                resource.setOrder(dagOrder.incrementAndGet());
-                taskDag.add(resource);
-            }
-        }));
-
-        Optional.ofNullable(appDepRes.getPostJobCommand()).ifPresent(postJob -> {
-            TaskResource resource = new TaskResource();
-            resource.setTaskType(TaskResource.TaskTypes.ENV_CLEANUP);
-            resource.setCreationTime(System.currentTimeMillis());
-            resource.setTaskDetail("Post-job command for experiment " + exRes.getId());
-            resource.setTaskParams(Arrays.asList(
-                    new TaskParamResource().setKey("exp-data-dir").setValue(processResource.getExperimentDataDir()),
-                    new TaskParamResource().setKey("command").setValue(postJob),
-                    new TaskParamResource().setKey("compute-id").setValue(computeResource.getId() + ""),
-                    new TaskParamResource().setKey("compute-name").setValue(computeResource.getName() + "")));
-            resource.setOrder(dagOrder.incrementAndGet());
-            taskDag.add(resource);
-        });
-
-        return taskDag;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.properties b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.properties
deleted file mode 100644
index ebcdaaa..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-server.port = 8090
-api.server.url = api-server.default.svc.cluster.local:8080
-scheduler.topic.name = airavata-scheduler
-launch.topic.name = airavata-launch
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.yml b/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.yml
deleted file mode 100644
index 069dd61..0000000
--- a/sandbox/airavata-kubernetes/modules/microservices/workflow-generator/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-kafka:
-  bootstrap-servers: kafka.default.svc.cluster.local:9092
-  topic:
-    helloworld: helloworld.t
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/pom.xml b/sandbox/airavata-kubernetes/pom.xml
deleted file mode 100644
index b0ee98f..0000000
--- a/sandbox/airavata-kubernetes/pom.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-
-    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.
-
--->
-<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.airavata</groupId>
-    <artifactId>airavata-kubernetes</artifactId>
-    <packaging>pom</packaging>
-    <version>1.0-SNAPSHOT</version>
-    <modules>
-        <module>modules/api-resource</module>
-        <module>modules/compute-resource-api</module>
-        <module>modules/microservices/api-server</module>
-        <module>modules/microservices/workflow-generator</module>
-        <module>modules/microservices/task-scheduler</module>
-        <module>modules/microservices/event-sink</module>
-        <module>modules/microservices/tasks/ingress-staging-task</module>
-        <module>modules/microservices/tasks/env-setup-task</module>
-        <module>modules/microservices/tasks/job-submission-task</module>
-        <module>modules/microservices/tasks/env-cleanup-task</module>
-        <module>modules/microservices/tasks/egress-staging-task</module>
-    </modules>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-web</artifactId>
-                <version>1.5.1.RELEASE</version>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-freemarker</artifactId>
-                <version>1.5.1.RELEASE</version>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-data-jpa</artifactId>
-                <version>1.5.1.RELEASE</version>
-            </dependency>
-            <dependency>
-                <groupId>mysql</groupId>
-                <artifactId>mysql-connector-java</artifactId>
-                <version>5.1.44</version>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework.kafka</groupId>
-                <artifactId>spring-kafka</artifactId>
-                <version>1.1.3.RELEASE</version>
-            </dependency>
-            <dependency>
-                <groupId>com.jcraft</groupId>
-                <artifactId>jsch</artifactId>
-                <version>0.1.53</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <properties>
-        <docker.image.prefix>dimuthuupe</docker.image.prefix>
-        <java.version>1.8</java.version>
-    </properties>
-</project>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/readme.txt b/sandbox/airavata-kubernetes/readme.txt
deleted file mode 100644
index 194d2f2..0000000
--- a/sandbox/airavata-kubernetes/readme.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This project contains the implementation of the the components that compose the microservice based task execution workflow framework for Airavata
-
-Design document and the user guide to install in a development environment can be found in the project root directory.
-
-Implementation of microservices can be found in modules -> mircoservices directory
-
-Implementation of the Web Console can be found in web-console directory
-
-To build docker images for each micoservice, goto the module and run
-mvn clean install docker:build -DdockerImageTags=v1.0
-
-If you are running this for the first time, run mvn clean install at the root of the project
-
-When running in a local machine, add following host entries to /etc/hosts file
-127.0.0.1 db.default.svc.cluster.local
-127.0.0.1 kafka.default.svc.cluster.local
-127.0.0.1 api-server.default.svc.cluster.local
-
-When running as docker containers, pass following environment variables to api-server container
-spring_datasource_username=<db user>
-spring_datasource_password=<db password>
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml
deleted file mode 100644
index 95c6502..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: api-server
-  labels:
-    app: api-server
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: api-server
-  template:
-    metadata:
-      labels:
-        app: api-server
-    spec:
-      containers:
-      - name: api-server
-        env:
-        - name: spring_datasource_username
-          value: airavata-user
-        - name: spring_datasource_password
-          value: password
-        image: dimuthuupe/api-server:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-svc.yml b/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-svc.yml
deleted file mode 100644
index efd75e8..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/api-server/api-server-svc.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: api-server
-  labels:
-    name: api-server
-spec:
-  type: NodePort
-  ports:
-    - port: 8080
-      nodePort: 30080
-      name: http
-  selector:
-    app: api-server
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/db-service.yml b/sandbox/airavata-kubernetes/scripts/k8s/db-service.yml
deleted file mode 100644
index 67bb4fd..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/db-service.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: db
-  labels:
-    name: db
-spec:
-  ports:
-    - port: 3306
-      targetPort: 3306
-      protocol: TCP
-      name: mysql
-    - port: 8080
-      targetPort: 8080
-      protocol: TCP
-      name: api
----
-
-kind: Endpoints
-apiVersion: v1
-metadata:
-  name: db
-subsets:
-  - addresses:
-      - ip: 192.168.1.114
-    ports:
-      - port: 3306
-        name: mysql
-      - port: 8080
-        name: api
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/event-sink/event-sink-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/event-sink/event-sink-dep.yml
deleted file mode 100644
index d01530b..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/event-sink/event-sink-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: event-sink
-  labels:
-    app: event-sink
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: event-sink
-  template:
-    metadata:
-      labels:
-        app: event-sink
-    spec:
-      containers:
-      - name: event-sink
-        image: dimuthuupe/event-sink:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/kafka-service.yml b/sandbox/airavata-kubernetes/scripts/k8s/kafka-service.yml
deleted file mode 100644
index a0a9789..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/kafka-service.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: kafka
-  labels:
-    name: kafka
-spec:
-  ports:
-    - port: 9092
-      targetPort: 9092
-      protocol: TCP
-      name: kafka
-    - port: 8080
-      targetPort: 8080
-      protocol: TCP
-      name: api
----
-
-kind: Endpoints
-apiVersion: v1
-metadata:
-  name: kafka
-subsets:
-  - addresses:
-      - ip: 192.168.1.114
-    ports:
-      - port: 9092
-        name: kafka
-      - port: 8080
-        name: api
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml
deleted file mode 100644
index 283a40b..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: task-scheduler
-  labels:
-    app: task-scheduler
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: task-scheduler
-  template:
-    metadata:
-      labels:
-        app: task-scheduler
-    spec:
-      containers:
-      - name: task-scheduler
-        image: dimuthuupe/task-scheduler:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml
deleted file mode 100644
index a1588a0..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: egress-staging-task
-  labels:
-    app: egress-staging-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: egress-staging-task
-  template:
-    metadata:
-      labels:
-        app: egress-staging-task
-    spec:
-      containers:
-      - name: egress-staging-task
-        image: dimuthuupe/egress-staging-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml
deleted file mode 100644
index 85b1c20..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: env-cleanup-task
-  labels:
-    app: env-cleanup-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: env-cleanup-task
-  template:
-    metadata:
-      labels:
-        app: env-cleanup-task
-    spec:
-      containers:
-      - name: env-cleanup-task
-        image: dimuthuupe/env-cleanup-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml
deleted file mode 100644
index 4e92893..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: env-setup-task
-  labels:
-    app: env-setup-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: env-setup-task
-  template:
-    metadata:
-      labels:
-        app: env-setup-task
-    spec:
-      containers:
-      - name: env-setup-task
-        image: dimuthuupe/env-setup-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml
deleted file mode 100644
index 7e1b6ad..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: ingress-staging-task
-  labels:
-    app: ingress-staging-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: ingress-staging-task
-  template:
-    metadata:
-      labels:
-        app: ingress-staging-task
-    spec:
-      containers:
-      - name: ingress-staging-task
-        image: dimuthuupe/ingress-staging-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml
deleted file mode 100644
index 354edc4..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: job-submission-task
-  labels:
-    app: job-submission-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: job-submission-task
-  template:
-    metadata:
-      labels:
-        app: job-submission-task
-    spec:
-      containers:
-      - name: job-submission-task
-        image: dimuthuupe/job-submission-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml b/sandbox/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml
deleted file mode 100644
index 91a08b6..0000000
--- a/sandbox/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: workflow-generator
-  labels:
-    app: workflow-generator
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: workflow-generator
-  template:
-    metadata:
-      labels:
-        app: workflow-generator
-    spec:
-      containers:
-      - name: workflow-generator
-        image: dimuthuupe/workflow-generator:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/sandbox/airavata-kubernetes/web-console/.angular-cli.json b/sandbox/airavata-kubernetes/web-console/.angular-cli.json
deleted file mode 100644
index 53f7087..0000000
--- a/sandbox/airavata-kubernetes/web-console/.angular-cli.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
-  "project": {
-    "name": "web-console"
-  },
-  "apps": [
-    {
-      "root": "src",
-      "outDir": "dist",
-      "assets": [
-        "assets",
-        "favicon.ico"
-      ],
-      "index": "index.html",
-      "main": "main.ts",
-      "polyfills": "polyfills.ts",
-      "test": "test.ts",
-      "tsconfig": "tsconfig.app.json",
-      "testTsconfig": "tsconfig.spec.json",
-      "prefix": "app",
-      "styles": [
-        "styles.css"
-      ],
-      "scripts": [
-      ],
-      "environmentSource": "environments/environment.ts",
-      "environments": {
-        "dev": "environments/environment.ts",
-        "prod": "environments/environment.prod.ts"
-      }
-    }
-  ],
-  "e2e": {
-    "protractor": {
-      "config": "./protractor.conf.js"
-    }
-  },
-  "lint": [
-    {
-      "project": "src/tsconfig.app.json",
-      "exclude": "**/node_modules/**"
-    },
-    {
-      "project": "src/tsconfig.spec.json",
-      "exclude": "**/node_modules/**"
-    },
-    {
-      "project": "e2e/tsconfig.e2e.json",
-      "exclude": "**/node_modules/**"
-    }
-  ],
-  "test": {
-    "karma": {
-      "config": "./karma.conf.js"
-    }
-  },
-  "defaults": {
-    "styleExt": "css",
-    "class": {
-      "spec": false
-    },
-    "component": {}
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/.editorconfig b/sandbox/airavata-kubernetes/web-console/.editorconfig
deleted file mode 100644
index 6e87a00..0000000
--- a/sandbox/airavata-kubernetes/web-console/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# Editor configuration, see http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
diff --git a/sandbox/airavata-kubernetes/web-console/.gitignore b/sandbox/airavata-kubernetes/web-console/.gitignore
deleted file mode 100644
index 54bfd20..0000000
--- a/sandbox/airavata-kubernetes/web-console/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-/out-tsc
-
-# dependencies
-/node_modules
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage
-/libpeerconnection.log
-npm-debug.log
-testem.log
-/typings
-
-# e2e
-/e2e/*.js
-/e2e/*.map
-
-# System Files
-.DS_Store
-Thumbs.db
diff --git a/sandbox/airavata-kubernetes/web-console/README.md b/sandbox/airavata-kubernetes/web-console/README.md
deleted file mode 100644
index 62923ba..0000000
--- a/sandbox/airavata-kubernetes/web-console/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# WebConsole
-
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.4.9.
-
-## Build the docker image
-
-Run ng build
-docker build -t dimuthuupe/airavata-console:v1.0 .
-
-## Development server
-
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
-
-## Code scaffolding
-
-Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
-
-## Build
-
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
-
-## Running unit tests
-
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
-
-## Running end-to-end tests
-
-Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
-
-## Further help
-
-To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
diff --git a/sandbox/airavata-kubernetes/web-console/docker/Dockerfile b/sandbox/airavata-kubernetes/web-console/docker/Dockerfile
deleted file mode 100644
index 4cc00f2..0000000
--- a/sandbox/airavata-kubernetes/web-console/docker/Dockerfile
+++ /dev/null
@@ -1,2 +0,0 @@
-FROM nginx:alpine
-COPY dist/ /usr/share/nginx/html
diff --git a/sandbox/airavata-kubernetes/web-console/e2e/app.e2e-spec.ts b/sandbox/airavata-kubernetes/web-console/e2e/app.e2e-spec.ts
deleted file mode 100644
index 9ea2190..0000000
--- a/sandbox/airavata-kubernetes/web-console/e2e/app.e2e-spec.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { AppPage } from './app.po';
-
-describe('web-console App', () => {
-  let page: AppPage;
-
-  beforeEach(() => {
-    page = new AppPage();
-  });
-
-  it('should display welcome message', () => {
-    page.navigateTo();
-    expect(page.getParagraphText()).toEqual('Welcome to app!');
-  });
-});
diff --git a/sandbox/airavata-kubernetes/web-console/e2e/app.po.ts b/sandbox/airavata-kubernetes/web-console/e2e/app.po.ts
deleted file mode 100644
index 82ea75b..0000000
--- a/sandbox/airavata-kubernetes/web-console/e2e/app.po.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { browser, by, element } from 'protractor';
-
-export class AppPage {
-  navigateTo() {
-    return browser.get('/');
-  }
-
-  getParagraphText() {
-    return element(by.css('app-root h1')).getText();
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/e2e/tsconfig.e2e.json b/sandbox/airavata-kubernetes/web-console/e2e/tsconfig.e2e.json
deleted file mode 100644
index 1d9e5ed..0000000
--- a/sandbox/airavata-kubernetes/web-console/e2e/tsconfig.e2e.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "extends": "../tsconfig.json",
-  "compilerOptions": {
-    "outDir": "../out-tsc/e2e",
-    "baseUrl": "./",
-    "module": "commonjs",
-    "target": "es5",
-    "types": [
-      "jasmine",
-      "jasminewd2",
-      "node"
-    ]
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/karma.conf.js b/sandbox/airavata-kubernetes/web-console/karma.conf.js
deleted file mode 100644
index af139fa..0000000
--- a/sandbox/airavata-kubernetes/web-console/karma.conf.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Karma configuration file, see link for more information
-// https://karma-runner.github.io/1.0/config/configuration-file.html
-
-module.exports = function (config) {
-  config.set({
-    basePath: '',
-    frameworks: ['jasmine', '@angular/cli'],
-    plugins: [
-      require('karma-jasmine'),
-      require('karma-chrome-launcher'),
-      require('karma-jasmine-html-reporter'),
-      require('karma-coverage-istanbul-reporter'),
-      require('@angular/cli/plugins/karma')
-    ],
-    client:{
-      clearContext: false // leave Jasmine Spec Runner output visible in browser
-    },
-    coverageIstanbulReporter: {
-      reports: [ 'html', 'lcovonly' ],
-      fixWebpackSourcePaths: true
-    },
-    angularCli: {
-      environment: 'dev'
-    },
-    reporters: ['progress', 'kjhtml'],
-    port: 9876,
-    colors: true,
-    logLevel: config.LOG_INFO,
-    autoWatch: true,
-    browsers: ['Chrome'],
-    singleRun: false
-  });
-};
diff --git a/sandbox/airavata-kubernetes/web-console/package-lock.json b/sandbox/airavata-kubernetes/web-console/package-lock.json
deleted file mode 100644
index 7469f1d..0000000
--- a/sandbox/airavata-kubernetes/web-console/package-lock.json
+++ /dev/null
@@ -1,9608 +0,0 @@
-{
-  "name": "web-console",
-  "version": "0.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@angular-devkit/build-optimizer": {
-      "version": "0.0.31",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.31.tgz",
-      "integrity": "sha512-kkYmH5nxdr6kVr7FFBoUKnSuw0gjAZQlkN08jui7ts5yiHSWUqdOOASeLYlT50Mnz8PcnkFSrB2D5MXReGHvGg==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "source-map": "0.5.7",
-        "typescript": "2.3.4",
-        "webpack-sources": "1.0.1"
-      }
-    },
-    "@angular-devkit/core": {
-      "version": "0.0.20",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.0.20.tgz",
-      "integrity": "sha512-lg5BvMxOfbVD//SOQvpq6TPIKTXYNMj0I9N/kfXbXkUGgiBGFLyFMf2fc+qNvDoa7lulKMPT8OJWS1YlGt93eg==",
-      "dev": true,
-      "requires": {
-        "source-map": "0.5.7"
-      }
-    },
-    "@angular-devkit/schematics": {
-      "version": "0.0.34",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.0.34.tgz",
-      "integrity": "sha512-MMi8dAGZNn0MIsOtz4911UE3645SCqUTMTuYBXe/QYg5loGzn7i0dx0AY76bdOTbHbfZ6Edam4mzhU2KwHJy0Q==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "0.0.20",
-        "@ngtools/json-schema": "1.1.0",
-        "minimist": "1.2.0",
-        "rxjs": "5.5.2"
-      }
-    },
-    "@angular/animations": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.4.6.tgz",
-      "integrity": "sha1-+mYYmaik44y3xYPHpcl85l1ZKjU=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/cli": {
-      "version": "1.4.9",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.4.9.tgz",
-      "integrity": "sha512-B3jRygC7MMVAmAD7tvsgCx/54EncEgPqCQfTRQq7nIKLe2dh1yGCxfPkKl94/HU703a1tdJxpLxC+xEn0+v84Q==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/build-optimizer": "0.0.31",
-        "@angular-devkit/schematics": "0.0.34",
-        "@ngtools/json-schema": "1.1.0",
-        "@ngtools/webpack": "1.7.4",
-        "@schematics/angular": "0.0.48",
-        "autoprefixer": "6.7.7",
-        "chalk": "2.3.0",
-        "circular-dependency-plugin": "3.0.0",
-        "common-tags": "1.4.0",
-        "copy-webpack-plugin": "4.2.0",
-        "core-object": "3.1.5",
-        "css-loader": "0.28.7",
-        "cssnano": "3.10.0",
-        "denodeify": "1.2.1",
-        "ember-cli-string-utils": "1.1.0",
-        "exports-loader": "0.6.4",
-        "extract-text-webpack-plugin": "3.0.0",
-        "file-loader": "1.1.5",
-        "fs-extra": "4.0.2",
-        "glob": "7.1.2",
-        "html-webpack-plugin": "2.30.1",
-        "istanbul-instrumenter-loader": "2.0.0",
-        "karma-source-map-support": "1.2.0",
-        "less": "2.7.3",
-        "less-loader": "4.0.5",
-        "license-webpack-plugin": "1.1.1",
-        "lodash": "4.17.4",
-        "memory-fs": "0.4.1",
-        "node-modules-path": "1.0.1",
-        "node-sass": "4.5.3",
-        "nopt": "4.0.1",
-        "opn": "5.1.0",
-        "portfinder": "1.0.13",
-        "postcss-loader": "1.3.3",
-        "postcss-url": "5.1.2",
-        "raw-loader": "0.5.1",
-        "resolve": "1.5.0",
-        "rxjs": "5.5.2",
-        "sass-loader": "6.0.6",
-        "semver": "5.4.1",
-        "silent-error": "1.1.0",
-        "source-map-loader": "0.2.3",
-        "source-map-support": "0.4.18",
-        "style-loader": "0.13.2",
-        "stylus": "0.54.5",
-        "stylus-loader": "3.0.1",
-        "typescript": "2.3.4",
-        "url-loader": "0.6.2",
-        "webpack": "3.7.1",
-        "webpack-concat-plugin": "1.4.0",
-        "webpack-dev-middleware": "1.12.0",
-        "webpack-dev-server": "2.7.1",
-        "webpack-merge": "4.1.0",
-        "webpack-sources": "1.0.1",
-        "zone.js": "0.8.18"
-      }
-    },
-    "@angular/common": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.6.tgz",
-      "integrity": "sha1-S4FCByTggooOg5uVpV6xp+g5GPI=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/compiler": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.6.tgz",
-      "integrity": "sha1-LuH68lt1fh0SiXkHS+f65SmzvCA=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/compiler-cli": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.6.tgz",
-      "integrity": "sha1-uv09HiYOmQh+uajPdTLb1gOrubE=",
-      "dev": true,
-      "requires": {
-        "@angular/tsc-wrapped": "4.4.6",
-        "minimist": "1.2.0",
-        "reflect-metadata": "0.1.10"
-      }
-    },
-    "@angular/core": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.6.tgz",
-      "integrity": "sha1-EwMf0Q3P5DiHVBmzjyESCVi8I1Q=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/forms": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.4.6.tgz",
-      "integrity": "sha1-/mSs5CQ1wbgPSQNLfEHOjK8UpEo=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/http": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.6.tgz",
-      "integrity": "sha1-CvaAxnEL3AJtlA4iXP0PalwAXQw=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/language-service": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-4.4.6.tgz",
-      "integrity": "sha1-SY7OlcX2BmQDv5/TxYMa9CtFYYs=",
-      "dev": true
-    },
-    "@angular/platform-browser": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.6.tgz",
-      "integrity": "sha1-qYOcVH4bZU+h0kqJeAyLpquNzOA=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/platform-browser-dynamic": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.4.6.tgz",
-      "integrity": "sha1-TT2aanvyzz3kBYphWuBZ7/ZB+jY=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/router": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.4.6.tgz",
-      "integrity": "sha1-D2rSmuD/jSyeo3m9MgRHIXt+yGY=",
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "@angular/tsc-wrapped": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.6.tgz",
-      "integrity": "sha1-Fnh8u/UL3H5zgSOxnDJSfyROF40=",
-      "dev": true,
-      "requires": {
-        "tsickle": "0.21.6"
-      }
-    },
-    "@ng-bootstrap/ng-bootstrap": {
-      "version": "1.0.0-beta.5",
-      "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-1.0.0-beta.5.tgz",
-      "integrity": "sha1-2iuQZrNwGihMrFoWFop33vlHtKs="
-    },
-    "@ngtools/json-schema": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz",
-      "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=",
-      "dev": true
-    },
-    "@ngtools/webpack": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.7.4.tgz",
-      "integrity": "sha512-o0u1Oj1k1WEIamBNEncvXDWmUxCMDIlKrMFp4nIwh7bag4dndDShUVD1EinSpx1TvMjVbA42Z+7cIVmlq+240Q==",
-      "dev": true,
-      "requires": {
-        "enhanced-resolve": "3.4.1",
-        "loader-utils": "1.1.0",
-        "magic-string": "0.22.4",
-        "source-map": "0.5.7"
-      }
-    },
-    "@schematics/angular": {
-      "version": "0.0.48",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.0.48.tgz",
-      "integrity": "sha512-c68ckw4yUbuEM0TTs2Scg5HrDjNPvbiGsoukm5K/fpQ8Ori4lXRLEaIxqnyVpnCV4coUtb1B7/qsBCUR2Cr2SA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "0.0.20"
-      }
-    },
-    "@types/jasmine": {
-      "version": "2.5.54",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.54.tgz",
-      "integrity": "sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg==",
-      "dev": true
-    },
-    "@types/jasminewd2": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz",
-      "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==",
-      "dev": true,
-      "requires": {
-        "@types/jasmine": "2.5.54"
-      }
-    },
-    "@types/node": {
-      "version": "6.0.90",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz",
-      "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==",
-      "dev": true
-    },
-    "@types/q": {
-      "version": "0.0.32",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
-      "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
-      "dev": true
-    },
-    "@types/selenium-webdriver": {
-      "version": "2.53.42",
-      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz",
-      "integrity": "sha1-dMt3+2BS7a/yqJhN2v2I1BnyXKw=",
-      "dev": true
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "accepts": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
-      "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
-      "dev": true,
-      "requires": {
-        "mime-types": "2.1.17",
-        "negotiator": "0.6.1"
-      }
-    },
-    "acorn": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz",
-      "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==",
-      "dev": true
-    },
-    "acorn-dynamic-import": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
-      "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
-      "dev": true,
-      "requires": {
-        "acorn": "4.0.13"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "4.0.13",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
-          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
-          "dev": true
-        }
-      }
-    },
-    "adm-zip": {
-      "version": "0.4.7",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz",
-      "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=",
-      "dev": true
-    },
-    "after": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
-      "dev": true
-    },
-    "agent-base": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
-      "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
-      "dev": true,
-      "requires": {
-        "extend": "3.0.1",
-        "semver": "5.0.3"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.0.3",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
-          "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
-          "dev": true
-        }
-      }
-    },
-    "ajv": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
-      "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
-      "dev": true,
-      "requires": {
-        "co": "4.6.0",
-        "fast-deep-equal": "1.0.0",
-        "fast-json-stable-stringify": "2.0.0",
-        "json-schema-traverse": "0.3.1"
-      }
-    },
-    "ajv-keywords": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz",
-      "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=",
-      "dev": true
-    },
-    "align-text": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
-      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
-      "dev": true,
-      "requires": {
-        "kind-of": "3.2.2",
-        "longest": "1.0.1",
-        "repeat-string": "1.6.1"
-      }
-    },
-    "alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
-      "dev": true
-    },
-    "amdefine": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
-      "dev": true
-    },
-    "ansi-html": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
-      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
-      "dev": true
-    },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-      "dev": true
-    },
-    "anymatch": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
-      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
-      "dev": true,
-      "requires": {
-        "micromatch": "2.3.11",
-        "normalize-path": "2.1.1"
-      }
-    },
-    "app-root-path": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz",
-      "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=",
-      "dev": true
-    },
-    "append-transform": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
-      "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
-      "dev": true,
-      "requires": {
-        "default-require-extensions": "1.0.0"
-      }
-    },
-    "aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-      "dev": true
-    },
-    "are-we-there-yet": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
-      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
-      "dev": true,
-      "requires": {
-        "delegates": "1.0.0",
-        "readable-stream": "2.3.3"
-      }
-    },
-    "argparse": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
-      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
-      "dev": true,
-      "requires": {
-        "sprintf-js": "1.0.3"
-      }
-    },
-    "arr-diff": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
-      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
-      "dev": true,
-      "requires": {
-        "arr-flatten": "1.1.0"
-      }
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true
-    },
-    "array-find-index": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
-    },
-    "array-flatten": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
-      "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
-      "dev": true
-    },
-    "array-slice": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
-      "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
-      "dev": true
-    },
-    "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "dev": true,
-      "requires": {
-        "array-uniq": "1.0.3"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
-      "dev": true
-    },
-    "array-unique": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
-      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
-      "dev": true
-    },
-    "arraybuffer.slice": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
-      "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
-      "dev": true
-    },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true
-    },
-    "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
-      "dev": true,
-      "optional": true
-    },
-    "asn1": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
-      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
-      "dev": true
-    },
-    "asn1.js": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz",
-      "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.0"
-      }
-    },
-    "assert": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
-      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
-      "dev": true,
-      "requires": {
-        "util": "0.10.3"
-      }
-    },
-    "assert-plus": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
-      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
-      "dev": true
-    },
-    "async": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
-      "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
-      "dev": true,
-      "requires": {
-        "lodash": "4.17.4"
-      }
-    },
-    "async-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
-      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
-      "dev": true
-    },
-    "async-foreach": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
-      "dev": true,
-      "optional": true
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
-    },
-    "autoprefixer": {
-      "version": "6.7.7",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
-      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
-      "dev": true,
-      "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-db": "1.0.30000755",
-        "normalize-range": "0.1.2",
-        "num2fraction": "1.2.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "aws-sign2": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
-      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
-      "dev": true
-    },
-    "aws4": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
-      "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
-      "dev": true
-    },
-    "babel-code-frame": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
-      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
-      "dev": true,
-      "requires": {
-        "chalk": "1.1.3",
-        "esutils": "2.0.2",
-        "js-tokens": "3.0.2"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
-    "babel-generator": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
-      "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
-      "dev": true,
-      "requires": {
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "detect-indent": "4.0.0",
-        "jsesc": "1.3.0",
-        "lodash": "4.17.4",
-        "source-map": "0.5.7",
-        "trim-right": "1.0.1"
-      },
-      "dependencies": {
-        "jsesc": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
-          "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
-          "dev": true
-        }
-      }
-    },
-    "babel-messages": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
-      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "6.26.0"
-      }
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dev": true,
-      "requires": {
-        "core-js": "2.5.1",
-        "regenerator-runtime": "0.11.0"
-      }
-    },
-    "babel-template": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
-      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "lodash": "4.17.4"
-      }
-    },
-    "babel-traverse": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
-      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "6.26.0",
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "debug": "2.6.9",
-        "globals": "9.18.0",
-        "invariant": "2.2.2",
-        "lodash": "4.17.4"
-      }
-    },
-    "babel-types": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
-      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "6.26.0",
-        "esutils": "2.0.2",
-        "lodash": "4.17.4",
-        "to-fast-properties": "1.0.3"
-      }
-    },
-    "babylon": {
-      "version": "6.18.0",
-      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
-      "dev": true
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
-    },
-    "base64-arraybuffer": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
-      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
-      "dev": true
-    },
-    "base64-js": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
-      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
-      "dev": true
-    },
-    "base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
-      "dev": true
-    },
-    "batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
-      "dev": true
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
-      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "tweetnacl": "0.14.5"
-      }
-    },
-    "better-assert": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
-      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
-      "dev": true,
-      "requires": {
-        "callsite": "1.0.0"
-      }
-    },
-    "big.js": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
-      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
-      "dev": true
-    },
-    "binary-extensions": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
-      "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
-      "dev": true
-    },
-    "blob": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
-      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
-      "dev": true
-    },
-    "block-stream": {
-      "version": "0.0.9",
-      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
-      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "inherits": "2.0.3"
-      }
-    },
-    "blocking-proxy": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz",
-      "integrity": "sha1-RikF4Nz76pcPQao3Ij3anAexkSs=",
-      "dev": true,
-      "requires": {
-        "minimist": "1.2.0"
-      }
-    },
-    "bluebird": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
-      "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
-      "dev": true
-    },
-    "bn.js": {
-      "version": "4.11.8",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
-      "dev": true
-    },
-    "body-parser": {
-      "version": "1.18.2",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
-      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
-      "dev": true,
-      "requires": {
-        "bytes": "3.0.0",
-        "content-type": "1.0.4",
-        "debug": "2.6.9",
-        "depd": "1.1.1",
-        "http-errors": "1.6.2",
-        "iconv-lite": "0.4.19",
-        "on-finished": "2.3.0",
-        "qs": "6.5.1",
-        "raw-body": "2.3.2",
-        "type-is": "1.6.15"
-      },
-      "dependencies": {
-        "qs": {
-          "version": "6.5.1",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
-          "dev": true
-        }
-      }
-    },
-    "bonjour": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
-      "dev": true,
-      "requires": {
-        "array-flatten": "2.1.1",
-        "deep-equal": "1.0.1",
-        "dns-equal": "1.0.0",
-        "dns-txt": "2.0.2",
-        "multicast-dns": "6.1.1",
-        "multicast-dns-service-types": "1.1.0"
-      }
-    },
-    "boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
-      "dev": true
-    },
-    "boom": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
-      "dev": true,
-      "requires": {
-        "hoek": "2.16.3"
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
-      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
-      "dev": true,
-      "requires": {
-        "balanced-match": "1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
-      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
-      "dev": true,
-      "requires": {
-        "expand-range": "1.8.2",
-        "preserve": "0.2.0",
-        "repeat-element": "1.1.2"
-      }
-    },
-    "brorand": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
-      "dev": true
-    },
-    "browserify-aes": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
-      "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
-      "dev": true,
-      "requires": {
-        "buffer-xor": "1.0.3",
-        "cipher-base": "1.0.4",
-        "create-hash": "1.1.3",
-        "evp_bytestokey": "1.0.3",
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "browserify-cipher": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
-      "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
-      "dev": true,
-      "requires": {
-        "browserify-aes": "1.1.1",
-        "browserify-des": "1.0.0",
-        "evp_bytestokey": "1.0.3"
-      }
-    },
-    "browserify-des": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
-      "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
-      "dev": true,
-      "requires": {
-        "cipher-base": "1.0.4",
-        "des.js": "1.0.0",
-        "inherits": "2.0.3"
-      }
-    },
-    "browserify-rsa": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
-      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "randombytes": "2.0.5"
-      }
-    },
-    "browserify-sign": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
-      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.1.3",
-        "create-hmac": "1.1.6",
-        "elliptic": "6.4.0",
-        "inherits": "2.0.3",
-        "parse-asn1": "5.1.0"
-      }
-    },
-    "browserify-zlib": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
-      "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
-      "dev": true,
-      "requires": {
-        "pako": "0.2.9"
-      }
-    },
-    "browserslist": {
-      "version": "1.7.7",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
-      "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
-      "dev": true,
-      "requires": {
-        "caniuse-db": "1.0.30000755",
-        "electron-to-chromium": "1.3.27"
-      }
-    },
-    "buffer": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
-      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
-      "dev": true,
-      "requires": {
-        "base64-js": "1.2.1",
-        "ieee754": "1.1.8",
-        "isarray": "1.0.0"
-      }
-    },
-    "buffer-indexof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
-      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
-      "dev": true
-    },
-    "buffer-xor": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
-      "dev": true
-    },
-    "builtin-modules": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
-      "dev": true
-    },
-    "builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
-      "dev": true
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
-      "dev": true
-    },
-    "callsite": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
-      "dev": true
-    },
-    "camel-case": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
-      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
-      "dev": true,
-      "requires": {
-        "no-case": "2.3.2",
-        "upper-case": "1.1.3"
-      }
-    },
-    "camelcase": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-      "dev": true
-    },
-    "camelcase-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
-      "requires": {
-        "camelcase": "2.1.1",
-        "map-obj": "1.0.1"
-      }
-    },
-    "caniuse-api": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
-      "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
-      "dev": true,
-      "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-db": "1.0.30000755",
-        "lodash.memoize": "4.1.2",
-        "lodash.uniq": "4.5.0"
-      }
-    },
-    "caniuse-db": {
-      "version": "1.0.30000755",
-      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000755.tgz",
-      "integrity": "sha1-oIxUfDnb5K0H3MqXY/y7/wyJHeA=",
-      "dev": true
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
-    },
-    "center-align": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
-      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
-      "dev": true,
-      "requires": {
-        "align-text": "0.1.4",
-        "lazy-cache": "1.0.4"
-      },
-      "dependencies": {
-        "lazy-cache": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
-          "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
-          "dev": true
-        }
-      }
-    },
-    "chalk": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
-      "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "3.2.0",
-        "escape-string-regexp": "1.0.5",
-        "supports-color": "4.5.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
-          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
-          "dev": true,
-          "requires": {
-            "color-convert": "1.9.0"
-          }
-        },
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "charenc": {
-      "version": "0.0.2",
-      "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
-      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
-      "dev": true
-    },
-    "chokidar": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
-      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
-      "dev": true,
-      "requires": {
-        "anymatch": "1.3.2",
-        "async-each": "1.0.1",
-        "fsevents": "1.1.2",
-        "glob-parent": "2.0.0",
-        "inherits": "2.0.3",
-        "is-binary-path": "1.0.1",
-        "is-glob": "2.0.1",
-        "path-is-absolute": "1.0.1",
-        "readdirp": "2.1.0"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "1.0.0"
-          }
-        }
-      }
-    },
-    "cipher-base": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "circular-dependency-plugin": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-3.0.0.tgz",
-      "integrity": "sha1-m2hpLjWw41EJmNAWS2rlARvqV2A=",
-      "dev": true
-    },
-    "clap": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
-      "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
-      "dev": true,
-      "requires": {
-        "chalk": "1.1.3"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
-    "clean-css": {
-      "version": "4.1.9",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz",
-      "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=",
-      "dev": true,
-      "requires": {
-        "source-map": "0.5.7"
-      }
-    },
-    "cliui": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "dev": true,
-      "requires": {
-        "string-width": "1.0.2",
-        "strip-ansi": "3.0.1",
-        "wrap-ansi": "2.1.0"
-      }
-    },
-    "clone": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
-      "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
-      "dev": true
-    },
-    "clone-deep": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz",
-      "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=",
-      "dev": true,
-      "requires": {
-        "for-own": "1.0.0",
-        "is-plain-object": "2.0.4",
-        "kind-of": "3.2.2",
-        "shallow-clone": "0.1.2"
-      }
-    },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
-    },
-    "coa": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
-      "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
-      "dev": true,
-      "requires": {
-        "q": "1.5.1"
-      }
-    },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true
-    },
-    "codelyzer": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.2.2.tgz",
-      "integrity": "sha512-VNvW9gRThsqRarEnLioiILd0Pdk0yCq/7cVgYvqHpC+3CHqfnrJfmXjoana7vzWfSis+9pODXofjCWX+nlU9Gw==",
-      "dev": true,
-      "requires": {
-        "app-root-path": "2.0.1",
-        "css-selector-tokenizer": "0.7.0",
-        "cssauron": "1.4.0",
-        "semver-dsl": "1.0.1",
-        "source-map": "0.5.7",
-        "sprintf-js": "1.0.3"
-      }
-    },
-    "color": {
-      "version": "0.11.4",
-      "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
-      "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
-      "dev": true,
-      "requires": {
-        "clone": "1.0.2",
-        "color-convert": "1.9.0",
-        "color-string": "0.3.0"
-      }
-    },
-    "color-convert": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
-      "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
-    },
-    "color-string": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
-      "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "colormin": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
-      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
-      "dev": true,
-      "requires": {
-        "color": "0.11.4",
-        "css-color-names": "0.0.4",
-        "has": "1.0.1"
-      }
-    },
-    "colors": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
-      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
-      "dev": true
-    },
-    "combine-lists": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
-      "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
-      "dev": true,
-      "requires": {
-        "lodash": "4.17.4"
-      }
-    },
-    "combined-stream": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
-      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
-      "dev": true,
-      "requires": {
-        "delayed-stream": "1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
-      "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
-      "dev": true
-    },
-    "common-tags": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz",
-      "integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "6.26.0"
-      }
-    },
-    "component-bind": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
-      "dev": true
-    },
-    "component-emitter": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
-      "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
-      "dev": true
-    },
-    "component-inherit": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
-      "dev": true
-    },
-    "compressible": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
-      "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
-      "dev": true,
-      "requires": {
-        "mime-db": "1.30.0"
-      }
-    },
-    "compression": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz",
-      "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
-      "dev": true,
-      "requires": {
-        "accepts": "1.3.4",
-        "bytes": "3.0.0",
-        "compressible": "2.0.12",
-        "debug": "2.6.9",
-        "on-headers": "1.0.1",
-        "safe-buffer": "5.1.1",
-        "vary": "1.1.2"
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "connect": {
-      "version": "3.6.5",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz",
-      "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "finalhandler": "1.0.6",
-        "parseurl": "1.3.2",
-        "utils-merge": "1.0.1"
-      },
-      "dependencies": {
-        "finalhandler": {
-          "version": "1.0.6",
-          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz",
-          "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=",
-          "dev": true,
-          "requires": {
-            "debug": "2.6.9",
-            "encodeurl": "1.0.1",
-            "escape-html": "1.0.3",
-            "on-finished": "2.3.0",
-            "parseurl": "1.3.2",
-            "statuses": "1.3.1",
-            "unpipe": "1.0.0"
-          }
-        }
-      }
-    },
-    "connect-history-api-fallback": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz",
-      "integrity": "sha1-PbJPlz9LkjsOgvYZzg3wJBHKYj0=",
-      "dev": true
-    },
-    "console-browserify": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
-      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
-      "dev": true,
-      "requires": {
-        "date-now": "0.1.4"
-      }
-    },
-    "console-control-strings": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "dev": true
-    },
-    "constants-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
-      "dev": true
-    },
-    "content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
-      "dev": true
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "dev": true
-    },
-    "convert-source-map": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
-      "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
-      "dev": true
-    },
-    "cookie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
-      "dev": true
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
-      "dev": true
-    },
-    "copy-webpack-plugin": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.0.tgz",
-      "integrity": "sha512-eZERim02YjJcepLjrToQMapOoRLfiXewJi9zJON6xXNNJSUhkGzL1L/yFjOufS0KxsnWUzc2szg9t8ZaZKJXAg==",
-      "dev": true,
-      "requires": {
-        "bluebird": "3.5.1",
-        "fs-extra": "4.0.2",
-        "glob": "7.1.2",
-        "is-glob": "4.0.0",
-        "loader-utils": "0.2.17",
-        "lodash": "4.17.4",
-        "minimatch": "3.0.4",
-        "node-dir": "0.1.17"
-      },
-      "dependencies": {
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
-          "dev": true,
-          "requires": {
-            "big.js": "3.2.0",
-            "emojis-list": "2.1.0",
-            "json5": "0.5.1",
-            "object-assign": "4.1.1"
-          }
-        }
-      }
-    },
-    "core-js": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
-      "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs="
-    },
-    "core-object": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/core-object/-/core-object-3.1.5.tgz",
-      "integrity": "sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg==",
-      "dev": true,
-      "requires": {
-        "chalk": "2.3.0"
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
-    },
-    "cosmiconfig": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
-      "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
-      "dev": true,
-      "requires": {
-        "is-directory": "0.3.1",
-        "js-yaml": "3.7.0",
-        "minimist": "1.2.0",
-        "object-assign": "4.1.1",
-        "os-homedir": "1.0.2",
-        "parse-json": "2.2.0",
-        "require-from-string": "1.2.1"
-      }
-    },
-    "create-ecdh": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
-      "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "elliptic": "6.4.0"
-      }
-    },
-    "create-hash": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
-      "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
-      "dev": true,
-      "requires": {
-        "cipher-base": "1.0.4",
-        "inherits": "2.0.3",
-        "ripemd160": "2.0.1",
-        "sha.js": "2.4.9"
-      }
-    },
-    "create-hmac": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
-      "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
-      "dev": true,
-      "requires": {
-        "cipher-base": "1.0.4",
-        "create-hash": "1.1.3",
-        "inherits": "2.0.3",
-        "ripemd160": "2.0.1",
-        "safe-buffer": "5.1.1",
-        "sha.js": "2.4.9"
-      }
-    },
-    "cross-spawn": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
-      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "lru-cache": "4.1.1",
-        "which": "1.3.0"
-      }
-    },
-    "crypt": {
-      "version": "0.0.2",
-      "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
-      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
-      "dev": true
-    },
-    "cryptiles": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
-      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
-      "dev": true,
-      "requires": {
-        "boom": "2.10.1"
-      }
-    },
-    "crypto-browserify": {
-      "version": "3.11.1",
-      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz",
-      "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==",
-      "dev": true,
-      "requires": {
-        "browserify-cipher": "1.0.0",
-        "browserify-sign": "4.0.4",
-        "create-ecdh": "4.0.0",
-        "create-hash": "1.1.3",
-        "create-hmac": "1.1.6",
-        "diffie-hellman": "5.0.2",
-        "inherits": "2.0.3",
-        "pbkdf2": "3.0.14",
-        "public-encrypt": "4.0.0",
-        "randombytes": "2.0.5"
-      }
-    },
-    "css-color-names": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
-      "dev": true
-    },
-    "css-loader": {
-      "version": "0.28.7",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz",
-      "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "6.26.0",
-        "css-selector-tokenizer": "0.7.0",
-        "cssnano": "3.10.0",
-        "icss-utils": "2.1.0",
-        "loader-utils": "1.1.0",
-        "lodash.camelcase": "4.3.0",
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-modules-extract-imports": "1.1.0",
-        "postcss-modules-local-by-default": "1.2.0",
-        "postcss-modules-scope": "1.1.0",
-        "postcss-modules-values": "1.3.0",
-        "postcss-value-parser": "3.3.0",
-        "source-list-map": "2.0.0"
-      }
-    },
-    "css-parse": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
-      "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
-      "dev": true
-    },
-    "css-select": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
-      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
-      "dev": true,
-      "requires": {
-        "boolbase": "1.0.0",
-        "css-what": "2.1.0",
-        "domutils": "1.5.1",
-        "nth-check": "1.0.1"
-      }
-    },
-    "css-selector-tokenizer": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
-      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
-      "dev": true,
-      "requires": {
-        "cssesc": "0.1.0",
-        "fastparse": "1.1.1",
-        "regexpu-core": "1.0.0"
-      }
-    },
-    "css-what": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
-      "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
-      "dev": true
-    },
-    "cssauron": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
-      "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
-      "dev": true,
-      "requires": {
-        "through": "2.3.8"
-      }
-    },
-    "cssesc": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
-      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
-      "dev": true
-    },
-    "cssnano": {
-      "version": "3.10.0",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
-      "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
-      "dev": true,
-      "requires": {
-        "autoprefixer": "6.7.7",
-        "decamelize": "1.2.0",
-        "defined": "1.0.0",
-        "has": "1.0.1",
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-calc": "5.3.1",
-        "postcss-colormin": "2.2.2",
-        "postcss-convert-values": "2.6.1",
-        "postcss-discard-comments": "2.0.4",
-        "postcss-discard-duplicates": "2.1.0",
-        "postcss-discard-empty": "2.1.0",
-        "postcss-discard-overridden": "0.1.1",
-        "postcss-discard-unused": "2.2.3",
-        "postcss-filter-plugins": "2.0.2",
-        "postcss-merge-idents": "2.1.7",
-        "postcss-merge-longhand": "2.0.2",
-        "postcss-merge-rules": "2.1.2",
-        "postcss-minify-font-values": "1.0.5",
-        "postcss-minify-gradients": "1.0.5",
-        "postcss-minify-params": "1.2.2",
-        "postcss-minify-selectors": "2.1.1",
-        "postcss-normalize-charset": "1.1.1",
-        "postcss-normalize-url": "3.0.8",
-        "postcss-ordered-values": "2.2.3",
-        "postcss-reduce-idents": "2.4.0",
-        "postcss-reduce-initial": "1.0.1",
-        "postcss-reduce-transforms": "1.0.4",
-        "postcss-svgo": "2.1.6",
-        "postcss-unique-selectors": "2.0.2",
-        "postcss-value-parser": "3.3.0",
-        "postcss-zindex": "2.2.0"
-      }
-    },
-    "csso": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
-      "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
-      "dev": true,
-      "requires": {
-        "clap": "1.2.3",
-        "source-map": "0.5.7"
-      }
-    },
-    "currently-unhandled": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
-      "requires": {
-        "array-find-index": "1.0.2"
-      }
-    },
-    "custom-event": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
-      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
-      "dev": true
-    },
-    "d": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
-      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
-      "dev": true,
-      "requires": {
-        "es5-ext": "0.10.35"
-      }
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "date-now": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
-      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
-      "dev": true
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
-    },
-    "deep-equal": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
-      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
-      "dev": true
-    },
-    "default-require-extensions": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
-      "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
-      "dev": true,
-      "requires": {
-        "strip-bom": "2.0.0"
-      }
-    },
-    "defined": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
-      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
-      "dev": true
-    },
-    "del": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
-      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
-      "dev": true,
-      "requires": {
-        "globby": "6.1.0",
-        "is-path-cwd": "1.0.0",
-        "is-path-in-cwd": "1.0.0",
-        "p-map": "1.2.0",
-        "pify": "3.0.0",
-        "rimraf": "2.6.2"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true
-    },
-    "delegates": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "dev": true
-    },
-    "denodeify": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
-      "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
-      "dev": true
-    },
-    "depd": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-      "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
-      "dev": true
-    },
-    "des.js": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
-      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.0"
-      }
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
-      "dev": true
-    },
-    "detect-indent": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
-      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
-      "dev": true,
-      "requires": {
-        "repeating": "2.0.1"
-      }
-    },
-    "detect-node": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
-      "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
-      "dev": true
-    },
-    "di": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
-      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
-      "dev": true
-    },
-    "diff": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz",
-      "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==",
-      "dev": true
-    },
-    "diffie-hellman": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
-      "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "miller-rabin": "4.0.1",
-        "randombytes": "2.0.5"
-      }
-    },
-    "directory-encoder": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/directory-encoder/-/directory-encoder-0.7.2.tgz",
-      "integrity": "sha1-WbTiqk8lQi9sY7UntGL14tDdLFg=",
-      "dev": true,
-      "requires": {
-        "fs-extra": "0.23.1",
-        "handlebars": "1.3.0",
-        "img-stats": "0.5.2"
-      },
-      "dependencies": {
-        "fs-extra": {
-          "version": "0.23.1",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz",
-          "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "4.1.11",
-            "jsonfile": "2.4.0",
-            "path-is-absolute": "1.0.1",
-            "rimraf": "2.6.2"
-          }
-        },
-        "jsonfile": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-          "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "4.1.11"
-          }
-        }
-      }
-    },
-    "dns-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
-      "dev": true
-    },
-    "dns-packet": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz",
-      "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==",
-      "dev": true,
-      "requires": {
-        "ip": "1.1.5",
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "dns-txt": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
-      "dev": true,
-      "requires": {
-        "buffer-indexof": "1.1.1"
-      }
-    },
-    "dom-converter": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
-      "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
-      "dev": true,
-      "requires": {
-        "utila": "0.3.3"
-      },
-      "dependencies": {
-        "utila": {
-          "version": "0.3.3",
-          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
-          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
-          "dev": true
-        }
-      }
-    },
-    "dom-serialize": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
-      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
-      "dev": true,
-      "requires": {
-        "custom-event": "1.0.1",
-        "ent": "2.2.0",
-        "extend": "3.0.1",
-        "void-elements": "2.0.1"
-      }
-    },
-    "dom-serializer": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
-      "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.1.3",
-        "entities": "1.1.1"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
-          "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
-          "dev": true
-        }
-      }
-    },
-    "domain-browser": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
-      "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
-      "dev": true
-    },
-    "domelementtype": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
-      "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
-      "dev": true
-    },
-    "domhandler": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
-      "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.3.0"
-      }
-    },
-    "domutils": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
-      "dev": true,
-      "requires": {
-        "dom-serializer": "0.1.0",
-        "domelementtype": "1.3.0"
-      }
-    },
-    "ecc-jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
-      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "jsbn": "0.1.1"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
-      "dev": true
-    },
-    "ejs": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz",
-      "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=",
-      "dev": true
-    },
-    "electron-to-chromium": {
-      "version": "1.3.27",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz",
-      "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=",
-      "dev": true
-    },
-    "elliptic": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
-      "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0",
-        "hash.js": "1.1.3",
-        "hmac-drbg": "1.0.1",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.0",
-        "minimalistic-crypto-utils": "1.0.1"
-      }
-    },
-    "ember-cli-string-utils": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz",
-      "integrity": "sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE=",
-      "dev": true
-    },
-    "emojis-list": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
-      "dev": true
-    },
-    "encodeurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
-      "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
-      "dev": true
-    },
-    "engine.io": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
-      "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
-      "dev": true,
-      "requires": {
-        "accepts": "1.3.3",
-        "base64id": "1.0.0",
-        "cookie": "0.3.1",
-        "debug": "2.3.3",
-        "engine.io-parser": "1.3.2",
-        "ws": "1.1.2"
-      },
-      "dependencies": {
-        "accepts": {
-          "version": "1.3.3",
-          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
-          "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
-          "dev": true,
-          "requires": {
-            "mime-types": "2.1.17",
-            "negotiator": "0.6.1"
-          }
-        },
-        "debug": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
-          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.2"
-          }
-        },
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-          "dev": true
-        }
-      }
-    },
-    "engine.io-client": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz",
-      "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
-      "dev": true,
-      "requires": {
-        "component-emitter": "1.2.1",
-        "component-inherit": "0.0.3",
-        "debug": "2.3.3",
-        "engine.io-parser": "1.3.2",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "parsejson": "0.0.3",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "ws": "1.1.2",
-        "xmlhttprequest-ssl": "1.5.3",
-        "yeast": "0.1.2"
-      },
-      "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
-          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.2"
-          }
-        },
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-          "dev": true
-        }
-      }
-    },
-    "engine.io-parser": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
-      "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
-      "dev": true,
-      "requires": {
-        "after": "0.8.2",
-        "arraybuffer.slice": "0.0.6",
-        "base64-arraybuffer": "0.1.5",
-        "blob": "0.0.4",
-        "has-binary": "0.1.7",
-        "wtf-8": "1.0.0"
-      }
-    },
-    "enhanced-resolve": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
-      "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "memory-fs": "0.4.1",
-        "object-assign": "4.1.1",
-        "tapable": "0.2.8"
-      }
-    },
-    "ent": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
-      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
-      "dev": true
-    },
-    "entities": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
-      "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
-      "dev": true
-    },
-    "errno": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
-      "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
-      "dev": true,
-      "requires": {
-        "prr": "0.0.0"
-      }
-    },
-    "error-ex": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
-      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "0.2.1"
-      }
-    },
-    "es5-ext": {
-      "version": "0.10.35",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz",
-      "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=",
-      "dev": true,
-      "requires": {
-        "es6-iterator": "2.0.3",
-        "es6-symbol": "3.1.1"
-      }
-    },
-    "es6-iterator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35",
-        "es6-symbol": "3.1.1"
-      }
-    },
-    "es6-map": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
-      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35",
-        "es6-iterator": "2.0.3",
-        "es6-set": "0.1.5",
-        "es6-symbol": "3.1.1",
-        "event-emitter": "0.3.5"
-      }
-    },
-    "es6-set": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
-      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35",
-        "es6-iterator": "2.0.3",
-        "es6-symbol": "3.1.1",
-        "event-emitter": "0.3.5"
-      }
-    },
-    "es6-symbol": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
-      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35"
-      }
-    },
-    "es6-weak-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
-      "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35",
-        "es6-iterator": "2.0.3",
-        "es6-symbol": "3.1.1"
-      }
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
-      "dev": true
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true
-    },
-    "escope": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
-      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
-      "dev": true,
-      "requires": {
-        "es6-map": "0.1.5",
-        "es6-weak-map": "2.0.2",
-        "esrecurse": "4.2.0",
-        "estraverse": "4.2.0"
-      }
-    },
-    "esprima": {
-      "version": "2.7.3",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
-      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
-      "dev": true
-    },
-    "esrecurse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
-      "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
-      "dev": true,
-      "requires": {
-        "estraverse": "4.2.0",
-        "object-assign": "4.1.1"
-      }
-    },
-    "estraverse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
-      "dev": true
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
-      "dev": true
-    },
-    "event-emitter": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
-      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
-      "dev": true,
-      "requires": {
-        "d": "1.0.0",
-        "es5-ext": "0.10.35"
-      }
-    },
-    "eventemitter3": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
-      "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
-      "dev": true
-    },
-    "events": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
-      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
-      "dev": true
-    },
-    "eventsource": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
-      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
-      "dev": true,
-      "requires": {
-        "original": "1.0.0"
-      }
-    },
-    "evp_bytestokey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-      "dev": true,
-      "requires": {
-        "md5.js": "1.3.4",
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "execa": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
-      "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "5.1.0",
-        "get-stream": "3.0.0",
-        "is-stream": "1.1.0",
-        "npm-run-path": "2.0.2",
-        "p-finally": "1.0.0",
-        "signal-exit": "3.0.2",
-        "strip-eof": "1.0.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "4.1.1",
-            "shebang-command": "1.2.0",
-            "which": "1.3.0"
-          }
-        }
-      }
-    },
-    "exit": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
-      "dev": true
-    },
-    "expand-braces": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
-      "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
-      "dev": true,
-      "requires": {
-        "array-slice": "0.2.3",
-        "array-unique": "0.2.1",
-        "braces": "0.1.5"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
-          "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
-          "dev": true,
-          "requires": {
-            "expand-range": "0.1.1"
-          }
-        },
-        "expand-range": {
-          "version": "0.1.1",
-          "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
-          "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
-          "dev": true,
-          "requires": {
-            "is-number": "0.1.1",
-            "repeat-string": "0.2.2"
-          }
-        },
-        "is-number": {
-          "version": "0.1.1",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
-          "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
-          "dev": true
-        },
-        "repeat-string": {
-          "version": "0.2.2",
-          "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
-          "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
-          "dev": true
-        }
-      }
-    },
-    "expand-brackets": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
-      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
-      "dev": true,
-      "requires": {
-        "is-posix-bracket": "0.1.1"
-      }
-    },
-    "expand-range": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
-      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
-      "dev": true,
-      "requires": {
-        "fill-range": "2.2.3"
-      }
-    },
-    "exports-loader": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz",
-      "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "source-map": "0.5.7"
-      }
-    },
-    "express": {
-      "version": "4.16.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
-      "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
-      "dev": true,
-      "requires": {
-        "accepts": "1.3.4",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.18.2",
-        "content-disposition": "0.5.2",
-        "content-type": "1.0.4",
-        "cookie": "0.3.1",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "1.1.1",
-        "encodeurl": "1.0.1",
-        "escape-html": "1.0.3",
-        "etag": "1.8.1",
-        "finalhandler": "1.1.0",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "1.1.2",
-        "on-finished": "2.3.0",
-        "parseurl": "1.3.2",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "2.0.2",
-        "qs": "6.5.1",
-        "range-parser": "1.2.0",
-        "safe-buffer": "5.1.1",
-        "send": "0.16.1",
-        "serve-static": "1.13.1",
-        "setprototypeof": "1.1.0",
-        "statuses": "1.3.1",
-        "type-is": "1.6.15",
-        "utils-merge": "1.0.1",
-        "vary": "1.1.2"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.5.1",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
-          "dev": true
-        }
-      }
-    },
-    "extend": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
-      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
-      "dev": true
-    },
-    "extglob": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
-      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
-      "dev": true,
-      "requires": {
-        "is-extglob": "1.0.0"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        }
-      }
-    },
-    "extract-text-webpack-plugin": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz",
-      "integrity": "sha1-kMqnkHvESfM1AF46x1MrQbAN5hI=",
-      "dev": true,
-      "requires": {
-        "async": "2.5.0",
-        "loader-utils": "1.1.0",
-        "schema-utils": "0.3.0",
-        "webpack-sources": "1.0.1"
-      }
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-      "dev": true
-    },
-    "fast-deep-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
-      "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
-      "dev": true
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-      "dev": true
-    },
-    "fastparse": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
-      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
-      "dev": true
-    },
-    "faye-websocket": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
-      "dev": true,
-      "requires": {
-        "websocket-driver": "0.7.0"
-      }
-    },
-    "file-loader": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz",
-      "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "schema-utils": "0.3.0"
-      }
-    },
-    "filename-regex": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
-      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
-      "dev": true
-    },
-    "fileset": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
-      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
-      "dev": true,
-      "requires": {
-        "glob": "7.1.2",
-        "minimatch": "3.0.4"
-      }
-    },
-    "fill-range": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
-      "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
-      "dev": true,
-      "requires": {
-        "is-number": "2.1.0",
-        "isobject": "2.1.0",
-        "randomatic": "1.1.7",
-        "repeat-element": "1.1.2",
-        "repeat-string": "1.6.1"
-      },
-      "dependencies": {
-        "isobject": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-          "dev": true,
-          "requires": {
-            "isarray": "1.0.0"
-          }
-        }
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
-      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "1.0.1",
-        "escape-html": "1.0.3",
-        "on-finished": "2.3.0",
-        "parseurl": "1.3.2",
-        "statuses": "1.3.1",
-        "unpipe": "1.0.0"
-      }
-    },
-    "find-up": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-      "dev": true,
-      "requires": {
-        "path-exists": "2.1.0",
-        "pinkie-promise": "2.0.1"
-      }
-    },
-    "flatten": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
-      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
-      "dev": true
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-      "dev": true
-    },
-    "for-own": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
-      "dev": true,
-      "requires": {
-        "for-in": "1.0.2"
-      }
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-      "dev": true
-    },
-    "form-data": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
-      "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
-      "dev": true,
-      "requires": {
-        "asynckit": "0.4.0",
-        "combined-stream": "1.0.5",
-        "mime-types": "2.1.17"
-      }
-    },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
-      "dev": true
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
-      "dev": true
-    },
-    "fs-access": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
-      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
-      "dev": true,
-      "requires": {
-        "null-check": "1.0.0"
-      }
-    },
-    "fs-extra": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
-      "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "jsonfile": "4.0.0",
-        "universalify": "0.1.1"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz",
-      "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "nan": "2.7.0",
-        "node-pre-gyp": "0.6.36"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ajv": {
-          "version": "4.11.8",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "co": "4.6.0",
-            "json-stable-stringify": "1.0.1"
-          }
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true,
-          "dev": true
-        },
-        "aproba": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "delegates": "1.0.0",
-            "readable-stream": "2.2.9"
-          }
-        },
-        "asn1": {
-          "version": "0.2.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "assert-plus": {
-          "version": "0.2.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "asynckit": {
-          "version": "0.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "aws-sign2": {
-          "version": "0.6.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "aws4": {
-          "version": "1.6.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "balanced-match": {
-          "version": "0.4.2",
-          "bundled": true,
-          "dev": true
-        },
-        "bcrypt-pbkdf": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "tweetnacl": "0.14.5"
-          }
-        },
-        "block-stream": {
-          "version": "0.0.9",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "inherits": "2.0.3"
-          }
-        },
-        "boom": {
-          "version": "2.10.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "hoek": "2.16.3"
-          }
-        },
-        "brace-expansion": {
-          "version": "1.1.7",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "balanced-match": "0.4.2",
-            "concat-map": "0.0.1"
-          }
-        },
-        "buffer-shims": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true
-        },
-        "caseless": {
-          "version": "0.12.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "co": {
-          "version": "4.6.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true
-        },
-        "combined-stream": {
-          "version": "1.0.5",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "delayed-stream": "1.0.0"
-          }
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true,
-          "dev": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true
-        },
-        "cryptiles": {
-          "version": "2.0.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "boom": "2.10.1"
-          }
-        },
-        "dashdash": {
-          "version": "1.14.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "assert-plus": "1.0.0"
-          },
-          "dependencies": {
-            "assert-plus": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "debug": {
-          "version": "2.6.8",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "deep-extend": {
-          "version": "0.4.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "delayed-stream": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ecc-jsbn": {
-          "version": "0.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "jsbn": "0.1.1"
-          }
-        },
-        "extend": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "extsprintf": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true
-        },
-        "forever-agent": {
-          "version": "0.6.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "form-data": {
-          "version": "2.1.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "asynckit": "0.4.0",
-            "combined-stream": "1.0.5",
-            "mime-types": "2.1.15"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true
-        },
-        "fstream": {
-          "version": "1.0.11",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "graceful-fs": "4.1.11",
-            "inherits": "2.0.3",
-            "mkdirp": "0.5.1",
-            "rimraf": "2.6.1"
-          }
-        },
-        "fstream-ignore": {
-          "version": "1.0.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "fstream": "1.0.11",
-            "inherits": "2.0.3",
-            "minimatch": "3.0.4"
-          }
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aproba": "1.1.1",
-            "console-control-strings": "1.1.0",
-            "has-unicode": "2.0.1",
-            "object-assign": "4.1.1",
-            "signal-exit": "3.0.2",
-            "string-width": "1.0.2",
-            "strip-ansi": "3.0.1",
-            "wide-align": "1.1.2"
-          }
-        },
-        "getpass": {
-          "version": "0.1.7",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "assert-plus": "1.0.0"
-          },
-          "dependencies": {
-            "assert-plus": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "glob": {
-          "version": "7.1.2",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "fs.realpath": "1.0.0",
-            "inflight": "1.0.6",
-            "inherits": "2.0.3",
-            "minimatch": "3.0.4",
-            "once": "1.4.0",
-            "path-is-absolute": "1.0.1"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.1.11",
-          "bundled": true,
-          "dev": true
-        },
-        "har-schema": {
-          "version": "1.0.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "har-validator": {
-          "version": "4.2.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ajv": "4.11.8",
-            "har-schema": "1.0.5"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "hawk": {
-          "version": "3.1.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "boom": "2.10.1",
-            "cryptiles": "2.0.5",
-            "hoek": "2.16.3",
-            "sntp": "1.0.9"
-          }
-        },
-        "hoek": {
-          "version": "2.16.3",
-          "bundled": true,
-          "dev": true
-        },
-        "http-signature": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "assert-plus": "0.2.0",
-            "jsprim": "1.4.0",
-            "sshpk": "1.13.0"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "once": "1.4.0",
-            "wrappy": "1.0.2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true,
-          "dev": true
-        },
-        "ini": {
-          "version": "1.3.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "number-is-nan": "1.0.1"
-          }
-        },
-        "is-typedarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true
-        },
-        "isstream": {
-          "version": "0.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "jodid25519": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "jsbn": "0.1.1"
-          }
-        },
-        "jsbn": {
-          "version": "0.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "json-schema": {
-          "version": "0.2.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "json-stable-stringify": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "jsonify": "0.0.0"
-          }
-        },
-        "json-stringify-safe": {
-          "version": "5.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "jsonify": {
-          "version": "0.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "jsprim": {
-          "version": "1.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "assert-plus": "1.0.0",
-            "extsprintf": "1.0.2",
-            "json-schema": "0.2.3",
-            "verror": "1.3.6"
-          },
-          "dependencies": {
-            "assert-plus": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "mime-db": {
-          "version": "1.27.0",
-          "bundled": true,
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.15",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "mime-db": "1.27.0"
-          }
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "brace-expansion": "1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true,
-          "dev": true
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "node-pre-gyp": {
-          "version": "0.6.36",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "mkdirp": "0.5.1",
-            "nopt": "4.0.1",
-            "npmlog": "4.1.0",
-            "rc": "1.2.1",
-            "request": "2.81.0",
-            "rimraf": "2.6.1",
-            "semver": "5.3.0",
-            "tar": "2.2.1",
-            "tar-pack": "3.4.0"
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1.1.0",
-            "osenv": "0.1.4"
-          }
-        },
-        "npmlog": {
-          "version": "4.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "are-we-there-yet": "1.1.4",
-            "console-control-strings": "1.1.0",
-            "gauge": "2.7.4",
-            "set-blocking": "2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true
-        },
-        "oauth-sign": {
-          "version": "0.8.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "wrappy": "1.0.2"
-          }
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "osenv": {
-          "version": "0.1.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "os-homedir": "1.0.2",
-            "os-tmpdir": "1.0.2"
-          }
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true
-        },
-        "performance-now": {
-          "version": "0.2.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "process-nextick-args": {
-          "version": "1.0.7",
-          "bundled": true,
-          "dev": true
-        },
-        "punycode": {
-          "version": "1.4.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "qs": {
-          "version": "6.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "rc": {
-          "version": "1.2.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "deep-extend": "0.4.2",
-            "ini": "1.3.4",
-            "minimist": "1.2.0",
-            "strip-json-comments": "2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "readable-stream": {
-          "version": "2.2.9",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "buffer-shims": "1.0.0",
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "1.0.7",
-            "string_decoder": "1.0.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "request": {
-          "version": "2.81.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aws-sign2": "0.6.0",
-            "aws4": "1.6.0",
-            "caseless": "0.12.0",
-            "combined-stream": "1.0.5",
-            "extend": "3.0.1",
-            "forever-agent": "0.6.1",
-            "form-data": "2.1.4",
-            "har-validator": "4.2.1",
-            "hawk": "3.1.3",
-            "http-signature": "1.1.1",
-            "is-typedarray": "1.0.0",
-            "isstream": "0.1.2",
-            "json-stringify-safe": "5.0.1",
-            "mime-types": "2.1.15",
-            "oauth-sign": "0.8.2",
-            "performance-now": "0.2.0",
-            "qs": "6.4.0",
-            "safe-buffer": "5.0.1",
-            "stringstream": "0.0.5",
-            "tough-cookie": "2.3.2",
-            "tunnel-agent": "0.6.0",
-            "uuid": "3.0.1"
-          }
-        },
-        "rimraf": {
-          "version": "2.6.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "glob": "7.1.2"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.0.1",
-          "bundled": true,
-          "dev": true
-        },
-        "semver": {
-          "version": "5.3.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "sntp": {
-          "version": "1.0.9",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "hoek": "2.16.3"
-          }
-        },
-        "sshpk": {
-          "version": "1.13.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "asn1": "0.2.3",
-            "assert-plus": "1.0.0",
-            "bcrypt-pbkdf": "1.0.1",
-            "dashdash": "1.14.1",
-            "ecc-jsbn": "0.1.1",
-            "getpass": "0.1.7",
-            "jodid25519": "1.0.2",
-            "jsbn": "0.1.1",
-            "tweetnacl": "0.14.5"
-          },
-          "dependencies": {
-            "assert-plus": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "code-point-at": "1.1.0",
-            "is-fullwidth-code-point": "1.0.0",
-            "strip-ansi": "3.0.1"
-          }
-        },
-        "string_decoder": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.0.1"
-          }
-        },
-        "stringstream": {
-          "version": "0.0.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "ansi-regex": "2.1.1"
-          }
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "tar": {
-          "version": "2.2.1",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "block-stream": "0.0.9",
-            "fstream": "1.0.11",
-            "inherits": "2.0.3"
-          }
-        },
-        "tar-pack": {
-          "version": "3.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "debug": "2.6.8",
-            "fstream": "1.0.11",
-            "fstream-ignore": "1.0.5",
-            "once": "1.4.0",
-            "readable-stream": "2.2.9",
-            "rimraf": "2.6.1",
-            "tar": "2.2.1",
-            "uid-number": "0.0.6"
-          }
-        },
-        "tough-cookie": {
-          "version": "2.3.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "punycode": "1.4.1"
-          }
-        },
-        "tunnel-agent": {
-          "version": "0.6.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "5.0.1"
-          }
-        },
-        "tweetnacl": {
-          "version": "0.14.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "uid-number": {
-          "version": "0.0.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true
-        },
-        "uuid": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "verror": {
-          "version": "1.3.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "extsprintf": "1.0.2"
-          }
-        },
-        "wide-align": {
-          "version": "1.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "string-width": "1.0.2"
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true
-        }
-      }
-    },
-    "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "inherits": "2.0.3",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.2"
-      }
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "gauge": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "dev": true,
-      "requires": {
-        "aproba": "1.2.0",
-        "console-control-strings": "1.1.0",
-        "has-unicode": "2.0.1",
-        "object-assign": "4.1.1",
-        "signal-exit": "3.0.2",
-        "string-width": "1.0.2",
-        "strip-ansi": "3.0.1",
-        "wide-align": "1.1.2"
-      }
-    },
-    "gaze": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
-      "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "globule": "1.2.0"
-      }
-    },
-    "get-caller-file": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
-      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
-      "dev": true
-    },
-    "get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
-    },
-    "get-stream": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
-      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
-      "dev": true
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "glob": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "1.0.0",
-        "inflight": "1.0.6",
-        "inherits": "2.0.3",
-        "minimatch": "3.0.4",
-        "once": "1.4.0",
-        "path-is-absolute": "1.0.1"
-      }
-    },
-    "glob-base": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
-      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
-      "dev": true,
-      "requires": {
-        "glob-parent": "2.0.0",
-        "is-glob": "2.0.1"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "1.0.0"
-          }
-        }
-      }
-    },
-    "glob-parent": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
-      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
-      "dev": true,
-      "requires": {
-        "is-glob": "2.0.1"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "1.0.0"
-          }
-        }
-      }
-    },
-    "globals": {
-      "version": "9.18.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
-      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
-      "dev": true
-    },
-    "globby": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
-      "dev": true,
-      "requires": {
-        "array-union": "1.0.2",
-        "glob": "7.1.2",
-        "object-assign": "4.1.1",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1"
-      }
-    },
-    "globule": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
-      "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "glob": "7.1.2",
-        "lodash": "4.17.4",
-        "minimatch": "3.0.4"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
-      "dev": true
-    },
-    "handle-thing": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
-      "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
-      "dev": true
-    },
-    "handlebars": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.3.0.tgz",
-      "integrity": "sha1-npsTCpPjiUkTItl1zz7BgYw3zjQ=",
-      "dev": true,
-      "requires": {
-        "optimist": "0.3.7",
-        "uglify-js": "2.3.6"
-      },
-      "dependencies": {
-        "async": {
-          "version": "0.2.10",
-          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
-          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
-          "dev": true,
-          "optional": true
-        },
-        "source-map": {
-          "version": "0.1.43",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "amdefine": "1.0.1"
-          }
-        },
-        "uglify-js": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
-          "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "async": "0.2.10",
-            "optimist": "0.3.7",
-            "source-map": "0.1.43"
-          }
-        }
-      }
-    },
-    "har-schema": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
-      "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
-      "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
-      "dev": true,
-      "requires": {
-        "ajv": "4.11.8",
-        "har-schema": "1.0.5"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "4.11.8",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
-          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
-          "dev": true,
-          "requires": {
-            "co": "4.6.0",
-            "json-stable-stringify": "1.0.1"
-          }
-        }
-      }
-    },
-    "has": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
-      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
-      "dev": true,
-      "requires": {
-        "function-bind": "1.1.1"
-      }
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "2.1.1"
-      }
-    },
-    "has-binary": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
-      "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
-      "dev": true,
-      "requires": {
-        "isarray": "0.0.1"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        }
-      }
-    },
-    "has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
-      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
-      "dev": true
-    },
-    "has-unicode": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "dev": true
-    },
-    "hash-base": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
-      "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3"
-      }
-    },
-    "hash.js": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
-      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.0"
-      }
-    },
-    "hawk": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
-      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
-      "dev": true,
-      "requires": {
-        "boom": "2.10.1",
-        "cryptiles": "2.0.5",
-        "hoek": "2.16.3",
-        "sntp": "1.0.9"
-      }
-    },
-    "he": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
-      "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
-      "dev": true
-    },
-    "hmac-drbg": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
-      "dev": true,
-      "requires": {
-        "hash.js": "1.1.3",
-        "minimalistic-assert": "1.0.0",
-        "minimalistic-crypto-utils": "1.0.1"
-      }
-    },
-    "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
-      "dev": true
-    },
-    "homedir-polyfill": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
-      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
-      "dev": true,
-      "requires": {
-        "parse-passwd": "1.0.0"
-      }
-    },
-    "hosted-git-info": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
-      "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
-      "dev": true
-    },
-    "hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "obuf": "1.1.1",
-        "readable-stream": "2.3.3",
-        "wbuf": "1.7.2"
-      }
-    },
-    "html-comment-regex": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
-      "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
-      "dev": true
-    },
-    "html-entities": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
-      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
-      "dev": true
-    },
-    "html-minifier": {
-      "version": "3.5.6",
-      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz",
-      "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==",
-      "dev": true,
-      "requires": {
-        "camel-case": "3.0.0",
-        "clean-css": "4.1.9",
-        "commander": "2.11.0",
-        "he": "1.1.1",
-        "ncname": "1.0.0",
-        "param-case": "2.1.1",
-        "relateurl": "0.2.7",
-        "uglify-js": "3.1.5"
-      }
-    },
-    "html-webpack-plugin": {
-      "version": "2.30.1",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz",
-      "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=",
-      "dev": true,
-      "requires": {
-        "bluebird": "3.5.1",
-        "html-minifier": "3.5.6",
-        "loader-utils": "0.2.17",
-        "lodash": "4.17.4",
-        "pretty-error": "2.1.1",
-        "toposort": "1.0.6"
-      },
-      "dependencies": {
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
-          "dev": true,
-          "requires": {
-            "big.js": "3.2.0",
-            "emojis-list": "2.1.0",
-            "json5": "0.5.1",
-            "object-assign": "4.1.1"
-          }
-        }
-      }
-    },
-    "htmlparser2": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
-      "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.3.0",
-        "domhandler": "2.1.0",
-        "domutils": "1.1.6",
-        "readable-stream": "1.0.34"
-      },
-      "dependencies": {
-        "domutils": {
-          "version": "1.1.6",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
-          "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
-          "dev": true,
-          "requires": {
-            "domelementtype": "1.3.0"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "1.0.34",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
-          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "0.0.1",
-            "string_decoder": "0.10.31"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
-      }
-    },
-    "http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
-      "dev": true
-    },
-    "http-errors": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
-      "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
-      "dev": true,
-      "requires": {
-        "depd": "1.1.1",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.0.3",
-        "statuses": "1.3.1"
-      },
-      "dependencies": {
-        "setprototypeof": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
-          "dev": true
-        }
-      }
-    },
-    "http-parser-js": {
-      "version": "0.4.9",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz",
-      "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=",
-      "dev": true
-    },
-    "http-proxy": {
-      "version": "1.16.2",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
-      "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
-      "dev": true,
-      "requires": {
-        "eventemitter3": "1.2.0",
-        "requires-port": "1.0.0"
-      }
-    },
-    "http-proxy-middleware": {
-      "version": "0.17.4",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
-      "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
-      "dev": true,
-      "requires": {
-        "http-proxy": "1.16.2",
-        "is-glob": "3.1.0",
-        "lodash": "4.17.4",
-        "micromatch": "2.3.11"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "2.1.1"
-          }
-        }
-      }
-    },
-    "http-signature": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
-      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "0.2.0",
-        "jsprim": "1.4.1",
-        "sshpk": "1.13.1"
-      }
-    },
-    "https-browserify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
-      "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
-      "dev": true
-    },
-    "https-proxy-agent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
-      "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
-      "dev": true,
-      "requires": {
-        "agent-base": "2.1.1",
-        "debug": "2.6.9",
-        "extend": "3.0.1"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
-      "dev": true
-    },
-    "icss-replace-symbols": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
-      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
-      "dev": true
-    },
-    "icss-utils": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
-      "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
-      "dev": true,
-      "requires": {
-        "postcss": "6.0.13"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "postcss": {
-          "version": "6.0.13",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
-          "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
-          "dev": true,
-          "requires": {
-            "chalk": "2.3.0",
-            "source-map": "0.6.1",
-            "supports-color": "4.5.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "ieee754": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
-      "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
-      "dev": true
-    },
-    "image-size": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true
-    },
-    "img-stats": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/img-stats/-/img-stats-0.5.2.tgz",
-      "integrity": "sha1-wgNJbELy2esuWrgjL6dWurMsnis=",
-      "dev": true,
-      "requires": {
-        "xmldom": "0.1.27"
-      }
-    },
-    "in-publish": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
-      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
-      "dev": true,
-      "optional": true
-    },
-    "indent-string": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
-      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
-      "requires": {
-        "repeating": "2.0.1"
-      }
-    },
-    "indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
-      "dev": true
-    },
-    "indexof": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "requires": {
-        "once": "1.4.0",
-        "wrappy": "1.0.2"
-      }
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "ini": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
-      "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
-      "dev": true
-    },
-    "internal-ip": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
-      "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
-      "dev": true,
-      "requires": {
-        "meow": "3.7.0"
-      }
-    },
-    "interpret": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
-      "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
-      "dev": true
-    },
-    "invariant": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
-      "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
-      "dev": true,
-      "requires": {
-        "loose-envify": "1.3.1"
-      }
-    },
-    "invert-kv": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-      "dev": true
-    },
-    "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
-      "dev": true
-    },
-    "ipaddr.js": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
-      "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=",
-      "dev": true
-    },
-    "is-absolute-url": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
-      "dev": true
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
-    },
-    "is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "1.10.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "is-builtin-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
-      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
-      "dev": true,
-      "requires": {
-        "builtin-modules": "1.1.1"
-      }
-    },
-    "is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
-      "dev": true
-    },
-    "is-dotfile": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
-      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
-      "dev": true
-    },
-    "is-equal-shallow": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
-      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
-      "dev": true,
-      "requires": {
-        "is-primitive": "2.0.0"
-      }
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-      "dev": true
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
-    },
-    "is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "1.0.1"
-      }
-    },
-    "is-fullwidth-code-point": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "1.0.1"
-      }
-    },
-    "is-glob": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
-      "dev": true,
-      "requires": {
-        "is-extglob": "2.1.1"
-      }
-    },
-    "is-number": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
-      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
-      "dev": true,
-      "requires": {
-        "kind-of": "3.2.2"
-      }
-    },
-    "is-path-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
-      "dev": true
-    },
-    "is-path-in-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
-      "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
-      "dev": true,
-      "requires": {
-        "is-path-inside": "1.0.0"
-      }
-    },
-    "is-path-inside": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
-      "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
-      "dev": true,
-      "requires": {
-        "path-is-inside": "1.0.2"
-      }
-    },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
-      "dev": true
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "requires": {
-        "isobject": "3.0.1"
-      }
-    },
-    "is-posix-bracket": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
-      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
-      "dev": true
-    },
-    "is-primitive": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
-      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
-      "dev": true
-    },
-    "is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-      "dev": true
-    },
-    "is-svg": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
-      "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
-      "dev": true,
-      "requires": {
-        "html-comment-regex": "1.1.1"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
-    },
-    "is-utf8": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
-    },
-    "is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "isbinaryfile": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
-      "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
-      "dev": true
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-      "dev": true
-    },
-    "istanbul-api": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz",
-      "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==",
-      "dev": true,
-      "requires": {
-        "async": "2.5.0",
-        "fileset": "2.0.3",
-        "istanbul-lib-coverage": "1.1.1",
-        "istanbul-lib-hook": "1.1.0",
-        "istanbul-lib-instrument": "1.9.1",
-        "istanbul-lib-report": "1.1.2",
-        "istanbul-lib-source-maps": "1.2.2",
-        "istanbul-reports": "1.1.3",
-        "js-yaml": "3.7.0",
-        "mkdirp": "0.5.1",
-        "once": "1.4.0"
-      }
-    },
-    "istanbul-instrumenter-loader": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz",
-      "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=",
-      "dev": true,
-      "requires": {
-        "convert-source-map": "1.5.0",
-        "istanbul-lib-instrument": "1.9.1",
-        "loader-utils": "0.2.17",
-        "object-assign": "4.1.1"
-      },
-      "dependencies": {
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
-          "dev": true,
-          "requires": {
-            "big.js": "3.2.0",
-            "emojis-list": "2.1.0",
-            "json5": "0.5.1",
-            "object-assign": "4.1.1"
-          }
-        }
-      }
-    },
-    "istanbul-lib-coverage": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz",
-      "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==",
-      "dev": true
-    },
-    "istanbul-lib-hook": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz",
-      "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==",
-      "dev": true,
-      "requires": {
-        "append-transform": "0.4.0"
-      }
-    },
-    "istanbul-lib-instrument": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz",
-      "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
-      "dev": true,
-      "requires": {
-        "babel-generator": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "istanbul-lib-coverage": "1.1.1",
-        "semver": "5.4.1"
-      }
-    },
-    "istanbul-lib-report": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz",
-      "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==",
-      "dev": true,
-      "requires": {
-        "istanbul-lib-coverage": "1.1.1",
-        "mkdirp": "0.5.1",
-        "path-parse": "1.0.5",
-        "supports-color": "3.2.3"
-      }
-    },
-    "istanbul-lib-source-maps": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz",
-      "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==",
-      "dev": true,
-      "requires": {
-        "debug": "3.1.0",
-        "istanbul-lib-coverage": "1.1.1",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.2",
-        "source-map": "0.5.7"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "istanbul-reports": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz",
-      "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==",
-      "dev": true,
-      "requires": {
-        "handlebars": "4.0.11"
-      },
-      "dependencies": {
-        "async": {
-          "version": "1.5.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true,
-          "optional": true
-        },
-        "cliui": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "center-align": "0.1.3",
-            "right-align": "0.1.3",
-            "wordwrap": "0.0.2"
-          },
-          "dependencies": {
-            "wordwrap": {
-              "version": "0.0.2",
-              "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-              "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "handlebars": {
-          "version": "4.0.11",
-          "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
-          "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
-          "dev": true,
-          "requires": {
-            "async": "1.5.2",
-            "optimist": "0.6.1",
-            "source-map": "0.4.4",
-            "uglify-js": "2.8.29"
-          }
-        },
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-          "dev": true
-        },
-        "optimist": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-          "dev": true,
-          "requires": {
-            "minimist": "0.0.10",
-            "wordwrap": "0.0.3"
-          }
-        },
-        "source-map": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
-          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-          "dev": true,
-          "requires": {
-            "amdefine": "1.0.1"
-          }
-        },
-        "uglify-js": {
-          "version": "2.8.29",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
-          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "source-map": "0.5.7",
-            "uglify-to-browserify": "1.0.2",
-            "yargs": "3.10.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.5.7",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "yargs": {
-          "version": "3.10.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "camelcase": "1.2.1",
-            "cliui": "2.1.0",
-            "decamelize": "1.2.0",
-            "window-size": "0.1.0"
-          }
-        }
-      }
-    },
-    "jasmine": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz",
-      "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
-      "dev": true,
-      "requires": {
-        "exit": "0.1.2",
-        "glob": "7.1.2",
-        "jasmine-core": "2.8.0"
-      },
-      "dependencies": {
-        "jasmine-core": {
-          "version": "2.8.0",
-          "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
-          "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
-          "dev": true
-        }
-      }
-    },
-    "jasmine-core": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz",
-      "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=",
-      "dev": true
-    },
-    "jasmine-spec-reporter": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.1.tgz",
-      "integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=",
-      "dev": true,
-      "requires": {
-        "colors": "1.1.2"
-      }
-    },
-    "jasminewd2": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz",
-      "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
-      "dev": true
-    },
-    "js-base64": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz",
-      "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==",
-      "dev": true
-    },
-    "js-tokens": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
-      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
-      "dev": true
-    },
-    "js-yaml": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
-      "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
-      "dev": true,
-      "requires": {
-        "argparse": "1.0.9",
-        "esprima": "2.7.3"
-      }
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true,
-      "optional": true
-    },
-    "jsesc": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-      "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
-      "dev": true
-    },
-    "json-loader": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
-      "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
-      "dev": true
-    },
-    "json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
-      "dev": true
-    },
-    "json-stable-stringify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
-      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
-      "dev": true,
-      "requires": {
-        "jsonify": "0.0.0"
-      }
-    },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "json3": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
-      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
-      "dev": true
-    },
-    "json5": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-      "dev": true
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11"
-      }
-    },
-    "jsonify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
-      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
-      "dev": true
-    },
-    "jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "karma": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz",
-      "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==",
-      "dev": true,
-      "requires": {
-        "bluebird": "3.5.1",
-        "body-parser": "1.18.2",
-        "chokidar": "1.7.0",
-        "colors": "1.1.2",
-        "combine-lists": "1.0.1",
-        "connect": "3.6.5",
-        "core-js": "2.5.1",
-        "di": "0.0.1",
-        "dom-serialize": "2.2.1",
-        "expand-braces": "0.1.2",
-        "glob": "7.1.2",
-        "graceful-fs": "4.1.11",
-        "http-proxy": "1.16.2",
-        "isbinaryfile": "3.0.2",
-        "lodash": "3.10.1",
-        "log4js": "0.6.38",
-        "mime": "1.4.1",
-        "minimatch": "3.0.4",
-        "optimist": "0.6.1",
-        "qjobs": "1.1.5",
-        "range-parser": "1.2.0",
-        "rimraf": "2.6.2",
-        "safe-buffer": "5.1.1",
-        "socket.io": "1.7.3",
-        "source-map": "0.5.7",
-        "tmp": "0.0.31",
-        "useragent": "2.2.1"
-      },
-      "dependencies": {
-        "lodash": {
-          "version": "3.10.1",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
-          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
-          "dev": true
-        },
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-          "dev": true
-        },
-        "optimist": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-          "dev": true,
-          "requires": {
-            "minimist": "0.0.10",
-            "wordwrap": "0.0.3"
-          }
-        }
-      }
-    },
-    "karma-chrome-launcher": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz",
-      "integrity": "sha1-IWh5xorATY1RQOmWGboEtZr9Rs8=",
-      "dev": true,
-      "requires": {
-        "fs-access": "1.0.1",
-        "which": "1.3.0"
-      }
-    },
-    "karma-cli": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz",
-      "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=",
-      "dev": true,
-      "requires": {
-        "resolve": "1.5.0"
-      }
-    },
-    "karma-coverage-istanbul-reporter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz",
-      "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=",
-      "dev": true,
-      "requires": {
-        "istanbul-api": "1.2.1",
-        "minimatch": "3.0.4"
-      }
-    },
-    "karma-jasmine": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz",
-      "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=",
-      "dev": true
-    },
-    "karma-jasmine-html-reporter": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz",
-      "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=",
-      "dev": true,
-      "requires": {
-        "karma-jasmine": "1.1.0"
-      }
-    },
-    "karma-source-map-support": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz",
-      "integrity": "sha1-G/gee7SwiWJ6s1LsQXnhF8QGpUA=",
-      "dev": true,
-      "requires": {
-        "source-map-support": "0.4.18"
-      }
-    },
-    "kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "requires": {
-        "is-buffer": "1.1.6"
-      }
-    },
-    "lazy-cache": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
-      "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=",
-      "dev": true
-    },
-    "lcid": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "dev": true,
-      "requires": {
-        "invert-kv": "1.0.0"
-      }
-    },
-    "less": {
-      "version": "2.7.3",
-      "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
-      "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
-      "dev": true,
-      "requires": {
-        "errno": "0.1.4",
-        "graceful-fs": "4.1.11",
-        "image-size": "0.5.5",
-        "mime": "1.4.1",
-        "mkdirp": "0.5.1",
-        "promise": "7.3.1",
-        "request": "2.81.0",
-        "source-map": "0.5.7"
-      }
-    },
-    "less-loader": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz",
-      "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=",
-      "dev": true,
-      "requires": {
-        "clone": "2.1.1",
-        "loader-utils": "1.1.0",
-        "pify": "2.3.0"
-      },
-      "dependencies": {
-        "clone": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
-          "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
-          "dev": true
-        }
-      }
-    },
-    "license-webpack-plugin": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz",
-      "integrity": "sha512-TjKOyiC0exqd4Idy/4M8/DETR22dXBZks387DuS5LbslxHiMRXGx/Q2F/j9IUtvEoH5uFvt72vRgk/G6f8j3Dg==",
-      "dev": true,
-      "requires": {
-        "ejs": "2.5.7"
-      }
-    },
-    "load-json-file": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "parse-json": "2.2.0",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1",
-        "strip-bom": "2.0.0"
-      }
-    },
-    "loader-runner": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
-      "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
-      "dev": true
-    },
-    "loader-utils": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
-      "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
-      "dev": true,
-      "requires": {
-        "big.js": "3.2.0",
-        "emojis-list": "2.1.0",
-        "json5": "0.5.1"
-      }
-    },
-    "locate-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-      "dev": true,
-      "requires": {
-        "p-locate": "2.0.0",
-        "path-exists": "3.0.0"
-      },
-      "dependencies": {
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-          "dev": true
-        }
-      }
-    },
-    "lodash": {
-      "version": "4.17.4",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
-      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
-      "dev": true
-    },
-    "lodash.assign": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
-      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
-      "dev": true,
-      "optional": true
-    },
-    "lodash.camelcase": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
-      "dev": true
-    },
-    "lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
-      "dev": true
-    },
-    "lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
-      "dev": true
-    },
-    "lodash.mergewith": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz",
-      "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=",
-      "dev": true,
-      "optional": true
-    },
-    "lodash.tail": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
-      "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
-      "dev": true
-    },
-    "lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
-      "dev": true
-    },
-    "log4js": {
-      "version": "0.6.38",
-      "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
-      "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "1.0.34",
-        "semver": "4.3.6"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "1.0.34",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
-          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "0.0.1",
-            "string_decoder": "0.10.31"
-          }
-        },
-        "semver": {
-          "version": "4.3.6",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
-          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
-          "dev": true
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
-      }
-    },
-    "loglevel": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.5.1.tgz",
-      "integrity": "sha1-GJB4yUq5BT7iFaCs2/JCROoPZQI=",
-      "dev": true
-    },
-    "longest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-      "dev": true
-    },
-    "loose-envify": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
-      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
-      "dev": true,
-      "requires": {
-        "js-tokens": "3.0.2"
-      }
-    },
-    "loud-rejection": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
-      "requires": {
-        "currently-unhandled": "0.4.1",
-        "signal-exit": "3.0.2"
-      }
-    },
-    "lower-case": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
-      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
-      "dev": true
-    },
-    "lru-cache": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
-      "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
-      "dev": true,
-      "requires": {
-        "pseudomap": "1.0.2",
-        "yallist": "2.1.2"
-      }
-    },
-    "macaddress": {
-      "version": "0.2.8",
-      "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
-      "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
-      "dev": true
-    },
-    "magic-string": {
-      "version": "0.22.4",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz",
-      "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==",
-      "dev": true,
-      "requires": {
-        "vlq": "0.2.3"
-      }
-    },
-    "make-error": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz",
-      "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
-      "dev": true
-    },
-    "map-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
-    },
-    "math-expression-evaluator": {
-      "version": "1.2.17",
-      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
-      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
-      "dev": true
-    },
-    "md5": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
-      "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
-      "dev": true,
-      "requires": {
-        "charenc": "0.0.2",
-        "crypt": "0.0.2",
-        "is-buffer": "1.1.6"
-      }
-    },
-    "md5.js": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
-      "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
-      "dev": true,
-      "requires": {
-        "hash-base": "3.0.4",
-        "inherits": "2.0.3"
-      },
-      "dependencies": {
-        "hash-base": {
-          "version": "3.0.4",
-          "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
-          "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
-          "dev": true,
-          "requires": {
-            "inherits": "2.0.3",
-            "safe-buffer": "5.1.1"
-          }
-        }
-      }
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
-      "dev": true
-    },
-    "mem": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
-      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
-      "dev": true,
-      "requires": {
-        "mimic-fn": "1.1.0"
-      }
-    },
-    "memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
-      "dev": true,
-      "requires": {
-        "errno": "0.1.4",
-        "readable-stream": "2.3.3"
-      }
-    },
-    "meow": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
-      "requires": {
-        "camelcase-keys": "2.1.0",
-        "decamelize": "1.2.0",
-        "loud-rejection": "1.6.0",
-        "map-obj": "1.0.1",
-        "minimist": "1.2.0",
-        "normalize-package-data": "2.4.0",
-        "object-assign": "4.1.1",
-        "read-pkg-up": "1.0.1",
-        "redent": "1.0.0",
-        "trim-newlines": "1.0.0"
-      }
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
-      "dev": true
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "2.3.11",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
-      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
-      "dev": true,
-      "requires": {
-        "arr-diff": "2.0.0",
-        "array-unique": "0.2.1",
-        "braces": "1.8.5",
-        "expand-brackets": "0.1.5",
-        "extglob": "0.3.2",
-        "filename-regex": "2.0.1",
-        "is-extglob": "1.0.0",
-        "is-glob": "2.0.1",
-        "kind-of": "3.2.2",
-        "normalize-path": "2.1.1",
-        "object.omit": "2.0.1",
-        "parse-glob": "3.0.4",
-        "regex-cache": "0.4.4"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "1.0.0"
-          }
-        }
-      }
-    },
-    "miller-rabin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0"
-      }
-    },
-    "mime": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "1.30.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-      "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "2.1.17",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-      "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
-      "dev": true,
-      "requires": {
-        "mime-db": "1.30.0"
-      }
-    },
-    "mimic-fn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
-      "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
-      "dev": true
-    },
-    "minimalistic-assert": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
-      "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
-      "dev": true
-    },
-    "minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
-      "dev": true
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "1.1.8"
-      }
-    },
-    "minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-      "dev": true
-    },
-    "mixin-object": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
-      "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
-      "dev": true,
-      "requires": {
-        "for-in": "0.1.8",
-        "is-extendable": "0.1.1"
-      },
-      "dependencies": {
-        "for-in": {
-          "version": "0.1.8",
-          "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
-          "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
-          "dev": true
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "dev": true,
-      "requires": {
-        "minimist": "0.0.8"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true
-        }
-      }
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "multicast-dns": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.1.1.tgz",
-      "integrity": "sha1-bn3oalcIcqsXBYrepxYLvsqBTd4=",
-      "dev": true,
-      "requires": {
-        "dns-packet": "1.2.2",
-        "thunky": "0.1.0"
-      }
-    },
-    "multicast-dns-service-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz",
-      "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=",
-      "dev": true,
-      "optional": true
-    },
-    "ncname": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz",
-      "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=",
-      "dev": true,
-      "requires": {
-        "xml-char-classes": "1.0.0"
-      }
-    },
-    "negotiator": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
-      "dev": true
-    },
-    "no-case": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
-      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
-      "dev": true,
-      "requires": {
-        "lower-case": "1.1.4"
-      }
-    },
-    "node-dir": {
-      "version": "0.1.17",
-      "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
-      "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
-      "dev": true,
-      "requires": {
-        "minimatch": "3.0.4"
-      }
-    },
-    "node-forge": {
-      "version": "0.6.33",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz",
-      "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=",
-      "dev": true
-    },
-    "node-gyp": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
-      "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "fstream": "1.0.11",
-        "glob": "7.1.2",
-        "graceful-fs": "4.1.11",
-        "minimatch": "3.0.4",
-        "mkdirp": "0.5.1",
-        "nopt": "3.0.6",
-        "npmlog": "4.1.2",
-        "osenv": "0.1.4",
-        "request": "2.81.0",
-        "rimraf": "2.6.2",
-        "semver": "5.3.0",
-        "tar": "2.2.1",
-        "which": "1.3.0"
-      },
-      "dependencies": {
-        "nopt": {
-          "version": "3.0.6",
-          "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
-          "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1.1.1"
-          }
-        },
-        "semver": {
-          "version": "5.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
-          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "node-libs-browser": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz",
-      "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=",
-      "dev": true,
-      "requires": {
-        "assert": "1.4.1",
-        "browserify-zlib": "0.1.4",
-        "buffer": "4.9.1",
-        "console-browserify": "1.1.0",
-        "constants-browserify": "1.0.0",
-        "crypto-browserify": "3.11.1",
-        "domain-browser": "1.1.7",
-        "events": "1.1.1",
-        "https-browserify": "0.0.1",
-        "os-browserify": "0.2.1",
-        "path-browserify": "0.0.0",
-        "process": "0.11.10",
-        "punycode": "1.4.1",
-        "querystring-es3": "0.2.1",
-        "readable-stream": "2.3.3",
-        "stream-browserify": "2.0.1",
-        "stream-http": "2.7.2",
-        "string_decoder": "0.10.31",
-        "timers-browserify": "2.0.4",
-        "tty-browserify": "0.0.0",
-        "url": "0.11.0",
-        "util": "0.10.3",
-        "vm-browserify": "0.0.4"
-      },
-      "dependencies": {
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
-      }
-    },
-    "node-modules-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/node-modules-path/-/node-modules-path-1.0.1.tgz",
-      "integrity": "sha1-QAlrCM560OoUaAhjr0ScfHWl0cg=",
-      "dev": true
-    },
-    "node-sass": {
-      "version": "4.5.3",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz",
-      "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "async-foreach": "0.1.3",
-        "chalk": "1.1.3",
-        "cross-spawn": "3.0.1",
-        "gaze": "1.1.2",
-        "get-stdin": "4.0.1",
-        "glob": "7.1.2",
-        "in-publish": "2.0.0",
-        "lodash.assign": "4.2.0",
-        "lodash.clonedeep": "4.5.0",
-        "lodash.mergewith": "4.6.0",
-        "meow": "3.7.0",
-        "mkdirp": "0.5.1",
-        "nan": "2.7.0",
-        "node-gyp": "3.6.2",
-        "npmlog": "4.1.2",
-        "request": "2.81.0",
-        "sass-graph": "2.2.4",
-        "stdout-stream": "1.4.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "nopt": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
-      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
-      "dev": true,
-      "requires": {
-        "abbrev": "1.1.1",
-        "osenv": "0.1.4"
-      }
-    },
-    "normalize-package-data": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
-      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "2.5.0",
-        "is-builtin-module": "1.0.0",
-        "semver": "5.4.1",
-        "validate-npm-package-license": "3.0.1"
-      }
-    },
-    "normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "dev": true,
-      "requires": {
-        "remove-trailing-separator": "1.1.0"
-      }
-    },
-    "normalize-range": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
-      "dev": true
-    },
-    "normalize-url": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
-      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
-      "dev": true,
-      "requires": {
-        "object-assign": "4.1.1",
-        "prepend-http": "1.0.4",
-        "query-string": "4.3.4",
-        "sort-keys": "1.1.2"
-      }
-    },
-    "npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-      "dev": true,
-      "requires": {
-        "path-key": "2.0.1"
-      }
-    },
-    "npmlog": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true,
-      "requires": {
-        "are-we-there-yet": "1.1.4",
-        "console-control-strings": "1.1.0",
-        "gauge": "2.7.4",
-        "set-blocking": "2.0.0"
-      }
-    },
-    "nth-check": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
-      "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
-      "dev": true,
-      "requires": {
-        "boolbase": "1.0.0"
-      }
-    },
-    "null-check": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
-      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
-      "dev": true
-    },
-    "num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
-      "dev": true
-    },
-    "number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-      "dev": true
-    },
-    "object-component": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
-      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
-      "dev": true
-    },
-    "object.omit": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
-      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
-      "dev": true,
-      "requires": {
-        "for-own": "0.1.5",
-        "is-extendable": "0.1.1"
-      },
-      "dependencies": {
-        "for-own": {
-          "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
-          "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
-          "dev": true,
-          "requires": {
-            "for-in": "1.0.2"
-          }
-        }
-      }
-    },
-    "obuf": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz",
-      "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
-      "dev": true
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "dev": true,
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "on-headers": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
-      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
-      "dev": true
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "requires": {
-        "wrappy": "1.0.2"
-      }
-    },
-    "opn": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz",
-      "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
-      "dev": true,
-      "requires": {
-        "is-wsl": "1.1.0"
-      }
-    },
-    "optimist": {
-      "version": "0.3.7",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
-      "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
-      "dev": true,
-      "requires": {
-        "wordwrap": "0.0.3"
-      }
-    },
-    "options": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
-      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
-      "dev": true
-    },
-    "original": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
-      "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
-      "dev": true,
-      "requires": {
-        "url-parse": "1.0.5"
-      },
-      "dependencies": {
-        "url-parse": {
-          "version": "1.0.5",
-          "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
-          "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
-          "dev": true,
-          "requires": {
-            "querystringify": "0.0.4",
-            "requires-port": "1.0.0"
-          }
-        }
-      }
-    },
-    "os-browserify": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
-      "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=",
-      "dev": true
-    },
-    "os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-      "dev": true
-    },
-    "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "dev": true,
-      "requires": {
-        "lcid": "1.0.0"
-      }
-    },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-      "dev": true
-    },
-    "osenv": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
-      "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
-      "dev": true,
-      "requires": {
-        "os-homedir": "1.0.2",
-        "os-tmpdir": "1.0.2"
-      }
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
-      "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
-      "dev": true
-    },
-    "p-locate": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-      "dev": true,
-      "requires": {
-        "p-limit": "1.1.0"
-      }
-    },
-    "p-map": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
-      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
-      "dev": true
-    },
-    "pako": {
-      "version": "0.2.9",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
-      "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
-      "dev": true
-    },
-    "param-case": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
-      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
-      "dev": true,
-      "requires": {
-        "no-case": "2.3.2"
-      }
-    },
-    "parse-asn1": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
-      "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
-      "dev": true,
-      "requires": {
-        "asn1.js": "4.9.1",
-        "browserify-aes": "1.1.1",
-        "create-hash": "1.1.3",
-        "evp_bytestokey": "1.0.3",
-        "pbkdf2": "3.0.14"
-      }
-    },
-    "parse-glob": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
-      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
-      "dev": true,
-      "requires": {
-        "glob-base": "0.3.0",
-        "is-dotfile": "1.0.3",
-        "is-extglob": "1.0.0",
-        "is-glob": "2.0.1"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "1.0.0"
-          }
-        }
-      }
-    },
-    "parse-json": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-      "dev": true,
-      "requires": {
-        "error-ex": "1.3.1"
-      }
-    },
-    "parse-passwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
-      "dev": true
-    },
-    "parsejson": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
-      "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
-      "dev": true,
-      "requires": {
-        "better-assert": "1.0.2"
-      }
-    },
-    "parseqs": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
-      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
-      "dev": true,
-      "requires": {
-        "better-assert": "1.0.2"
-      }
-    },
-    "parseuri": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
-      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
-      "dev": true,
-      "requires": {
-        "better-assert": "1.0.2"
-      }
-    },
-    "parseurl": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
-      "dev": true
-    },
-    "path-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
-      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
-      "dev": true
-    },
-    "path-exists": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-      "dev": true,
-      "requires": {
-        "pinkie-promise": "2.0.1"
-      }
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
-    },
-    "path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
-      "dev": true
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
-      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
-      "dev": true
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
-      "dev": true
-    },
-    "path-type": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1"
-      }
-    },
-    "pbkdf2": {
-      "version": "3.0.14",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
-      "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
-      "dev": true,
-      "requires": {
-        "create-hash": "1.1.3",
-        "create-hmac": "1.1.6",
-        "ripemd160": "2.0.1",
-        "safe-buffer": "5.1.1",
-        "sha.js": "2.4.9"
-      }
-    },
-    "performance-now": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
-      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
-      "dev": true
-    },
-    "pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "requires": {
-        "pinkie": "2.0.4"
-      }
-    },
-    "portfinder": {
-      "version": "1.0.13",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
-      "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
-      "dev": true,
-      "requires": {
-        "async": "1.5.2",
-        "debug": "2.6.9",
-        "mkdirp": "0.5.1"
-      },
-      "dependencies": {
-        "async": {
-          "version": "1.5.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
-          "dev": true
-        }
-      }
-    },
-    "postcss": {
-      "version": "5.2.18",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
-      "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
-      "dev": true,
-      "requires": {
-        "chalk": "1.1.3",
-        "js-base64": "2.3.2",
-        "source-map": "0.5.7",
-        "supports-color": "3.2.3"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
-          },
-          "dependencies": {
-            "supports-color": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-              "dev": true
-            }
-          }
-        }
-      }
-    },
-    "postcss-calc": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
-      "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "postcss-message-helpers": "2.0.0",
-        "reduce-css-calc": "1.3.0"
-      }
-    },
-    "postcss-colormin": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
-      "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
-      "dev": true,
-      "requires": {
-        "colormin": "1.1.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-convert-values": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
-      "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-discard-comments": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
-      "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-discard-duplicates": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
-      "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-discard-empty": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
-      "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-discard-overridden": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
-      "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-discard-unused": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
-      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
-      }
-    },
-    "postcss-filter-plugins": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
-      "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "uniqid": "4.1.1"
-      }
-    },
-    "postcss-load-config": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
-      "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1",
-        "postcss-load-options": "1.2.0",
-        "postcss-load-plugins": "2.3.0"
-      }
-    },
-    "postcss-load-options": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz",
-      "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1"
-      }
-    },
-    "postcss-load-plugins": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz",
-      "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1"
-      }
-    },
-    "postcss-loader": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz",
-      "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-load-config": "1.2.0"
-      }
-    },
-    "postcss-merge-idents": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
-      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
-      "dev": true,
-      "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-merge-longhand": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
-      "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-merge-rules": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
-      "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
-      "dev": true,
-      "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-api": "1.6.1",
-        "postcss": "5.2.18",
-        "postcss-selector-parser": "2.2.3",
-        "vendors": "1.0.1"
-      }
-    },
-    "postcss-message-helpers": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
-      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
-      "dev": true
-    },
-    "postcss-minify-font-values": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
-      "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
-      "dev": true,
-      "requires": {
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-minify-gradients": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
-      "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-minify-params": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
-      "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "1.0.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0",
-        "uniqs": "2.0.0"
-      }
-    },
-    "postcss-minify-selectors": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
-      "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "1.0.2",
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-selector-parser": "2.2.3"
-      }
-    },
-    "postcss-modules-extract-imports": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
-      "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
-      "dev": true,
-      "requires": {
-        "postcss": "6.0.13"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "postcss": {
-          "version": "6.0.13",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
-          "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
-          "dev": true,
-          "requires": {
-            "chalk": "2.3.0",
-            "source-map": "0.6.1",
-            "supports-color": "4.5.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "postcss-modules-local-by-default": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
-      "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
-      "dev": true,
-      "requires": {
-        "css-selector-tokenizer": "0.7.0",
-        "postcss": "6.0.13"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "postcss": {
-          "version": "6.0.13",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
-          "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
-          "dev": true,
-          "requires": {
-            "chalk": "2.3.0",
-            "source-map": "0.6.1",
-            "supports-color": "4.5.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "postcss-modules-scope": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
-      "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
-      "dev": true,
-      "requires": {
-        "css-selector-tokenizer": "0.7.0",
-        "postcss": "6.0.13"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "postcss": {
-          "version": "6.0.13",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
-          "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
-          "dev": true,
-          "requires": {
-            "chalk": "2.3.0",
-            "source-map": "0.6.1",
-            "supports-color": "4.5.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "postcss-modules-values": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
-      "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
-      "dev": true,
-      "requires": {
-        "icss-replace-symbols": "1.1.0",
-        "postcss": "6.0.13"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "postcss": {
-          "version": "6.0.13",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
-          "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
-          "dev": true,
-          "requires": {
-            "chalk": "2.3.0",
-            "source-map": "0.6.1",
-            "supports-color": "4.5.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        }
-      }
-    },
-    "postcss-normalize-charset": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
-      "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-normalize-url": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
-      "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
-      "dev": true,
-      "requires": {
-        "is-absolute-url": "2.1.0",
-        "normalize-url": "1.9.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-ordered-values": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
-      "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-reduce-idents": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
-      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-reduce-initial": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
-      "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
-      "dev": true,
-      "requires": {
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-reduce-transforms": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
-      "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
-      "dev": true,
-      "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
-      }
-    },
-    "postcss-selector-parser": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
-      "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
-      "dev": true,
-      "requires": {
-        "flatten": "1.0.2",
-        "indexes-of": "1.0.1",
-        "uniq": "1.0.1"
-      }
-    },
-    "postcss-svgo": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
-      "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
-      "dev": true,
-      "requires": {
-        "is-svg": "2.1.0",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0",
-        "svgo": "0.7.2"
-      }
-    },
-    "postcss-unique-selectors": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
-      "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "1.0.2",
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
-      }
-    },
-    "postcss-url": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-5.1.2.tgz",
-      "integrity": "sha1-mLMWW+jVkkccsMqt3iwNH4MvEz4=",
-      "dev": true,
-      "requires": {
-        "directory-encoder": "0.7.2",
-        "js-base64": "2.3.2",
-        "mime": "1.4.1",
-        "minimatch": "3.0.4",
-        "mkdirp": "0.5.1",
-        "path-is-absolute": "1.0.1",
-        "postcss": "5.2.18"
-      }
-    },
-    "postcss-value-parser": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
-      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
-      "dev": true
-    },
-    "postcss-zindex": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
-      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
-      "dev": true,
-      "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
-      }
-    },
-    "prepend-http": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
-      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
-      "dev": true
-    },
-    "preserve": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
-      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
-      "dev": true
-    },
-    "pretty-error": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
-      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
-      "dev": true,
-      "requires": {
-        "renderkid": "2.0.1",
-        "utila": "0.4.0"
-      }
-    },
-    "process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-      "dev": true
-    },
-    "promise": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "asap": "2.0.6"
-      }
-    },
-    "protractor": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz",
-      "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=",
-      "dev": true,
-      "requires": {
-        "@types/node": "6.0.90",
-        "@types/q": "0.0.32",
-        "@types/selenium-webdriver": "2.53.42",
-        "blocking-proxy": "0.0.5",
-        "chalk": "1.1.3",
-        "glob": "7.1.2",
-        "jasmine": "2.8.0",
-        "jasminewd2": "2.2.0",
-        "optimist": "0.6.1",
-        "q": "1.4.1",
-        "saucelabs": "1.3.0",
-        "selenium-webdriver": "3.0.1",
-        "source-map-support": "0.4.18",
-        "webdriver-js-extender": "1.0.0",
-        "webdriver-manager": "12.0.6"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
-          }
-        },
-        "del": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-          "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
-          "dev": true,
-          "requires": {
-            "globby": "5.0.0",
-            "is-path-cwd": "1.0.0",
-            "is-path-in-cwd": "1.0.0",
-            "object-assign": "4.1.1",
-            "pify": "2.3.0",
-            "pinkie-promise": "2.0.1",
-            "rimraf": "2.6.2"
-          }
-        },
-        "globby": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-          "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
-          "dev": true,
-          "requires": {
-            "array-union": "1.0.2",
-            "arrify": "1.0.1",
-            "glob": "7.1.2",
-            "object-assign": "4.1.1",
-            "pify": "2.3.0",
-            "pinkie-promise": "2.0.1"
-          }
-        },
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-          "dev": true
-        },
-        "optimist": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-          "dev": true,
-          "requires": {
-            "minimist": "0.0.10",
-            "wordwrap": "0.0.3"
-          }
-        },
-        "q": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-          "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        },
-        "webdriver-manager": {
-          "version": "12.0.6",
-          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz",
-          "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=",
-          "dev": true,
-          "requires": {
-            "adm-zip": "0.4.7",
-            "chalk": "1.1.3",
-            "del": "2.2.2",
-            "glob": "7.1.2",
-            "ini": "1.3.4",
-            "minimist": "1.2.0",
-            "q": "1.4.1",
-            "request": "2.81.0",
-            "rimraf": "2.6.2",
-            "semver": "5.4.1",
-            "xml2js": "0.4.19"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-              "dev": true
-            }
-          }
-        }
-      }
-    },
-    "proxy-addr": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
-      "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
-      "dev": true,
-      "requires": {
-        "forwarded": "0.1.2",
-        "ipaddr.js": "1.5.2"
-      }
-    },
-    "prr": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
-      "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
-      "dev": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
-    },
-    "public-encrypt": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
-      "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.1.3",
-        "parse-asn1": "5.1.0",
-        "randombytes": "2.0.5"
-      }
-    },
-    "punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
-    },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-      "dev": true
-    },
-    "qjobs": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz",
-      "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
-      "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
-      "dev": true
-    },
-    "query-string": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
-      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
-      "dev": true,
-      "requires": {
-        "object-assign": "4.1.1",
-        "strict-uri-encode": "1.1.0"
-      }
-    },
-    "querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-      "dev": true
-    },
-    "querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
-      "dev": true
-    },
-    "querystringify": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz",
-      "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
-      "dev": true
-    },
-    "randomatic": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
-      "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
-      "dev": true,
-      "requires": {
-        "is-number": "3.0.0",
-        "kind-of": "4.0.0"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "requires": {
-            "kind-of": "3.2.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "1.1.6"
-              }
-            }
-          }
-        },
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "1.1.6"
-          }
-        }
-      }
-    },
-    "randombytes": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
-      "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
-      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
-      "dev": true,
-      "requires": {
-        "bytes": "3.0.0",
-        "http-errors": "1.6.2",
-        "iconv-lite": "0.4.19",
-        "unpipe": "1.0.0"
-      }
-    },
-    "raw-loader": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
-      "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
-      "dev": true
-    },
-    "read-pkg": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "dev": true,
-      "requires": {
-        "load-json-file": "1.1.0",
-        "normalize-package-data": "2.4.0",
-        "path-type": "1.1.0"
-      }
-    },
-    "read-pkg-up": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true,
-      "requires": {
-        "find-up": "1.1.2",
-        "read-pkg": "1.1.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
-      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
-      "dev": true,
-      "requires": {
-        "core-util-is": "1.0.2",
-        "inherits": "2.0.3",
-        "isarray": "1.0.0",
-        "process-nextick-args": "1.0.7",
-        "safe-buffer": "5.1.1",
-        "string_decoder": "1.0.3",
-        "util-deprecate": "1.0.2"
-      }
-    },
-    "readdirp": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
-      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "4.1.11",
-        "minimatch": "3.0.4",
-        "readable-stream": "2.3.3",
-        "set-immediate-shim": "1.0.1"
-      }
-    },
-    "redent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
-      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
-      "requires": {
-        "indent-string": "2.1.0",
-        "strip-indent": "1.0.1"
-      }
-    },
-    "reduce-css-calc": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
-      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
-      "dev": true,
-      "requires": {
-        "balanced-match": "0.4.2",
-        "math-expression-evaluator": "1.2.17",
-        "reduce-function-call": "1.0.2"
-      },
-      "dependencies": {
-        "balanced-match": {
-          "version": "0.4.2",
-          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
-          "dev": true
-        }
-      }
-    },
-    "reduce-function-call": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
-      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
-      "dev": true,
-      "requires": {
-        "balanced-match": "0.4.2"
-      },
-      "dependencies": {
-        "balanced-match": {
-          "version": "0.4.2",
-          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
-          "dev": true
-        }
-      }
-    },
-    "reflect-metadata": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz",
-      "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=",
-      "dev": true
-    },
-    "regenerate": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
-      "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
-      "dev": true
-    },
-    "regenerator-runtime": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
-      "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
-      "dev": true
-    },
-    "regex-cache": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
-      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
-      "dev": true,
-      "requires": {
-        "is-equal-shallow": "0.1.3"
-      }
-    },
-    "regexpu-core": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
-      "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
-      "dev": true,
-      "requires": {
-        "regenerate": "1.3.3",
-        "regjsgen": "0.2.0",
-        "regjsparser": "0.1.5"
-      }
-    },
-    "regjsgen": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
-      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
-      "dev": true
-    },
-    "regjsparser": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
-      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
-      "dev": true,
-      "requires": {
-        "jsesc": "0.5.0"
-      }
-    },
-    "relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
-      "dev": true
-    },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-      "dev": true
-    },
-    "renderkid": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz",
-      "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
-      "dev": true,
-      "requires": {
-        "css-select": "1.2.0",
-        "dom-converter": "0.1.4",
-        "htmlparser2": "3.3.0",
-        "strip-ansi": "3.0.1",
-        "utila": "0.3.3"
-      },
-      "dependencies": {
-        "utila": {
-          "version": "0.3.3",
-          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
-          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
-          "dev": true
-        }
-      }
-    },
-    "repeat-element": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
-      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true
-    },
-    "repeating": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
-      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
-      "requires": {
-        "is-finite": "1.0.2"
-      }
-    },
-    "request": {
-      "version": "2.81.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
-      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "0.6.0",
-        "aws4": "1.6.0",
-        "caseless": "0.12.0",
-        "combined-stream": "1.0.5",
-        "extend": "3.0.1",
-        "forever-agent": "0.6.1",
-        "form-data": "2.1.4",
-        "har-validator": "4.2.1",
-        "hawk": "3.1.3",
-        "http-signature": "1.1.1",
-        "is-typedarray": "1.0.0",
-        "isstream": "0.1.2",
-        "json-stringify-safe": "5.0.1",
-        "mime-types": "2.1.17",
-        "oauth-sign": "0.8.2",
-        "performance-now": "0.2.0",
-        "qs": "6.4.0",
-        "safe-buffer": "5.1.1",
-        "stringstream": "0.0.5",
-        "tough-cookie": "2.3.3",
-        "tunnel-agent": "0.6.0",
-        "uuid": "3.1.0"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
-    },
-    "require-from-string": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
-      "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
-      "dev": true
-    },
-    "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-      "dev": true
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
-      "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
-      "dev": true,
-      "requires": {
-        "path-parse": "1.0.5"
-      }
-    },
-    "right-align": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
-      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
-      "dev": true,
-      "requires": {
-        "align-text": "0.1.4"
-      }
-    },
-    "rimraf": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "dev": true,
-      "requires": {
-        "glob": "7.1.2"
-      }
-    },
-    "ripemd160": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
-      "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
-      "dev": true,
-      "requires": {
-        "hash-base": "2.0.2",
-        "inherits": "2.0.3"
-      }
-    },
-    "rxjs": {
-      "version": "5.5.2",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz",
-      "integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==",
-      "dev": true,
-      "requires": {
-        "symbol-observable": "1.0.4"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
-      "dev": true
-    },
-    "sass-graph": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
-      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "glob": "7.1.2",
-        "lodash": "4.17.4",
-        "scss-tokenizer": "0.2.3",
-        "yargs": "7.1.0"
-      }
-    },
-    "sass-loader": {
-      "version": "6.0.6",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz",
-      "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",
-      "dev": true,
-      "requires": {
-        "async": "2.5.0",
-        "clone-deep": "0.3.0",
-        "loader-utils": "1.1.0",
-        "lodash.tail": "4.1.1",
-        "pify": "3.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
-      }
-    },
-    "saucelabs": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz",
-      "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=",
-      "dev": true,
-      "requires": {
-        "https-proxy-agent": "1.0.0"
-      }
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "schema-utils": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
-      "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
-      "dev": true,
-      "requires": {
-        "ajv": "5.3.0"
-      }
-    },
-    "scss-tokenizer": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
-      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "js-base64": "2.3.2",
-        "source-map": "0.4.4"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
-          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "amdefine": "1.0.1"
-          }
-        }
-      }
-    },
-    "select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
-      "dev": true
-    },
-    "selenium-webdriver": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz",
-      "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=",
-      "dev": true,
-      "requires": {
-        "adm-zip": "0.4.7",
-        "rimraf": "2.6.2",
-        "tmp": "0.0.30",
-        "xml2js": "0.4.19"
-      },
-      "dependencies": {
-        "tmp": {
-          "version": "0.0.30",
-          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
-          "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
-          "dev": true,
-          "requires": {
-            "os-tmpdir": "1.0.2"
-          }
-        }
-      }
-    },
-    "selfsigned": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz",
-      "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=",
-      "dev": true,
-      "requires": {
-        "node-forge": "0.6.33"
-      }
-    },
-    "semver": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
-      "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
-      "dev": true
-    },
-    "semver-dsl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
-      "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
-      "dev": true,
-      "requires": {
-        "semver": "5.4.1"
-      }
-    },
-    "send": {
-      "version": "0.16.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
-      "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "1.1.1",
-        "destroy": "1.0.4",
-        "encodeurl": "1.0.1",
-        "escape-html": "1.0.3",
-        "etag": "1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "1.6.2",
-        "mime": "1.4.1",
-        "ms": "2.0.0",
-        "on-finished": "2.3.0",
-        "range-parser": "1.2.0",
-        "statuses": "1.3.1"
-      }
-    },
-    "serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
-      "dev": true,
-      "requires": {
-        "accepts": "1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "1.0.3",
-        "http-errors": "1.6.2",
-        "mime-types": "2.1.17",
-        "parseurl": "1.3.2"
-      }
-    },
-    "serve-static": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
-      "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
-      "dev": true,
-      "requires": {
-        "encodeurl": "1.0.1",
-        "escape-html": "1.0.3",
-        "parseurl": "1.3.2",
-        "send": "0.16.1"
-      }
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "set-immediate-shim": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
-      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
-      "dev": true
-    },
-    "setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-      "dev": true
-    },
-    "setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "dev": true
-    },
-    "sha.js": {
-      "version": "2.4.9",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
-      "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "shallow-clone": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
-      "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
-      "dev": true,
-      "requires": {
-        "is-extendable": "0.1.1",
-        "kind-of": "2.0.1",
-        "lazy-cache": "0.2.7",
-        "mixin-object": "2.0.1"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
-          "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "1.1.6"
-          }
-        }
-      }
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true
-    },
-    "signal-exit": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
-      "dev": true
-    },
-    "silent-error": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz",
-      "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9"
-      }
-    },
-    "sntp": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
-      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
-      "dev": true,
-      "requires": {
-        "hoek": "2.16.3"
-      }
-    },
-    "socket.io": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz",
-      "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
-      "dev": true,
-      "requires": {
-        "debug": "2.3.3",
-        "engine.io": "1.8.3",
-        "has-binary": "0.1.7",
-        "object-assign": "4.1.0",
-        "socket.io-adapter": "0.5.0",
-        "socket.io-client": "1.7.3",
-        "socket.io-parser": "2.3.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
-          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.2"
-          }
-        },
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-          "dev": true
-        },
-        "object-assign": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
-          "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
-          "dev": true
-        }
-      }
-    },
-    "socket.io-adapter": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
-      "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
-      "dev": true,
-      "requires": {
-        "debug": "2.3.3",
-        "socket.io-parser": "2.3.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
-          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.2"
-          }
-        },
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-          "dev": true
-        }
-      }
-    },
-    "socket.io-client": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz",
-      "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
-      "dev": true,
-      "requires": {
-        "backo2": "1.0.2",
-        "component-bind": "1.0.0",
-        "component-emitter": "1.2.1",
-        "debug": "2.3.3",
-        "engine.io-client": "1.8.3",
-        "has-binary": "0.1.7",
-        "indexof": "0.0.1",
-        "object-component": "0.0.3",
-        "parseuri": "0.0.5",
-        "socket.io-parser": "2.3.1",
-        "to-array": "0.1.4"
-      },
-      "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
-          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.2"
-          }
-        },
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-          "dev": true
-        }
-      }
-    },
-    "socket.io-parser": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
-      "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
-      "dev": true,
-      "requires": {
-        "component-emitter": "1.1.2",
-        "debug": "2.2.0",
-        "isarray": "0.0.1",
-        "json3": "3.3.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
-          "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
-          "dev": true,
-          "requires": {
-            "ms": "0.7.1"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "ms": {
-          "version": "0.7.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-          "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
-          "dev": true
-        }
-      }
-    },
-    "sockjs": {
-      "version": "0.3.18",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz",
-      "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=",
-      "dev": true,
-      "requires": {
-        "faye-websocket": "0.10.0",
-        "uuid": "2.0.3"
-      },
-      "dependencies": {
-        "uuid": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
-          "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
-          "dev": true
-        }
-      }
-    },
-    "sockjs-client": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz",
-      "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "eventsource": "0.1.6",
-        "faye-websocket": "0.11.1",
-        "inherits": "2.0.3",
-        "json3": "3.3.2",
-        "url-parse": "1.1.9"
-      },
-      "dependencies": {
-        "faye-websocket": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
-          "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
-          "dev": true,
-          "requires": {
-            "websocket-driver": "0.7.0"
-          }
-        }
-      }
-    },
-    "sort-keys": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
-      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
-      "dev": true,
-      "requires": {
-        "is-plain-obj": "1.1.0"
-      }
-    },
-    "source-list-map": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
-      "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
-      "dev": true
-    },
-    "source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true
-    },
-    "source-map-loader": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.3.tgz",
-      "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==",
-      "dev": true,
-      "requires": {
-        "async": "2.5.0",
-        "loader-utils": "0.2.17",
-        "source-map": "0.6.1"
-      },
-      "dependencies": {
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
-          "dev": true,
-          "requires": {
-            "big.js": "3.2.0",
-            "emojis-list": "2.1.0",
-            "json5": "0.5.1",
-            "object-assign": "4.1.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "source-map-support": {
-      "version": "0.4.18",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
-      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
-      "dev": true,
-      "requires": {
-        "source-map": "0.5.7"
-      }
-    },
-    "spdx-correct": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
-      "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
-      "dev": true,
-      "requires": {
-        "spdx-license-ids": "1.2.2"
-      }
-    },
-    "spdx-expression-parse": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
-      "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
-      "dev": true
-    },
-    "spdx-license-ids": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
-      "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
-      "dev": true
-    },
-    "spdy": {
-      "version": "3.4.7",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
-      "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "handle-thing": "1.2.5",
-        "http-deceiver": "1.2.7",
-        "safe-buffer": "5.1.1",
-        "select-hose": "2.0.0",
-        "spdy-transport": "2.0.20"
-      }
-    },
-    "spdy-transport": {
-      "version": "2.0.20",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz",
-      "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "detect-node": "2.0.3",
-        "hpack.js": "2.1.6",
-        "obuf": "1.1.1",
-        "readable-stream": "2.3.3",
-        "safe-buffer": "5.1.1",
-        "wbuf": "1.7.2"
-      }
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
-      "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
-      "dev": true,
-      "requires": {
-        "asn1": "0.2.3",
-        "assert-plus": "1.0.0",
-        "bcrypt-pbkdf": "1.0.1",
-        "dashdash": "1.14.1",
-        "ecc-jsbn": "0.1.1",
-        "getpass": "0.1.7",
-        "jsbn": "0.1.1",
-        "tweetnacl": "0.14.5"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
-      "dev": true
-    },
-    "stdout-stream": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
-      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "readable-stream": "2.3.3"
-      }
-    },
-    "stream-browserify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
-      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.3"
-      }
-    },
-    "stream-http": {
-      "version": "2.7.2",
-      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
-      "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
-      "dev": true,
-      "requires": {
-        "builtin-status-codes": "3.0.0",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.3",
-        "to-arraybuffer": "1.0.1",
-        "xtend": "4.0.1"
-      }
-    },
-    "strict-uri-encode": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
-      "dev": true
-    },
-    "string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true,
-      "requires": {
-        "code-point-at": "1.1.0",
-        "is-fullwidth-code-point": "1.0.0",
-        "strip-ansi": "3.0.1"
-      }
-    },
-    "string_decoder": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
-      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "stringstream": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
-      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
-      "dev": true
-    },
-    "strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "2.1.1"
-      }
-    },
-    "strip-bom": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-      "dev": true,
-      "requires": {
-        "is-utf8": "0.2.1"
-      }
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
-      "dev": true
-    },
-    "strip-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
-      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
-      "requires": {
-        "get-stdin": "4.0.1"
-      }
-    },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true
-    },
-    "style-loader": {
-      "version": "0.13.2",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz",
-      "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0"
-      }
-    },
-    "stylus": {
-      "version": "0.54.5",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
-      "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
-      "dev": true,
-      "requires": {
-        "css-parse": "1.7.0",
-        "debug": "2.6.9",
-        "glob": "7.0.6",
-        "mkdirp": "0.5.1",
-        "sax": "0.5.8",
-        "source-map": "0.1.43"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "7.0.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "1.0.0",
-            "inflight": "1.0.6",
-            "inherits": "2.0.3",
-            "minimatch": "3.0.4",
-            "once": "1.4.0",
-            "path-is-absolute": "1.0.1"
-          }
-        },
-        "sax": {
-          "version": "0.5.8",
-          "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
-          "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.1.43",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "requires": {
-            "amdefine": "1.0.1"
-          }
-        }
-      }
-    },
-    "stylus-loader": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz",
-      "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "lodash.clonedeep": "4.5.0",
-        "when": "3.6.4"
-      }
-    },
-    "supports-color": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
-      "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
-      "dev": true,
-      "requires": {
-        "has-flag": "1.0.0"
-      }
-    },
-    "svgo": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
-      "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
-      "dev": true,
-      "requires": {
-        "coa": "1.0.4",
-        "colors": "1.1.2",
-        "csso": "2.3.2",
-        "js-yaml": "3.7.0",
-        "mkdirp": "0.5.1",
-        "sax": "1.2.4",
-        "whet.extend": "0.9.9"
-      }
-    },
-    "symbol-observable": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
-      "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=",
-      "dev": true
-    },
-    "tapable": {
-      "version": "0.2.8",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
-      "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
-      "dev": true
-    },
-    "tar": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "block-stream": "0.0.9",
-        "fstream": "1.0.11",
-        "inherits": "2.0.3"
-      }
-    },
-    "through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-      "dev": true
-    },
-    "thunky": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz",
-      "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=",
-      "dev": true
-    },
-    "time-stamp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
-      "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=",
-      "dev": true
-    },
-    "timers-browserify": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
-      "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
-      "dev": true,
-      "requires": {
-        "setimmediate": "1.0.5"
-      }
-    },
-    "tmp": {
-      "version": "0.0.31",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
-      "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "1.0.2"
-      }
-    },
-    "to-array": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
-      "dev": true
-    },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
-      "dev": true
-    },
-    "to-fast-properties": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
-      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
-      "dev": true
-    },
-    "toposort": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz",
-      "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=",
-      "dev": true
-    },
-    "tough-cookie": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
-      "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
-      "dev": true,
-      "requires": {
-        "punycode": "1.4.1"
-      }
-    },
-    "trim-newlines": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true
-    },
-    "trim-right": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
-      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
-      "dev": true
-    },
-    "ts-node": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.2.2.tgz",
-      "integrity": "sha1-u9KOOK9Kqj6WB2xGbhsiAZfBo84=",
-      "dev": true,
-      "requires": {
-        "arrify": "1.0.1",
-        "chalk": "2.3.0",
-        "diff": "3.4.0",
-        "make-error": "1.3.0",
-        "minimist": "1.2.0",
-        "mkdirp": "0.5.1",
-        "source-map-support": "0.4.18",
-        "tsconfig": "6.0.0",
-        "v8flags": "3.0.1",
-        "yn": "2.0.0"
-      }
-    },
-    "tsconfig": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz",
-      "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
-      "dev": true,
-      "requires": {
-        "strip-bom": "3.0.0",
-        "strip-json-comments": "2.0.1"
-      },
-      "dependencies": {
-        "strip-bom": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-          "dev": true
-        }
-      }
-    },
-    "tsickle": {
-      "version": "0.21.6",
-      "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
-      "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=",
-      "dev": true,
-      "requires": {
-        "minimist": "1.2.0",
-        "mkdirp": "0.5.1",
-        "source-map": "0.5.7",
-        "source-map-support": "0.4.18"
-      }
-    },
-    "tslib": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz",
-      "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg=="
-    },
-    "tslint": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz",
-      "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "6.26.0",
-        "colors": "1.1.2",
-        "commander": "2.11.0",
-        "diff": "3.4.0",
-        "glob": "7.1.2",
-        "minimatch": "3.0.4",
-        "resolve": "1.5.0",
-        "semver": "5.4.1",
-        "tslib": "1.8.0",
-        "tsutils": "2.12.1"
-      }
-    },
-    "tsutils": {
-      "version": "2.12.1",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.1.tgz",
-      "integrity": "sha1-9Nlc4zkciXHkblTEzw7bCiHdWyQ=",
-      "dev": true,
-      "requires": {
-        "tslib": "1.8.0"
-      }
-    },
-    "tty-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
-      "dev": true
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true,
-      "optional": true
-    },
-    "type-is": {
-      "version": "1.6.15",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
-      "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
-      "dev": true,
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "2.1.17"
-      }
-    },
-    "typescript": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz",
-      "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.5.tgz",
-      "integrity": "sha512-tSqlO7/GZHAVSw6mbtJt2kz0ZcUrKUH7Xg92o52aE+gL0r6cXiASZY4dpHqQ7RVGXmoQuPA2qAkG4TkP59f8XA==",
-      "dev": true,
-      "requires": {
-        "commander": "2.11.0",
-        "source-map": "0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "uglify-to-browserify": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
-      "dev": true,
-      "optional": true
-    },
-    "uglifyjs-webpack-plugin": {
-      "version": "0.4.6",
-      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz",
-      "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
-      "dev": true,
-      "requires": {
-        "source-map": "0.5.7",
-        "uglify-js": "2.8.29",
-        "webpack-sources": "1.0.1"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true
-        },
-        "cliui": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "requires": {
-            "center-align": "0.1.3",
-            "right-align": "0.1.3",
-            "wordwrap": "0.0.2"
-          }
-        },
-        "uglify-js": {
-          "version": "2.8.29",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
-          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
-          "dev": true,
-          "requires": {
-            "source-map": "0.5.7",
-            "uglify-to-browserify": "1.0.2",
-            "yargs": "3.10.0"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.2",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "3.10.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "requires": {
-            "camelcase": "1.2.1",
-            "cliui": "2.1.0",
-            "decamelize": "1.2.0",
-            "window-size": "0.1.0"
-          }
-        }
-      }
-    },
-    "ultron": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
-      "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
-      "dev": true
-    },
-    "uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
-      "dev": true
-    },
-    "uniqid": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
-      "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
-      "dev": true,
-      "requires": {
-        "macaddress": "0.2.8"
-      }
-    },
-    "uniqs": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
-      "dev": true
-    },
-    "universalify": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
-      "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
-      "dev": true
-    },
-    "upper-case": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
-      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
-      "dev": true
-    },
-    "url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
-      "dev": true,
-      "requires": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
-          "dev": true
-        }
-      }
-    },
-    "url-loader": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz",
-      "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "1.1.0",
-        "mime": "1.4.1",
-        "schema-utils": "0.3.0"
-      }
-    },
-    "url-parse": {
-      "version": "1.1.9",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz",
-      "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=",
-      "dev": true,
-      "requires": {
-        "querystringify": "1.0.0",
-        "requires-port": "1.0.0"
-      },
-      "dependencies": {
-        "querystringify": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
-          "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
-          "dev": true
-        }
-      }
-    },
-    "useragent": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
-      "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
-      "dev": true,
-      "requires": {
-        "lru-cache": "2.2.4",
-        "tmp": "0.0.31"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
-          "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
-          "dev": true
-        }
-      }
-    },
-    "util": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.1"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
-          "dev": true
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
-      "dev": true
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
-      "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
-      "dev": true
-    },
-    "v8flags": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz",
-      "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=",
-      "dev": true,
-      "requires": {
-        "homedir-polyfill": "1.0.1"
-      }
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
-      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "1.0.2",
-        "spdx-expression-parse": "1.0.4"
-      }
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
-      "dev": true
-    },
-    "vendors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
-      "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
-      "dev": true
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "1.3.0"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "vlq": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
-      "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
-      "dev": true
-    },
-    "vm-browserify": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
-      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
-      "dev": true,
-      "requires": {
-        "indexof": "0.0.1"
-      }
-    },
-    "void-elements": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
-      "dev": true
-    },
-    "watchpack": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
-      "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",
-      "dev": true,
-      "requires": {
-        "async": "2.5.0",
-        "chokidar": "1.7.0",
-        "graceful-fs": "4.1.11"
-      }
-    },
-    "wbuf": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz",
-      "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
-      "dev": true,
-      "requires": {
-        "minimalistic-assert": "1.0.0"
-      }
-    },
-    "webdriver-js-extender": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz",
-      "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=",
-      "dev": true,
-      "requires": {
-        "@types/selenium-webdriver": "2.53.42",
-        "selenium-webdriver": "2.53.3"
-      },
-      "dependencies": {
-        "adm-zip": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz",
-          "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=",
-          "dev": true
-        },
-        "sax": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz",
-          "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=",
-          "dev": true
-        },
-        "selenium-webdriver": {
-          "version": "2.53.3",
-          "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz",
-          "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=",
-          "dev": true,
-          "requires": {
-            "adm-zip": "0.4.4",
-            "rimraf": "2.6.2",
-            "tmp": "0.0.24",
-            "ws": "1.1.2",
-            "xml2js": "0.4.4"
-          }
-        },
-        "tmp": {
-          "version": "0.0.24",
-          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz",
-          "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=",
-          "dev": true
-        },
-        "xml2js": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz",
-          "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=",
-          "dev": true,
-          "requires": {
-            "sax": "0.6.1",
-            "xmlbuilder": "9.0.4"
-          }
-        }
-      }
-    },
-    "webpack": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.7.1.tgz",
-      "integrity": "sha512-8MR+gVfxsvtx4J1UlbRGkUJEpDQUBFmisRmpPO5cVLgF21R8UMChX39OOjDz63a+m/iswGoqATszdZB2VCsYuA==",
-      "dev": true,
-      "requires": {
-        "acorn": "5.1.2",
-        "acorn-dynamic-import": "2.0.2",
-        "ajv": "5.3.0",
-        "ajv-keywords": "2.1.0",
-        "async": "2.5.0",
-        "enhanced-resolve": "3.4.1",
-        "escope": "3.6.0",
-        "interpret": "1.0.4",
-        "json-loader": "0.5.7",
-        "json5": "0.5.1",
-        "loader-runner": "2.3.0",
-        "loader-utils": "1.1.0",
-        "memory-fs": "0.4.1",
-        "mkdirp": "0.5.1",
-        "node-libs-browser": "2.0.0",
-        "source-map": "0.5.7",
-        "supports-color": "4.5.0",
-        "tapable": "0.2.8",
-        "uglifyjs-webpack-plugin": "0.4.6",
-        "watchpack": "1.4.0",
-        "webpack-sources": "1.0.1",
-        "yargs": "8.0.2"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
-          "dev": true
-        },
-        "find-up": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
-          "dev": true,
-          "requires": {
-            "locate-path": "2.0.0"
-          }
-        },
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
-        },
-        "load-json-file": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
-          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "4.1.11",
-            "parse-json": "2.2.0",
-            "pify": "2.3.0",
-            "strip-bom": "3.0.0"
-          }
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-          "dev": true,
-          "requires": {
-            "execa": "0.7.0",
-            "lcid": "1.0.0",
-            "mem": "1.1.0"
-          }
-        },
-        "path-type": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
-          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
-          "dev": true,
-          "requires": {
-            "pify": "2.3.0"
-          }
-        },
-        "read-pkg": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
-          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
-          "dev": true,
-          "requires": {
-            "load-json-file": "2.0.0",
-            "normalize-package-data": "2.4.0",
-            "path-type": "2.0.0"
-          }
-        },
-        "read-pkg-up": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
-          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
-          "dev": true,
-          "requires": {
-            "find-up": "2.1.0",
-            "read-pkg": "2.0.0"
-          }
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "2.0.0",
-            "strip-ansi": "4.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "3.0.0"
-          }
-        },
-        "strip-bom": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "2.0.0"
-          }
-        },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "8.0.2",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
-          "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
-          "dev": true,
-          "requires": {
-            "camelcase": "4.1.0",
-            "cliui": "3.2.0",
-            "decamelize": "1.2.0",
-            "get-caller-file": "1.0.2",
-            "os-locale": "2.1.0",
-            "read-pkg-up": "2.0.0",
-            "require-directory": "2.1.1",
-            "require-main-filename": "1.0.1",
-            "set-blocking": "2.0.0",
-            "string-width": "2.1.1",
-            "which-module": "2.0.0",
-            "y18n": "3.2.1",
-            "yargs-parser": "7.0.0"
-          }
-        },
-        "yargs-parser": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
-          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
-          "dev": true,
-          "requires": {
-            "camelcase": "4.1.0"
-          }
-        }
-      }
-    },
-    "webpack-concat-plugin": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/webpack-concat-plugin/-/webpack-concat-plugin-1.4.0.tgz",
-      "integrity": "sha512-Ym9Qm5Sw9oXJYChNJk09I/yaXDaV3UDxsa07wcCvILzIeSJTnSUZjhS4y2YkULzgE8VHOv9X04KtlJPZGwXqMg==",
-      "dev": true,
-      "requires": {
-        "md5": "2.2.1",
-        "uglify-js": "2.8.29"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true
-        },
-        "cliui": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "requires": {
-            "center-align": "0.1.3",
-            "right-align": "0.1.3",
-            "wordwrap": "0.0.2"
-          }
-        },
-        "uglify-js": {
-          "version": "2.8.29",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
-          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
-          "dev": true,
-          "requires": {
-            "source-map": "0.5.7",
-            "uglify-to-browserify": "1.0.2",
-            "yargs": "3.10.0"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.2",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "3.10.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "requires": {
-            "camelcase": "1.2.1",
-            "cliui": "2.1.0",
-            "decamelize": "1.2.0",
-            "window-size": "0.1.0"
-          }
-        }
-      }
-    },
-    "webpack-dev-middleware": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz",
-      "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=",
-      "dev": true,
-      "requires": {
-        "memory-fs": "0.4.1",
-        "mime": "1.4.1",
-        "path-is-absolute": "1.0.1",
-        "range-parser": "1.2.0",
-        "time-stamp": "2.0.0"
-      }
-    },
-    "webpack-dev-server": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.7.1.tgz",
-      "integrity": "sha1-IVgPWgjNBlxxFEz29hw0W8pZqLg=",
-      "dev": true,
-      "requires": {
-        "ansi-html": "0.0.7",
-        "bonjour": "3.5.0",
-        "chokidar": "1.7.0",
-        "compression": "1.7.1",
-        "connect-history-api-fallback": "1.4.0",
-        "del": "3.0.0",
-        "express": "4.16.2",
-        "html-entities": "1.2.1",
-        "http-proxy-middleware": "0.17.4",
-        "internal-ip": "1.2.0",
-        "ip": "1.1.5",
-        "loglevel": "1.5.1",
-        "opn": "4.0.2",
-        "portfinder": "1.0.13",
-        "selfsigned": "1.10.1",
-        "serve-index": "1.9.1",
-        "sockjs": "0.3.18",
-        "sockjs-client": "1.1.4",
-        "spdy": "3.4.7",
-        "strip-ansi": "3.0.1",
-        "supports-color": "3.2.3",
-        "webpack-dev-middleware": "1.12.0",
-        "yargs": "6.6.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true
-        },
-        "opn": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
-          "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
-          "dev": true,
-          "requires": {
-            "object-assign": "4.1.1",
-            "pinkie-promise": "2.0.1"
-          }
-        },
-        "yargs": {
-          "version": "6.6.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
-          "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
-          "dev": true,
-          "requires": {
-            "camelcase": "3.0.0",
-            "cliui": "3.2.0",
-            "decamelize": "1.2.0",
-            "get-caller-file": "1.0.2",
-            "os-locale": "1.4.0",
-            "read-pkg-up": "1.0.1",
-            "require-directory": "2.1.1",
-            "require-main-filename": "1.0.1",
-            "set-blocking": "2.0.0",
-            "string-width": "1.0.2",
-            "which-module": "1.0.0",
-            "y18n": "3.2.1",
-            "yargs-parser": "4.2.1"
-          }
-        },
-        "yargs-parser": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
-          "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
-          "dev": true,
-          "requires": {
-            "camelcase": "3.0.0"
-          }
-        }
-      }
-    },
-    "webpack-merge": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz",
-      "integrity": "sha1-atciI7PguDflMeRZfBmfkJNhUR4=",
-      "dev": true,
-      "requires": {
-        "lodash": "4.17.4"
-      }
-    },
-    "webpack-sources": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz",
-      "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==",
-      "dev": true,
-      "requires": {
-        "source-list-map": "2.0.0",
-        "source-map": "0.5.7"
-      }
-    },
-    "websocket-driver": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
-      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
-      "dev": true,
-      "requires": {
-        "http-parser-js": "0.4.9",
-        "websocket-extensions": "0.1.2"
-      }
-    },
-    "websocket-extensions": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz",
-      "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=",
-      "dev": true
-    },
-    "when": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
-      "dev": true
-    },
-    "whet.extend": {
-      "version": "0.9.9",
-      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
-      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
-      "dev": true
-    },
-    "which": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
-      "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
-      "dev": true,
-      "requires": {
-        "isexe": "2.0.0"
-      }
-    },
-    "which-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-      "dev": true
-    },
-    "wide-align": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
-      "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
-      "dev": true,
-      "requires": {
-        "string-width": "1.0.2"
-      }
-    },
-    "window-size": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
-      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
-      "dev": true
-    },
-    "wordwrap": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-      "dev": true
-    },
-    "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
-      "requires": {
-        "string-width": "1.0.2",
-        "strip-ansi": "3.0.1"
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    },
-    "ws": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
-      "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
-      "dev": true,
-      "requires": {
-        "options": "0.0.6",
-        "ultron": "1.0.2"
-      }
-    },
-    "wtf-8": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
-      "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
-      "dev": true
-    },
-    "xml-char-classes": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz",
-      "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=",
-      "dev": true
-    },
-    "xml2js": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
-      "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
-      "dev": true,
-      "requires": {
-        "sax": "1.2.4",
-        "xmlbuilder": "9.0.4"
-      }
-    },
-    "xmlbuilder": {
-      "version": "9.0.4",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz",
-      "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=",
-      "dev": true
-    },
-    "xmldom": {
-      "version": "0.1.27",
-      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
-      "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
-      "dev": true
-    },
-    "xmlhttprequest-ssl": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
-      "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
-      "dev": true
-    },
-    "y18n": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-      "dev": true
-    },
-    "yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
-    },
-    "yargs": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "camelcase": "3.0.0",
-        "cliui": "3.2.0",
-        "decamelize": "1.2.0",
-        "get-caller-file": "1.0.2",
-        "os-locale": "1.4.0",
-        "read-pkg-up": "1.0.1",
-        "require-directory": "2.1.1",
-        "require-main-filename": "1.0.1",
-        "set-blocking": "2.0.0",
-        "string-width": "1.0.2",
-        "which-module": "1.0.0",
-        "y18n": "3.2.1",
-        "yargs-parser": "5.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "yargs-parser": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "camelcase": "3.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
-      "dev": true
-    },
-    "yn": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
-      "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
-      "dev": true
-    },
-    "zone.js": {
-      "version": "0.8.18",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz",
-      "integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q=="
-    }
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/package.json b/sandbox/airavata-kubernetes/web-console/package.json
deleted file mode 100644
index d8c29db..0000000
--- a/sandbox/airavata-kubernetes/web-console/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "name": "web-console",
-  "version": "0.0.0",
-  "license": "MIT",
-  "scripts": {
-    "ng": "ng",
-    "start": "ng serve",
-    "build": "ng build",
-    "test": "ng test",
-    "lint": "ng lint",
-    "e2e": "ng e2e"
-  },
-  "private": true,
-  "dependencies": {
-    "@angular/animations": "^4.2.4",
-    "@angular/common": "^4.2.4",
-    "@angular/compiler": "^4.2.4",
-    "@angular/core": "^4.2.4",
-    "@angular/forms": "^4.2.4",
-    "@angular/http": "^4.2.4",
-    "@angular/platform-browser": "^4.2.4",
-    "@angular/platform-browser-dynamic": "^4.2.4",
-    "@angular/router": "^4.2.4",
-    "@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.5",
-    "core-js": "^2.4.1",
-    "zone.js": "^0.8.14"
-  },
-  "devDependencies": {
-    "@angular/cli": "1.4.9",
-    "@angular/compiler-cli": "^4.2.4",
-    "@angular/language-service": "^4.2.4",
-    "@types/jasmine": "~2.5.53",
-    "@types/jasminewd2": "~2.0.2",
-    "@types/node": "~6.0.60",
-    "codelyzer": "~3.2.0",
-    "jasmine-core": "~2.6.2",
-    "jasmine-spec-reporter": "~4.1.0",
-    "karma": "~1.7.0",
-    "karma-chrome-launcher": "~2.1.1",
-    "karma-cli": "~1.0.1",
-    "karma-coverage-istanbul-reporter": "^1.2.1",
-    "karma-jasmine": "~1.1.0",
-    "karma-jasmine-html-reporter": "^0.2.2",
-    "protractor": "~5.1.2",
-    "ts-node": "~3.2.0",
-    "tslint": "~5.7.0",
-    "typescript": "~2.3.3"
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/protractor.conf.js b/sandbox/airavata-kubernetes/web-console/protractor.conf.js
deleted file mode 100644
index 7ee3b5e..0000000
--- a/sandbox/airavata-kubernetes/web-console/protractor.conf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Protractor configuration file, see link for more information
-// https://github.com/angular/protractor/blob/master/lib/config.ts
-
-const { SpecReporter } = require('jasmine-spec-reporter');
-
-exports.config = {
-  allScriptsTimeout: 11000,
-  specs: [
-    './e2e/**/*.e2e-spec.ts'
-  ],
-  capabilities: {
-    'browserName': 'chrome'
-  },
-  directConnect: true,
-  baseUrl: 'http://localhost:4200/',
-  framework: 'jasmine',
-  jasmineNodeOpts: {
-    showColors: true,
-    defaultTimeoutInterval: 30000,
-    print: function() {}
-  },
-  onPrepare() {
-    require('ts-node').register({
-      project: 'e2e/tsconfig.e2e.json'
-    });
-    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
-  }
-};
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.component.css b/sandbox/airavata-kubernetes/web-console/src/app/app.component.css
deleted file mode 100644
index e69de29..0000000
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.component.html b/sandbox/airavata-kubernetes/web-console/src/app/app.component.html
deleted file mode 100644
index 46d517b..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/app.component.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--The content below is only a placeholder and can be replaced.-->
-<div style="text-align:center">
-  <h1>
-    Welcome to {{title}}!
-  </h1>
-  <img width="300" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNy [...]
-</div>
-<h2>Here are some links to help you start: </h2>
-<ul>
-  <li>
-    <h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2>
-  </li>
-  <li>
-    <h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2>
-  </li>
-  <li>
-    <h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2>
-  </li>
-</ul>
-
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.component.spec.ts b/sandbox/airavata-kubernetes/web-console/src/app/app.component.spec.ts
deleted file mode 100644
index bcbdf36..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/app.component.spec.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { TestBed, async } from '@angular/core/testing';
-import { AppComponent } from './app.component';
-describe('AppComponent', () => {
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [
-        AppComponent
-      ],
-    }).compileComponents();
-  }));
-  it('should create the app', async(() => {
-    const fixture = TestBed.createComponent(AppComponent);
-    const app = fixture.debugElement.componentInstance;
-    expect(app).toBeTruthy();
-  }));
-  it(`should have as title 'app'`, async(() => {
-    const fixture = TestBed.createComponent(AppComponent);
-    const app = fixture.debugElement.componentInstance;
-    expect(app.title).toEqual('app');
-  }));
-  it('should render title in a h1 tag', async(() => {
-    const fixture = TestBed.createComponent(AppComponent);
-    fixture.detectChanges();
-    const compiled = fixture.debugElement.nativeElement;
-    expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!');
-  }));
-});
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/app.component.ts
deleted file mode 100644
index 9ae6efd..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/app.component.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Component } from '@angular/core';
-import {ApiService} from "./services/api.service";
-import {Http, ConnectionBackend} from "@angular/http";
-
-@Component({
-  selector: 'app-root',
-  templateUrl: './app.component.html',
-  template: `<router-outlet></router-outlet>`,
-  providers: [ApiService]
-})
-export class AppComponent {
-  title = 'app';
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.module.ts b/sandbox/airavata-kubernetes/web-console/src/app/app.module.ts
deleted file mode 100644
index 76c7338..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/app.module.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { BrowserModule } from '@angular/platform-browser';
-import { NgModule } from '@angular/core';
-
-import { AppComponent } from './app.component';
-import {AppDepListComponent} from "./components/app-dep/list/app.dep.list.component";
-import {AppIfaceListComponent} from "./components/app-iface/list/app.iface.list.component";
-import {AppModuleListComponent} from "./components/app-module/list/app.module.list.component";
-import {ComputeListComponent} from "./components/compute/list/compute.list.component";
-import {DashboardComponent} from "./components/dashboard/dashboard.component";
-import {ExperimentListComponent} from "./components/experiment/list/experiment.list.component";
-import {routing} from "./app.routing";
-import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
-import {HttpModule} from "@angular/http";
-import {FormsModule} from "@angular/forms";
-import {ExperimentDetailComponent} from "./components/experiment/detail/experiment.detail";
-import {ProcessDetailComponent} from "./components/process/detail/process.detail.component";
-import {SetupComponent} from "./components/setup/setup.component";
-
-@NgModule({
-  declarations: [
-    AppComponent,
-    AppDepListComponent,
-    AppIfaceListComponent,
-    AppModuleListComponent,
-    ComputeListComponent,
-    DashboardComponent,
-    ExperimentListComponent,
-    ExperimentDetailComponent,
-    ProcessDetailComponent,
-    SetupComponent
-  ],
-  imports: [
-    NgbModule.forRoot(),
-    BrowserModule,
-    routing,
-    HttpModule,
-    FormsModule
-  ],
-  providers: [],
-  bootstrap: [AppComponent]
-})
-export class AppModule { }
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/app.routing.ts b/sandbox/airavata-kubernetes/web-console/src/app/app.routing.ts
deleted file mode 100644
index fb9c5c4..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/app.routing.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import {RouterModule, Routes} from "@angular/router";
-import {AppComponent} from "./app.component";
-import {DashboardComponent} from "./components/dashboard/dashboard.component";
-import {DASHBOARD_ROUTES} from "./components/dashboard/dashboard.routes";
-
-const APP_ROUTES: Routes = [
-    { path: '', component: DashboardComponent, children: DASHBOARD_ROUTES },
-    { path: '', component: DashboardComponent },
-    { path: '**', redirectTo: ''}
-];
-
-export const routing = RouterModule.forRoot(APP_ROUTES);
-
-
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/app.dep.list.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/app.dep.list.component.ts
deleted file mode 100644
index 9108ff4..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/app.dep.list.component.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {ApplicationDeployment} from "../../../models/application/application.deployment.model";
-import {NgbModalRef, NgbModal, ModalDismissReasons} from "@ng-bootstrap/ng-bootstrap";
-import {AppDeploymentService} from "../../../services/deployment.service";
-import {ComputeService} from "../../../services/compute.service";
-import {ComputeResource} from "../../../models/compute/compute.resource.model";
-import {AppModuleService} from "../../../services/app.module.service";
-import {ApplicationModule} from "../../../models/application/application.module.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './list.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [AppDeploymentService, ComputeService, AppModuleService]
-})
-export class AppDepListComponent {
-
-  closeResult: string;
-  deployments: Array<ApplicationDeployment> = [];
-  newAppDep = new ApplicationDeployment();
-  createModalRef: NgbModalRef;
-  computeResources: Array<ComputeResource> = [];
-  appModules: Array<ApplicationModule> = [];
-
-  constructor(private modalService: NgbModal, private depService: AppDeploymentService,
-              private computeService: ComputeService, private appModuleService: AppModuleService) {
-    this.getAllDeployments();
-    this.getAllComputes();
-    this.getAllAppModules();
-  }
-
-  openAsModel(content) {
-    this.createModalRef = this.modalService.open(content);
-    this.createModalRef.result.then((result) => {
-      this.closeResult = `Closed with: ${result}`;
-    }, (reason) => {
-      this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
-    });
-  }
-
-  private getDismissReason(reason: any): string {
-    if (reason === ModalDismissReasons.ESC) {
-      return 'by pressing ESC';
-    } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
-      return 'by clicking on a backdrop';
-    } else {
-      return  `with: ${reason}`;
-    }
-  }
-
-  addNewAppDeployment() {
-    this.depService.addAppDeployment(this.newAppDep).subscribe(data => {
-        console.log("Created app deployment" + data);
-        this.createModalRef.close();
-        this.getAllDeployments();
-      },
-      err => {
-        console.log(err);
-        this.createModalRef.close();
-      });
-  }
-
-  getAllDeployments() {
-    this.depService.getAllAppDeployments().subscribe(data => {
-      this.deployments = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllComputes() {
-    this.computeService.getAllComputeResources().subscribe(data => {
-      console.log("All compute data2");
-      this.computeResources = data;
-      console.log(this.computeResources);
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllAppModules() {
-    this.appModuleService.getAllAppModules().subscribe(data => {
-      this.appModules = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/list.html b/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/list.html
deleted file mode 100644
index 8891672..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-dep/list/list.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<ng-template #content let-c="close" let-d="dismiss">
-  <div class="modal-header">
-    <h4 class="modal-title">Add Application Deployment</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-
-  <div class="modal-body">
-    <form>
-      <div class="form-group">
-        <label for="inputName">Name</label>
-        <input type="text" [(ngModel)]="newAppDep.name" class="form-control" id="inputName" name="inputName" placeholder="New host">
-      </div>
-      <div class="form-group">
-        <label for="appModule">App Module</label>
-        <select [(ngModel)]="newAppDep.applicationModuleId" id="appModule" name="appModule" class="form-control">
-          <option *ngFor="let module of this.appModules" value="{{module.id}}">{{ module.name }}</option>
-        </select>
-      </div>
-      <div class="form-group">
-        <label for="computeResource">Compute Resource</label>
-        <select [(ngModel)]="newAppDep.computeResourceId" id="computeResource" name="computeResource" class="form-control">
-          <option *ngFor="let compute of this.computeResources" value="{{compute.id}}">{{ compute.name }}</option>
-        </select>
-      </div>
-      <div class="form-group">
-        <label for="executablePath">Executable Path</label>
-        <input type="text" [(ngModel)]="newAppDep.executablePath" class="form-control" id="executablePath" name="executablePath" placeholder="/opt/exec">
-      </div>
-      <div class="form-group">
-        <label for="preJobCommand">Pre Job Command</label>
-        <input type="text" [(ngModel)]="newAppDep.preJobCommand" class="form-control" id="preJobCommand" name="preJobCommand" placeholder="/opt/exec">
-      </div>
-      <div class="form-group">
-        <label for="postJobCommand">Post Job Command</label>
-        <input type="text" [(ngModel)]="newAppDep.postJobCommand" class="form-control" id="postJobCommand" name="postJobCommand" placeholder="/opt/exec">
-      </div>
-    </form>
-  </div>
-
-  <div class="modal-footer">
-    <button type="submit" class="btn btn-primary" (click)="addNewAppDeployment()">Add</button>
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<h4>App Deployment</h4>
-
-<button class="btn btn-default-outline" (click)="openAsModel(content)">Add New Deployment</button>
-
-<table class="table">
-  <thead class="thead-light">
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Name</th>
-    <th scope="col">Compute Resource</th>
-    <th scope="col">App Module</th>
-    <th scope="col">Exec Path</th>
-    <th scope="col">Pre Job</th>
-    <th scope="col">Post Job</th>
-  </tr>
-  </thead>
-
-  <tbody>
-  <tr *ngFor="let dep of this.deployments">
-    <th scope="row">{{ dep.id }}</th>
-    <td>{{ dep.name }}</td>
-    <td>{{ dep.computeResourceId }}</td>
-    <td>{{ dep.applicationModuleId }}</td>
-    <td>{{ dep.executablePath }}</td>
-    <td>{{ dep.preJobCommand }}</td>
-    <td>{{ dep.postJobCommand }}</td>
-  </tr>
-  </tbody>
-
-</table>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/app.iface.list.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/app.iface.list.component.ts
deleted file mode 100644
index 2426ea2..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/app.iface.list.component.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {ApplicationIfaceService} from "../../../services/application.iface.service";
-import {NgbModal, NgbModalRef, ModalDismissReasons} from "@ng-bootstrap/ng-bootstrap";
-import {ApplicationIface} from "../../../models/application/application.iface.model";
-import {ApplicationModule} from "../../../models/application/application.module.model";
-import {AppModuleService} from "../../../services/app.module.service";
-import {ApplicationInput} from "../../../models/application/application.ipnput.model";
-import {ApplicationOutput} from "../../../models/application/application.output.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './list.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [ApplicationIfaceService, AppModuleService]
-})
-export class AppIfaceListComponent {
-  closeResult: string;
-  appIfaces: Array<ApplicationIface> = [];
-  newAppIface = new ApplicationIface();
-  createModalRef: NgbModalRef;
-  appModules: Array<ApplicationModule> = [];
-
-
-  constructor(private modalService: NgbModal, private appIfaceService: ApplicationIfaceService,
-              private appModuleService: AppModuleService) {
-    this.getAllAppIfaces();
-    this.getAllAppModules();
-  }
-
-  addNewInput() {
-    let input: ApplicationInput = new ApplicationInput();
-    this.newAppIface.inputs.push(input);
-  }
-
-  addNewOutput() {
-    let output: ApplicationOutput = new ApplicationOutput();
-    this.newAppIface.outputs.push(output)
-  }
-
-  openAsModel(content) {
-    this.createModalRef = this.modalService.open(content, {size: "lg"});
-    this.createModalRef.result.then((result) => {
-      this.closeResult = `Closed with: ${result}`;
-    }, (reason) => {
-      this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
-    });
-  }
-
-  private getDismissReason(reason: any): string {
-    if (reason === ModalDismissReasons.ESC) {
-      return 'by pressing ESC';
-    } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
-      return 'by clicking on a backdrop';
-    } else {
-      return  `with: ${reason}`;
-    }
-  }
-
-  addNewAppIface() {
-    this.appIfaceService.addApplicationIface(this.newAppIface).subscribe(data => {
-        console.log("Created application interface " + data);
-        this.createModalRef.close();
-        this.getAllAppIfaces();
-      },
-      err => {
-        console.log(err);
-        this.createModalRef.close();
-      });
-  }
-
-  getAllAppIfaces() {
-    this.appIfaceService.getAllApplicationIfaces().subscribe(data => {
-      this.appIfaces = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllAppModules() {
-    this.appModuleService.getAllAppModules().subscribe(data => {
-      this.appModules = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/list.html b/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/list.html
deleted file mode 100644
index 9ea972a..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-iface/list/list.html
+++ /dev/null
@@ -1,111 +0,0 @@
-
-<ng-template #content let-c="close" let-d="dismiss">
-  <div class="modal-header">
-    <h4 class="modal-title">Add app interface</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-  <div class="modal-body">
-    <form>
-      <div class="form-group">
-        <label for="inputName">Name</label>
-        <input type="text" [(ngModel)]="newAppIface.name" class="form-control" id="inputName" name="inputName" placeholder="New Interface">
-      </div>
-      <div class="form-group">
-        <label for="description">Description</label>
-        <input type="text" [(ngModel)]="newAppIface.description" class="form-control" id="description" name="description" placeholder="New Interface">
-      </div>
-      <div class="form-group">
-        <label for="appModule">App Module</label>
-        <select [(ngModel)]="newAppIface.applicationModuleId" id="appModule" name="appModule" class="form-control">
-          <option *ngFor="let module of this.appModules" value="{{module.id}}">{{ module.name }}</option>
-        </select>
-      </div>
-
-
-      Inputs
-      <button class="btn" (click)="addNewInput()">Add</button>
-      <hr/>
-      <div *ngFor="let input of newAppIface.inputs; let i = index" class="form-row">
-        <div class="form-group col-md-3">
-          <label for="inputParamName-{{i}}">Name</label>
-          <input type="text" [(ngModel)]="input.name" class="form-control" id="inputParamName-{{i}}" name="inputParamName-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamType-{{i}}">Type</label>
-          <select [(ngModel)]="input.type" id="inputParamType-{{i}}" name="inputParamType-{{i}}" class="form-control">
-            <option selected value="0">String</option>
-            <option value="1">Integer</option>
-            <option value="2">Float</option>
-            <option value="3">URI</option>
-          </select>
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamValue-{{i}}">Value</label>
-          <input type="text" [(ngModel)]="input.value" class="form-control" id="inputParamValue-{{i}}" name="inputParamValue-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamArguments-{{i}}">Arguments</label>
-          <input type="text" [(ngModel)]="input.arguments" class="form-control" id="inputParamArguments-{{i}}" name="inputParamArguments-{{i}}" placeholder="">
-        </div>
-      </div>
-
-      Outputs
-      <button class="btn" (click)="addNewOutput()">Add</button>
-      <hr/>
-      <div *ngFor="let output of newAppIface.outputs; let i = index" class="form-row">
-        <div class="form-group col-md-3">
-          <label for="outputParamName-{{i}}">Name</label>
-          <input type="text" [(ngModel)]="output.name" class="form-control" id="outputParamName-{{i}}" name="outputParamName-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="outputParamType-{{i}}">Type</label>
-          <select [(ngModel)]="output.type" id="outputParamType-{{i}}" name="outputParamType-{{i}}" class="form-control">
-            <option selected value="0">String</option>
-            <option value="1">Integer</option>
-            <option value="2">Float</option>
-            <option value="3">URI</option>
-            <option value="5">Std Out</option>
-            <option value="6">Std Err</option>
-          </select>
-        </div>
-        <div class="form-group col-md-3">
-          <label for="outputParamValue-{{i}}">Value</label>
-          <input type="text" [(ngModel)]="output.value" class="form-control" id="outputParamValue-{{i}}" name="outputParamValue-{{i}}" placeholder="">
-        </div>
-      </div>
-
-    </form>
-  </div>
-  <div class="modal-footer">
-    <button type="submit" class="btn btn-primary" (click)="addNewAppIface()">Add</button>
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<h4>Application Interfaces</h4>
-
-<button class="btn btn-default-outline" (click)="openAsModel(content)">Add App Interface</button>
-
-<table class="table">
-  <thead class="thead-light">
-
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-    <th scope="col">App Module</th>
-  </tr>
-  </thead>
-
-  <tbody>
-  <tr *ngFor="let iface of this.appIfaces">
-    <th scope="row">{{ iface.id }}</th>
-    <td>{{ iface.name }}</td>
-    <td>{{ iface.description }}</td>
-    <td>{{ iface.applicationModuleId }}</td>
-  </tr>
-  </tbody>
-
-</table>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/app.module.list.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/app.module.list.component.ts
deleted file mode 100644
index 242adb9..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/app.module.list.component.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {NgbModal, ModalDismissReasons, NgbModalRef} from '@ng-bootstrap/ng-bootstrap';
-import {ApiService} from "../../../services/api.service";
-import {AppModule} from "../../../app.module";
-import {AppModuleService} from "../../../services/app.module.service";
-import {ApplicationModule} from "../../../models/application/application.module.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './list.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [AppModuleService]
-})
-export class AppModuleListComponent {
-  closeResult: string;
-  appModules: Array<ApplicationModule> = [];
-  newAppModule = new ApplicationModule();
-  createModalRef: NgbModalRef;
-
-  constructor(private modalService: NgbModal, private appModuleService: AppModuleService) {
-    this.getAllAppModules();
-  }
-
-  openAsModel(content) {
-    this.createModalRef = this.modalService.open(content);
-    this.createModalRef.result.then((result) => {
-      this.closeResult = `Closed with: ${result}`;
-    }, (reason) => {
-      this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
-    });
-  }
-
-  private getDismissReason(reason: any): string {
-    if (reason === ModalDismissReasons.ESC) {
-      return 'by pressing ESC';
-    } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
-      return 'by clicking on a backdrop';
-    } else {
-      return  `with: ${reason}`;
-    }
-  }
-
-  addNewAppModule() {
-    this.appModuleService.addAppModules(this.newAppModule).subscribe(data => {
-        console.log("Created app module " + data);
-        this.createModalRef.close();
-        this.getAllAppModules();
-      },
-      err => {
-        console.log(err);
-        this.createModalRef.close();
-      });
-  }
-
-  getAllAppModules() {
-    this.appModuleService.getAllAppModules().subscribe(data => {
-      this.appModules = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/list.html b/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/list.html
deleted file mode 100644
index 91b5d1f..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/app-module/list/list.html
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-<ng-template #content let-c="close" let-d="dismiss">
-  <div class="modal-header">
-    <h4 class="modal-title">Add new App Module</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-  <div class="modal-body">
-    <form>
-      <div class="form-group">
-        <label for="inputName">Name</label>
-        <input type="text" [(ngModel)]="newAppModule.name" class="form-control" id="inputName" name="inputName" placeholder="New Module">
-      </div>
-      <div class="form-group">
-        <label for="version">Version</label>
-        <input type="text" [(ngModel)]="newAppModule.version" class="form-control" id="version" name="version" placeholder="v1.0">
-      </div>
-      <div class="form-group">
-        <label for="description">Description</label>
-        <input type="text" [(ngModel)]="newAppModule.description" class="form-control" id="description" name="description" placeholder="Mew Module">
-      </div>
-    </form>
-  </div>
-  <div class="modal-footer">
-    <button type="submit" class="btn btn-primary" (click)="addNewAppModule()">Add</button>
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<h4>Application Module</h4>
-
-<button class="btn btn-default-outline" (click)="openAsModel(content)">Add Application Module</button>
-
-<table class="table">
-  <thead class="thead-light">
-
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Name</th>
-    <th scope="col">Version</th>
-    <th scope="col">Description</th>
-  </tr>
-  </thead>
-
-  <tbody>
-  <tr *ngFor="let app of this.appModules">
-    <th scope="row">{{ app.id }}</th>
-    <td>{{ app.name }}</td>
-    <td>{{ app.version }}</td>
-    <td>{{ app.description }}</td>
-  </tr>
-  </tbody>
-
-</table>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/compute.list.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/compute.list.component.ts
deleted file mode 100644
index 012aaa8..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/compute.list.component.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {NgbModal, ModalDismissReasons, NgbModalRef} from '@ng-bootstrap/ng-bootstrap';
-import {ComputeService} from "../../../services/compute.service";
-import {ComputeResource} from "../../../models/compute/compute.resource.model";
-import {ApiService} from "../../../services/api.service";
-
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './list.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [ComputeService]
-})
-export class ComputeListComponent {
-
-  closeResult: string;
-  computeResources: Array<ComputeResource> = [];
-  newComputeResource = new ComputeResource();
-  createModalRef: NgbModalRef;
-
-
-  constructor(private modalService: NgbModal, private computeService: ComputeService) {
-    this.getAllComputes();
-  }
-
-  openAsModel(content) {
-    this.createModalRef = this.modalService.open(content);
-    this.createModalRef.result.then((result) => {
-      this.closeResult = `Closed with: ${result}`;
-    }, (reason) => {
-      this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
-    });
-  }
-
-  private getDismissReason(reason: any): string {
-    if (reason === ModalDismissReasons.ESC) {
-      return 'by pressing ESC';
-    } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
-      return 'by clicking on a backdrop';
-    } else {
-      return  `with: ${reason}`;
-    }
-  }
-
-  addNewCompute() {
-    this.computeService.addComputeResource(this.newComputeResource).subscribe(data => {
-      console.log("Created compute resource " + data);
-      this.createModalRef.close();
-      this.getAllComputes();
-    },
-    err => {
-      console.log(err);
-      this.createModalRef.close();
-    });
-  }
-
-  getAllComputes() {
-    this.computeService.getAllComputeResources().subscribe(data => {
-      this.computeResources = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/list.html b/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/list.html
deleted file mode 100644
index 3100a64..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/compute/list/list.html
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-<ng-template #content let-c="close" let-d="dismiss">
-  <div class="modal-header">
-    <h4 class="modal-title">Add compute resource</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-  <div class="modal-body">
-    <form>
-      <div class="form-group">
-        <label for="inputName">Name</label>
-        <input type="text" [(ngModel)]="newComputeResource.name" class="form-control" id="inputName" name="inputName" placeholder="New host">
-      </div>
-      <div class="form-group">
-        <label for="inputHost">Host</label>
-        <input type="text" [(ngModel)]="newComputeResource.host" class="form-control" id="inputHost" name="inputHost" placeholder="192.168.1.112">
-      </div>
-      <div class="form-row">
-        <div class="form-group col-md-4">
-          <label for="communicationType">Communication Type</label>
-          <select [(ngModel)]="newComputeResource.communicationType" id="communicationType" name="communicationType" class="form-control">
-            <option selected>Mock</option>
-            <option>SSH</option>
-          </select>
-        </div>
-        <div class="form-group col-md-4">
-          <label for="inputUserName">User Name</label>
-          <input type="text" [(ngModel)]="newComputeResource.userName" class="form-control" id="inputUserName" name="inputUserName" placeholder="root">
-        </div>
-        <div class="form-group col-md-4">
-          <label for="inputPassword">Password</label>
-          <input type="password" [(ngModel)]="newComputeResource.password" class="form-control" id="inputPassword" name="inputPassword">
-        </div>
-      </div>
-    </form>
-  </div>
-  <div class="modal-footer">
-    <button type="submit" class="btn btn-primary" (click)="addNewCompute()">Add</button>
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<h4>Compute Resource</h4>
-
-<button class="btn btn-default-outline" (click)="openAsModel(content)">Add Compute Resource</button>
-
-<table class="table">
-  <thead class="thead-light">
-
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Name</th>
-    <th scope="col">Host</th>
-    <th scope="col">Communication Type</th>
-  </tr>
-  </thead>
-
-  <tbody>
-  <tr *ngFor="let compute of this.computeResources">
-    <th scope="row">{{ compute.id }}</th>
-    <td>{{ compute.name }}</td>
-    <td>{{ compute.host }}</td>
-    <td>{{ compute.communicationType }}</td>
-  </tr>
-  </tbody>
-
-</table>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.component.ts
deleted file mode 100644
index cbce1e6..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './dashboard.html',
-  encapsulation: ViewEncapsulation.None
-})
-export class DashboardComponent {
-
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.html b/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.html
deleted file mode 100644
index ba6ab8d..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Airavata Sample Gateway</title>
-</head>
-<body>
-
-<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
-
-  <a class="navbar-brand" href="#">Web Console</a>
-
-  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-
-  <div class="collapse navbar-collapse" id="navbarNav">
-    <ul class="navbar-nav">
-      <li class="nav-item active">
-        <a class="nav-link" [routerLink]="['/experiment']">Experiments</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" [routerLink]="['/compute']">Compute Resources</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" [routerLink]="['/dep']">App Deployments</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" [routerLink]="['/module']">App Modules</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" [routerLink]="['/iface']">App Interfaces</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" [routerLink]="['/setup']">Setup</a>
-      </li>
-    </ul>
-  </div>
-
-</nav>
-
-<router-outlet></router-outlet>
-
-</body>
-</html>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.routes.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.routes.ts
deleted file mode 100644
index 90b4991..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/dashboard/dashboard.routes.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import {DashboardComponent} from "./dashboard.component";
-import {ComputeListComponent} from "../compute/list/compute.list.component";
-import {ExperimentListComponent} from "../experiment/list/experiment.list.component";
-import {AppIfaceListComponent} from "../app-iface/list/app.iface.list.component";
-import {AppDepListComponent} from "../app-dep/list/app.dep.list.component";
-import {AppModuleListComponent} from "../app-module/list/app.module.list.component";
-import {Routes} from "@angular/router";
-import {ExperimentDetailComponent} from "../experiment/detail/experiment.detail";
-import {ProcessDetailComponent} from "../process/detail/process.detail.component";
-import {SetupComponent} from "../setup/setup.component";
-
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-export const DASHBOARD_ROUTES: Routes = [
-
-  {
-    path: 'setup',
-    component: SetupComponent,
-  },
-  {
-    path: 'compute',
-    component: ComputeListComponent,
-  },
-  {
-    path: 'process/detail/:id',
-    component: ProcessDetailComponent,
-  },
-  {
-    path: 'experiment/detail/:id',
-    component: ExperimentDetailComponent,
-  },
-  {
-    path: 'experiment',
-    component: ExperimentListComponent,
-  },
-  {
-    path: 'iface',
-    component: AppIfaceListComponent,
-  },
-  {
-    path: 'dep',
-    component: AppDepListComponent,
-  },
-  {
-    path: 'module',
-    component: AppModuleListComponent,
-  }
-];
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/detail.html b/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/detail.html
deleted file mode 100644
index 7c977c2..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/detail.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<div class="">
-  <div class="">
-  <form>
-    <div class="form-group row">
-      <label for="name" class="col-sm-2 col-form-label">Name</label>
-      <div class="col-sm-10">
-        <input type="text" [(ngModel)]="selectedExperiment.experimentName" readonly class="form-control-plaintext" id="name" name="name" value="email@example.com">
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="time" class="col-sm-2 col-form-label">Creation Time</label>
-      <div class="col-sm-10">
-        <input type="text" [(ngModel)]="selectedExperiment.creationTime" readonly class="form-control-plaintext" id="time" name="time">
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="description" class="col-sm-2 col-form-label">Description</label>
-      <div class="col-sm-10">
-        <input type="text" [(ngModel)]="selectedExperiment.description" readonly class="form-control-plaintext" id="description" name="description" value="Description">
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="appInterface" class="col-sm-2 col-form-label">Application Interface</label>
-      <div class="col-sm-10">
-        <input type="text" [(ngModel)]="selectedExperiment.applicationInterfaceName" readonly class="form-control-plaintext" id="appInterface" name="appInterface" value="App Interface">
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="appDeployment" class="col-sm-2 col-form-label">Application Deployment</label>
-      <div class="col-sm-10">
-        <input type="text" [(ngModel)]="selectedExperiment.applicationDeploymentName" readonly class="form-control-plaintext" id="appDeployment" name="appDeployment" value="App Deployment">
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="appStatus" class="col-sm-2 col-form-label">Application Status</label>
-      <div class="col-sm-10">
-        <button type="button" id="appStatus" name="appStatus" class="btn" (click)="openAsModel(statusContent)">Status</button>
-      </div>
-    </div>
-
-    <div class="form-group row">
-      <label for="appProcess" class="col-sm-2 col-form-label">Application Processes</label>
-      <div class="col-sm-10">
-        <button type="button" id="appProcess" name="appProcess" class="btn" (click)="openProcessesAsModel(processContent)">Processes</button>
-      </div>
-    </div>
-  </form>
-  <button type="button" class="btn" (click)="launchExperiment()">Launch</button>
-  </div>
-</div>
-
-<ng-template #statusContent let-c="close" let-d="dismiss">
-
-  <div class="modal-header">
-    <h4 class="modal-title">Experiment States</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-
-  <div class="modal-body">
-    <table class="table">
-      <thead>
-      <tr>
-        <th scope="col">Id</th>
-        <th scope="col">Status</th>
-        <th scope="col">Changed Time</th>
-      </tr>
-      </thead>
-      <tbody>
-      <tr *ngFor="let status of this.selectedExperiment.experimentStatus">
-        <th>{{status.id}}</th>
-        <th>{{status.stateStr}}</th>
-        <th>{{status.timeOfStateChange}}</th>
-      </tr>
-      </tbody>
-    </table>
-  </div>
-
-  <div class="modal-footer">
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-
-<ng-template #processContent let-c="close" let-d="dismiss">
-
-  <div class="modal-header">
-    <h4 class="modal-title">Experiment Processes</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-
-  <div class="modal-body">
-    <table class="table">
-      <thead>
-      <tr>
-        <th scope="col">Id</th>
-        <th scope="col">Creation Time</th>
-        <th scope="col">Last State</th>
-        <th scope="col"></th>
-      </tr>
-      </thead>
-      <tbody>
-      <tr *ngFor="let process of this.processes">
-        <th>{{process.id}}</th>
-        <th>{{process.creationTime}}</th>
-        <th>{{process.processStatuses.length > 0 ? process.processStatuses[process.processStatuses.length -1].stateStr : "" }}</th>
-        <td><button (click)="routeToProcessPage(process.id)">Detail</button></td>
-      </tr>
-      </tbody>
-    </table>
-  </div>
-
-  <div class="modal-footer">
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/experiment.detail.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/experiment.detail.ts
deleted file mode 100644
index 42f2fbf..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/detail/experiment.detail.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import {ViewEncapsulation, Component} from "@angular/core";
-import {Experiment} from "../../../models/experiment/experiment.model";
-import {ActivatedRoute, Router} from "@angular/router";
-import {ExperimentService} from "../../../services/experiment.service";
-import {NgbModal} from "@ng-bootstrap/ng-bootstrap";
-import {Process} from "../../../models/process/process.model";
-import {ProcessService} from "../../../services/process.service";
-import {ProcessStatus} from "../../../models/process/process.status.model";
-
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './detail.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [ExperimentService, ProcessService]
-})
-export class ExperimentDetailComponent {
-
-  selectedExperiment: Experiment = new Experiment();
-  processes: Array<Process> = [];
-  processLastState: ProcessStatus = new ProcessStatus();
-
-  constructor(private modalService: NgbModal,private activatedRoute: ActivatedRoute,
-              private experimentService: ExperimentService, private processService: ProcessService,
-              private router: Router) {
-
-    let expId = this.activatedRoute.snapshot.params["id"];
-    this.experimentService.getExperimentById(expId)
-      .subscribe(data => {this.selectedExperiment = data}, err => {console.log(err)});
-  }
-
-  launchExperiment() {
-    this.experimentService.launchExperiment(this.selectedExperiment.id).subscribe(data => {
-      alert("Experiment successfully launched");
-    },
-      err => {
-        console.log(err);
-        alert("Experiment launch failed");
-      }
-    )
-  }
-
-  routeToProcessPage(id: number) {
-    this.router.navigateByUrl("/process/detail/" + id);
-  }
-
-  openAsModel(content) {
-    this.modalService.open(content, {size: "lg"}).result.then((result) => {}, (reason) => {});
-  }
-
-  openProcessesAsModel(content) {
-    this.processes = [];
-    this.selectedExperiment.processIds.forEach(id => {
-      this.processService.getProcessById(id).subscribe(data => {
-        this.processes.push(data);
-      }, err => {
-        console.log(err);
-      });
-    });
-    this.modalService.open(content, {size: "lg"}).result.then((result) => {}, (reason) => {});
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/experiment.list.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/experiment.list.component.ts
deleted file mode 100644
index c47aa27..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/experiment.list.component.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {NgbModal, ModalDismissReasons, NgbModalRef} from '@ng-bootstrap/ng-bootstrap';
-import {ApiService} from "../../../services/api.service";
-import {ExperimentService} from "../../../services/experiment.service";
-import {Experiment} from "../../../models/experiment/experiment.model";
-import {ApplicationIface} from "../../../models/application/application.iface.model";
-import {ApplicationIfaceService} from "../../../services/application.iface.service";
-import {ExperimentInput} from "../../../models/experiment/experiment.input.model";
-import {ExperimentOutput} from "../../../models/experiment/experiment.output.model";
-import {ApplicationDeployment} from "../../../models/application/application.deployment.model";
-import {AppDeploymentService} from "../../../services/deployment.service";
-import {ComputeResource} from "../../../models/compute/compute.resource.model";
-import {ComputeService} from "../../../services/compute.service";
-import {Router} from "@angular/router";
-
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Component({
-  templateUrl: './list.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [ExperimentService, ApplicationIfaceService, AppDeploymentService, ComputeService]
-})
-export class ExperimentListComponent {
-
-  closeResult: string;
-  experiments: Array<Experiment> = [];
-  newExperiment = new Experiment();
-  createModalRef: NgbModalRef;
-  appIfaces: Array<ApplicationIface> = [];
-  selectedAppDeployments: Array<ApplicationDeployment> = [];
-  allAppDeployments: Array<ApplicationDeployment> = [];
-  computeResources: Array<ComputeResource> = [];
-
-  constructor(private modalService: NgbModal, private experimentSerive: ExperimentService,
-              private appIfaceService: ApplicationIfaceService, private depService: AppDeploymentService,
-              private computeService: ComputeService, private router: Router) {
-    this.getAllExperiments();
-    this.getAllAppIfaces();
-    this.getAllDeployments();
-    this.getAllComputes();
-  }
-
-  routeToDetailPage(id: number) {
-    this.router.navigateByUrl("/experiment/detail/"+id);
-  }
-
-  openAsModel(content) {
-    this.createModalRef = this.modalService.open(content, {size: "lg"});
-    this.createModalRef.result.then((result) => {
-      this.closeResult = `Closed with: ${result}`;
-    }, (reason) => {
-      this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
-    });
-  }
-
-  private getDismissReason(reason: any): string {
-    if (reason === ModalDismissReasons.ESC) {
-      return 'by pressing ESC';
-    } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
-      return 'by clicking on a backdrop';
-    } else {
-      return  `with: ${reason}`;
-    }
-  }
-
-  addNewExperiment() {
-    this.experimentSerive.addExperiment(this.newExperiment).subscribe(data => {
-        console.log("Created experiment " + data);
-        this.createModalRef.close();
-        this.getAllExperiments();
-      },
-      err => {
-        console.log(err);
-        this.createModalRef.close();
-      });
-  }
-
-  getAllExperiments() {
-    this.experimentSerive.getAllExperiments().subscribe(data => {
-      this.experiments = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllAppIfaces() {
-    this.appIfaceService.getAllApplicationIfaces().subscribe(data => {
-      this.appIfaces = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllDeployments() {
-    this.depService.getAllAppDeployments().subscribe(data => {
-      this.allAppDeployments = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getAllComputes() {
-    this.computeService.getAllComputeResources().subscribe(data => {
-      this.computeResources = data;
-    }, err => {
-      console.log(err);
-    })
-  }
-
-  getComputeById(id: number): ComputeResource {
-    return this.computeResources.filter(compute => compute.id == id)[0];
-  }
-
-  ifaceOnChange(ifaceId: number) {
-
-    console.log("Selected deployments before");
-    console.log(this.selectedAppDeployments);
-
-    let selectedIface: ApplicationIface = this.appIfaces.filter((iface) => iface.id == ifaceId)[0];
-
-    this.newExperiment.experimentInputs = [];
-    selectedIface.inputs.forEach(input => {
-      let expInput: ExperimentInput = new ExperimentInput(0, input.name, input.type, input.value, input.arguments);
-      this.newExperiment.experimentInputs.push(expInput);
-    });
-
-    this.newExperiment.experimentOutputs = [];
-
-    selectedIface.outputs.forEach(output => {
-      let expOutput: ExperimentOutput = new ExperimentOutput(0, output.name, output.value, output.type);
-      this.newExperiment.experimentOutputs.push(expOutput);
-    });
-
-    this.selectedAppDeployments = [];
-    this.selectedAppDeployments = this.allAppDeployments.filter(appDep => appDep.applicationModuleId == selectedIface.applicationModuleId);
-    console.log("Selected deployments");
-    console.log(this.selectedAppDeployments);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/list.html b/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/list.html
deleted file mode 100644
index 20bda52..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/experiment/list/list.html
+++ /dev/null
@@ -1,117 +0,0 @@
-
-<ng-template #content let-c="close" let-d="dismiss">
-  <div class="modal-header">
-    <h4 class="modal-title">Add Experiment</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-  <div class="modal-body">
-    <form>
-      <div class="form-group">
-        <label for="inputName">Name</label>
-        <input type="text" [(ngModel)]="newExperiment.experimentName" class="form-control" id="inputName" name="inputName" placeholder="New Experiment">
-      </div>
-      <div class="form-group">
-        <label for="description">Description</label>
-        <input type="text" [(ngModel)]="newExperiment.description" class="form-control" id="description" name="description" placeholder="New Experiment">
-      </div>
-      <div class="form-group">
-        <label for="appIface">App Interface</label>
-        <select [(ngModel)]="newExperiment.applicationInterfaceId" id="appIface" name="appIface"
-                (change)="ifaceOnChange($event.target.value)" class="form-control">
-          <option *ngFor="let appIface of this.appIfaces" value="{{appIface.id}}">{{ appIface.name }}</option>
-        </select>
-      </div>
-      <div class="form-group">
-        <label for="appDep">Compute Host</label>
-        <select [(ngModel)]="newExperiment.applicationDeploymentId" id="appDep" name="appDep" class="form-control">
-          <option *ngFor="let depl of this.selectedAppDeployments" value="{{depl.id}}">
-            {{ getComputeById(depl.computeResourceId).name }}
-          </option>
-        </select>
-      </div>
-
-      Inputs
-      <hr/>
-      <div *ngFor="let input of newExperiment.experimentInputs; let i = index" class="form-row">
-        <div class="form-group col-md-3">
-          <label for="inputParamName-{{i}}">Name</label>
-          <input type="text" [(ngModel)]="input.name" class="form-control" id="inputParamName-{{i}}" name="inputParamName-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamType-{{i}}">Type</label>
-          <select [(ngModel)]="input.type" id="inputParamType-{{i}}" name="inputParamType-{{i}}" class="form-control">
-            <option selected value="0">String</option>
-            <option value="1">Integer</option>
-            <option value="2">Float</option>
-            <option value="3">URI</option>
-          </select>
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamValue-{{i}}">Value</label>
-          <input type="text" [(ngModel)]="input.value" class="form-control" id="inputParamValue-{{i}}" name="inputParamValue-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="inputParamArguments-{{i}}">Arguments</label>
-          <input type="text" [(ngModel)]="input.arguments" class="form-control" id="inputParamArguments-{{i}}" name="inputParamArguments-{{i}}" placeholder="">
-        </div>
-      </div>
-
-      Outputs
-      <hr/>
-      <div *ngFor="let output of newExperiment.experimentOutputs; let i = index" class="form-row">
-        <div class="form-group col-md-3">
-          <label for="outputParamName-{{i}}">Name</label>
-          <input type="text" [(ngModel)]="output.name" class="form-control" id="outputParamName-{{i}}" name="outputParamName-{{i}}" placeholder="">
-        </div>
-        <div class="form-group col-md-3">
-          <label for="outputParamType-{{i}}">Type</label>
-          <select [(ngModel)]="output.type" id="outputParamType-{{i}}" name="outputParamType-{{i}}" class="form-control">
-            <option selected value="0">String</option>
-            <option value="1">Integer</option>
-            <option value="2">Float</option>
-            <option value="3">URI</option>
-            <option value="5">Std Out</option>
-            <option value="6">Std Err</option>
-          </select>
-        </div>
-        <div class="form-group col-md-3">
-          <label for="outputParamValue-{{i}}">Value</label>
-          <input type="text" [(ngModel)]="output.value" class="form-control" id="outputParamValue-{{i}}" name="outputParamValue-{{i}}" placeholder="">
-        </div>
-      </div>
-    </form>
-  </div>
-
-  <div class="modal-footer">
-    <button type="submit" class="btn btn-primary" (click)="addNewExperiment()">Add</button>
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<h4>Experiments</h4>
-
-<button class="btn btn-default-outline" (click)="openAsModel(content)">Add Experiment</button>
-
-<table class="table">
-  <thead class="thead-light">
-
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-    <th scope="col"></th>
-  </tr>
-  </thead>
-
-  <tbody>
-  <tr *ngFor="let experiment of this.experiments">
-    <th scope="row">{{ experiment.id }}</th>
-    <td>{{ experiment.experimentName }}</td>
-    <td>{{ experiment.description }}</td>
-    <td><button (click)="routeToDetailPage(experiment.id)">Detail</button></td>
-  </tr>
-  </tbody>
-
-</table>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/detail.html b/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/detail.html
deleted file mode 100644
index f89265c..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/detail.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<h3>Process Metadata</h3>
-<form>
-  <div class="form-group row">
-    <label for="name" class="col-sm-2 col-form-label">Creation Time</label>
-    <div class="col-sm-10">
-      <input type="text" [(ngModel)]="selectedProcess.creationTime" readonly class="form-control-plaintext" id="name" name="name" value="email@example.com">
-    </div>
-  </div>
-</form>
-
-<h3>Task Dag</h3>
-
-<table class="table">
-  <thead>
-  <tr>
-    <th scope="col">Id</th>
-    <th scope="col">Type</th>
-    <th scope="col">Detail</th>
-    <th scope="col">Current Status</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr *ngFor="let task of this.taskDagFroProcess">
-    <th>{{task.id}}</th>
-    <th>{{task.taskTypeStr}}</th>
-    <th>{{task.taskDetail}}</th>
-    <th>{{task.taskStatus.length > 0 ? task.taskStatus[task.taskStatus.length -1].stateStr : "NO STATUS"}}</th>
-  </tr>
-  </tbody>
-</table>
-
-<button type="button" id="appStatus" name="appStatus" class="btn" (click)="openAsModel(eventContent)">View All Events</button>
-<button type="button" id="appOut" name="appOut" class="btn" (click)="openOutputModel(outputContent)">View Outputs</button>
-
-<ng-template #eventContent let-c="close" let-d="dismiss">
-
-  <div class="modal-header">
-    <h4 class="modal-title">Task Events</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-
-  <div class="modal-body">
-    <table class="table">
-      <thead>
-      <tr>
-        <th scope="col">Task Id</th>
-        <th scope="col">Task Type</th>
-        <th scope="col">Task Detail</th>
-        <th scope="col">Status</th>
-        <th scope="col">Occurred Time</th>
-        <th scope="col">Reason</th>
-      </tr>
-      </thead>
-      <tbody>
-      <template ngFor let-task [ngForOf]="this.taskDagFroProcess">
-        <tr *ngFor="let status of task.taskStatus">
-          <td>{{task.id}}</td>
-          <td>{{task.taskTypeStr}}</td>
-          <td>{{task.taskDetail}}</td>
-          <td>{{status.stateStr}}</td>
-          <td>{{status.timeOfStateChange}}</td>
-          <td>{{status.reason}}</td>
-        </tr>
-      </template>
-      </tbody>
-    </table>
-  </div>
-
-  <div class="modal-footer">
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
-
-<ng-template #outputContent let-c="close" let-d="dismiss">
-
-  <div class="modal-header">
-    <h4 class="modal-title">Outputs</h4>
-    <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
-      <span aria-hidden="true">&times;</span>
-    </button>
-  </div>
-
-  <div class="modal-body">
-    <table class="table">
-      <thead>
-      <tr>
-        <th scope="col">Output Id</th>
-        <th scope="col">Output Type</th>
-        <th scope="col">Output Name</th>
-      </tr>
-      </thead>
-      <tbody>
-      <tr *ngFor="let output of this.outputs">
-        <td>{{output.id}}</td>
-        <td>{{output.dataType}}</td>
-        <td>{{output.name}}</td>
-      </tr>
-      </tbody>
-    </table>
-  </div>
-
-  <div class="modal-footer">
-    <button type="button" class="btn btn-outline-dark" (click)="c('Close click')">Close</button>
-  </div>
-</ng-template>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/process.detail.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/process.detail.component.ts
deleted file mode 100644
index c9e554d..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/process/detail/process.detail.component.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {ProcessService} from "../../../services/process.service";
-import {NgbModal} from "@ng-bootstrap/ng-bootstrap";
-import {ActivatedRoute} from "@angular/router";
-import {TaskService} from "../../../services/task.service";
-import {Process} from "../../../models/process/process.model";
-import {Task} from "../../../models/task/task.model";
-import {TaskStatus} from "../../../models/task/task.status.model";
-import {DataEntry} from "../../../models/data/data.entry.model";
-
-@Component({
-  templateUrl: './detail.html',
-  encapsulation: ViewEncapsulation.None,
-  providers: [ProcessService, TaskService]
-})
-export class ProcessDetailComponent {
-
-  selectedProcess: Process = new Process();
-  taskDagFroProcess: Array<Task> = [];
-  taskEvents: Array<TaskStatus> = [];
-  outputs: Array<DataEntry> = [];
-
-  constructor(private modalService: NgbModal, private activatedRoute: ActivatedRoute,
-              private processService: ProcessService, private taskService: TaskService){
-
-    let processId = this.activatedRoute.snapshot.params["id"];
-    processService.getProcessById(processId).subscribe(data => {
-      this.selectedProcess = data;
-      this.taskDagFroProcess = this.selectedProcess.tasks;
-    }, err => console.log(err));
-  }
-
-  openAsModel(content) {
-    this.modalService.open(content, {size: "lg"}).result.then((result) => {}, (reason) => {});
-  }
-
-  openOutputModel(content) {
-    this.getOutputsForProcess(this.activatedRoute.snapshot.params["id"]);
-    this.modalService.open(content, {size: "lg"}).result.then((result) => {}, (reason) => {});
-  }
-
-  getOutputsForProcess(processId: number) {
-    this.processService.getAllOutputsForProcess(processId).subscribe(data => {
-      this.outputs = data;
-    }, err => {console.log(err)})
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.component.ts b/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.component.ts
deleted file mode 100644
index 61d7a77..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.component.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {Component, ViewEncapsulation} from "@angular/core";
-import {ApiService} from "../../services/api.service";
-import {Router} from "@angular/router";
-/**
- * Created by dimuthu on 10/30/17.
- */
-
-@Component({
-  templateUrl: './setup.html',
-  encapsulation: ViewEncapsulation.None
-})
-export class SetupComponent {
-
-   apiServerUrl: string = "http://localhost:8080";
-   constructor(private apiService: ApiService, private router: Router) {
-
-   }
-
-   setup() {
-     this.apiService.baseUrl = this.apiServerUrl;
-     this.router.navigateByUrl("/experiments");
-   }
-}
-
-
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.html b/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.html
deleted file mode 100644
index 8b40824..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/components/setup/setup.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="container-fluid">
-  <div class="row" style="margin-top: 50px">
-    <div class="col-sm-4 col-sm-offset-4">
-        <form>
-          <div class="form-group">
-            <label for="inputName">Enter API Server URL</label>
-            <input type="text" [(ngModel)]="apiServerUrl" class="form-control" id="inputName" name="inputName" placeholder="http://localhost:8080/">
-          </div>
-        </form>
-        <button type="submit" class="btn btn-primary" (click)="setup()">Setup</button>
-    </div>
-  </div>
-</div>
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.deployment.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.deployment.model.ts
deleted file mode 100644
index ebbe150..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.deployment.model.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ApplicationDeployment {
-
-    id: number;
-    name: string;
-    applicationModuleId: number;
-    computeResourceId: number;
-    executablePath: string;
-    preJobCommand: string;
-    postJobCommand: string;
-
-    constructor(id: number = 0, name: string = null, applicationModuleId: number = 0, computeResourceId: number = 0,
-                executablePath: string = null, preJobCommand: string = null, postJobCommand: string = null) {
-      this.name = name;
-      this.id = id;
-      this.applicationModuleId = applicationModuleId;
-      this.computeResourceId = computeResourceId;
-      this.executablePath = executablePath;
-      this.preJobCommand = preJobCommand;
-      this.postJobCommand = postJobCommand;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.iface.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.iface.model.ts
deleted file mode 100644
index a95e8c7..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.iface.model.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {ApplicationInput} from "./application.ipnput.model";
-import {ApplicationOutput} from "./application.output.model";
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ApplicationIface {
-
-    id:number;
-    name:string;
-    description:string;
-    applicationModuleId:number;
-    inputs:Array<ApplicationInput> = [];
-    outputs:Array<ApplicationOutput> = [];
-
-
-    constructor(id: number = 0, name: string = null, description: string = null,
-                applicationModuleId: number = 0, inputs: Array<ApplicationInput> = [],
-                outputs: Array<ApplicationOutput> = []) {
-      this.id = id;
-      this.name = name;
-      this.description = description;
-      this.applicationModuleId = applicationModuleId;
-      this.inputs = inputs;
-      this.outputs = outputs;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.ipnput.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.ipnput.model.ts
deleted file mode 100644
index 1538c07..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.ipnput.model.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ApplicationInput {
-
-    id: number;
-    name: string;
-    type: number;
-    value: string;
-    arguments: string;
-
-    constructor(id: number = 0, name: string = null, type: number = 0, value: string = null, args: string = null) {
-      this.id = id;
-      this.name = name;
-      this.type = type;
-      this.value = value;
-      this.arguments = args;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.module.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.module.model.ts
deleted file mode 100644
index 5182aac..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.module.model.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ApplicationModule {
-
-    id: number;
-    name: string;
-    version: string;
-    description: string;
-
-
-    constructor(id: number = 0, name: string = null, version: string = null, description: string = null) {
-      this.id = id;
-      this.name = name;
-      this.version = version;
-      this.description = description;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.output.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.output.model.ts
deleted file mode 100644
index 8c59b17..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/application/application.output.model.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ApplicationOutput {
-
-    id: number;
-    name: string;
-    type: number;
-    value: string;
-
-    constructor(id: number = 0, name: string = null, type: number = 0, value: string = null) {
-      this.id = id;
-      this.name = name;
-      this.type = type;
-      this.value = value;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/compute/compute.resource.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/compute/compute.resource.model.ts
deleted file mode 100644
index 9690e48..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/compute/compute.resource.model.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ComputeResource {
-
-  id: number;
-  name: string;
-  host: string;
-  userName: string;
-  password: string;
-  communicationType: string;
-
-  constructor(id: number = 0, name: string = null, host: string = null, userName: string = null,
-              password: string = null, communicationType: string = "Mock") {
-    this.id = id;
-    this.name = name;
-    this.host = host;
-    this.userName = userName;
-    this.password = password;
-    this.communicationType = communicationType;
-  }
-
-  public static fromJson(json:any): ComputeResource {
-    return new ComputeResource(json.id, json.name, json.host, json.userName,
-      json.password, json.communicationType);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/data/data.entry.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/data/data.entry.model.ts
deleted file mode 100644
index e1b0637..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/data/data.entry.model.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-
-export class DataEntry {
-
-  id: number;
-  dataType: string;
-  name: string;
-
-
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.input.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.input.model.ts
deleted file mode 100644
index b5fed71..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.input.model.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ExperimentInput {
-
-    id: number;
-    name: string;
-    type: number;
-    value: string;
-    arguments: string;
-
-    constructor(id: number, name: string, type: number, value: string, args: string) {
-      this.id = id;
-      this.name = name;
-      this.type = type;
-      this.value = value;
-      this.arguments = args;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.model.ts
deleted file mode 100644
index 5f23e8b..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.model.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import {ExperimentInput} from "./experiment.input.model";
-import {ExperimentOutput} from "./experiment.output.model";
-import {ExperimentStatus} from "./experiment.status.model";
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class Experiment {
-
-    id: number;
-    experimentName: string;
-    creationTime: number;
-    description: string;
-    applicationInterfaceId: number;
-    applicationInterfaceName: string;
-    applicationDeploymentId: number;
-    applicationDeploymentName: string;
-
-    experimentInputs: Array<ExperimentInput> = [];
-    experimentOutputs: Array<ExperimentOutput> = [];
-    experimentStatus: Array<ExperimentStatus> = [];
-    errorsIds: Array<number> = [];
-    processIds: Array<number> = [];
-
-    constructor(id: number = 0, experimentName: string = null, creationTime: number = null,
-                description: string = null, applicationInterfaceId: number = 0, applicationDeploymentId: number = 0,
-                experimentInputs: Array<ExperimentInput> = [], experimentOutputs: Array<ExperimentOutput> = [],
-                experimentStatus: Array<ExperimentStatus> = [], errorsIds: Array<number> = [], processIds: Array<number> = []) {
-
-      this.id = id;
-      this.experimentName = experimentName;
-      this.creationTime = creationTime;
-      this.description = description;
-      this.applicationInterfaceId = applicationInterfaceId;
-      this.applicationDeploymentId = applicationDeploymentId;
-      this.experimentInputs = experimentInputs;
-      this.experimentOutputs = experimentOutputs;
-      this.experimentStatus = experimentStatus;
-      this.errorsIds = errorsIds;
-      this.processIds = processIds;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.output.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.output.model.ts
deleted file mode 100644
index cef81d6..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.output.model.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ExperimentOutput {
-
-    id: number;
-    name: string;
-    value: string;
-    type: number;
-
-    constructor(id: number, name: string, value: string, type: number) {
-      this.id = id;
-      this.name = name;
-      this.value = value;
-      this.type = type;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.status.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.status.model.ts
deleted file mode 100644
index 7b24343..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/experiment/experiment.status.model.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Created by dimuthu on 10/29/17.
- */
-export class ExperimentStatus {
-  id: number;
-  state: number;
-  stateStr: string;
-  timeOfStateChange: number;
-  reason: string;
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.model.ts
deleted file mode 100644
index f4296d4..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.model.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {ProcessStatus} from "./process.status.model";
-import {Task} from "../task/task.model";
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class Process {
-
-    id: number;
-    experimentId: number;
-    creationTime: number;
-    lastUpdateTime: number;
-    processStatuses: Array<ProcessStatus> = [];
-    tasks: Array<Task> = [];
-    processErrorIds: Array<number> = [];
-    taskDag: string;
-    experimentDataDir: string;
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.status.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.status.model.ts
deleted file mode 100644
index 18babca..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/process/process.status.model.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class ProcessStatus {
-
-    id: number;
-    state: number;
-    stateStr: String;
-    timeOfStateChange: number;
-    reason: string;
-    processId: number;
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.model.ts
deleted file mode 100644
index 8ae85d8..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.model.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import {TaskParam} from "./task.param.model";
-import {TaskStatus} from "./task.status.model";
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class Task {
-
-    id: number;
-    taskType: number;
-    taskTypeStr: string;
-    parentProcessId: number;
-    creationTime: number;
-    lastUpdateTime: number;
-    taskStatus: Array<TaskStatus> = [];
-    taskDetail: string;
-    taskErrorIds: Array<number> = [];
-    taskParams: Array<TaskParam> = [];
-    jobIds: Array<number> = [];
-    order: number;
-
-
-  constructor(id: number, taskType: number, parentProcessId: number, creationTime: number,
-              lastUpdateTime: number, taskStatus: Array<TaskStatus>, taskDetail: string,
-              taskErrorIds: Array<number>, taskParams: Array<TaskParam>, jobIds: Array<number>,
-              order: number) {
-    this.id = id;
-    this.taskType = taskType;
-    this.parentProcessId = parentProcessId;
-    this.creationTime = creationTime;
-    this.lastUpdateTime = lastUpdateTime;
-    this.taskStatus = taskStatus;
-    this.taskDetail = taskDetail;
-    this.taskErrorIds = taskErrorIds;
-    this.taskParams = taskParams;
-    this.jobIds = jobIds;
-    this.order = order;
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.param.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.param.model.ts
deleted file mode 100644
index ac5dff5..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.param.model.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class TaskParam {
-
-    id: number;
-    key: string;
-    value: string;
-
-    constructor(id: number, key: string, value: string) {
-      this.id = id;
-      this.key = key;
-      this.value = value;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.status.model.ts b/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.status.model.ts
deleted file mode 100644
index f2193ba..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/models/task/task.status.model.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-
-/**
- * TODO: Class level comments please
- *
- * @author dimuthu
- * @since 1.0.0-SNAPSHOT
- */
-export class TaskStatus {
-
-    id: number;
-    state: number;
-    stateStr: string;
-    timeOfStateChange: number;
-    reason: string;
-    taskId: number;
-
-    constructor(id: number, state: number, timeOfStateChange: number, reason: string, taskId: number) {
-      this.id = id;
-      this.state = state;
-      this.timeOfStateChange = timeOfStateChange;
-      this.reason = reason;
-      this.taskId = taskId;
-    }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/api.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/api.service.ts
deleted file mode 100644
index 3f5501e..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/api.service.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import {Injectable} from "@angular/core";
-import {Http, Headers, Response} from "@angular/http";
-import {Observable} from "rxjs";
-
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class ApiService {
-
-  public baseUrl = "http://localhost:8080/";
-
-  constructor(private http:Http) {
-  }
-
-  public get(url, headers:Headers = new Headers()): Observable<Response> {
-
-    this.createHeader(headers);
-    return this.http.get(this.baseUrl + url, {headers: headers});
-  }
-
-  public post(url, body, headers:Headers = new Headers()): Observable<Response> {
-
-    this.createHeader(headers);
-    return this.http.post(this.baseUrl + url, body, {headers: headers});
-  }
-
-  public put(url, body, headers:Headers = new Headers()): Observable<Response> {
-
-    this.createHeader(headers);
-    return this.http.put(this.baseUrl + url, body, {headers: headers});
-  }
-
-  public delete(url, headers:Headers = new Headers()): Observable<Response> {
-
-    this.createHeader(headers);
-    return this.http.delete(encodeURI(this.baseUrl + url), {headers: headers});
-  }
-
-  private createHeader(headers:Headers) {
-    if (!headers.has("Content-Type")) {
-      headers.append("Content-Type", "application/json");
-    }
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/app.module.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/app.module.service.ts
deleted file mode 100644
index e55e546..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/app.module.service.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {ComputeResource} from "../models/compute/compute.resource.model";
-import 'rxjs/add/operator/map';
-import {ApplicationModule} from "../models/application/application.module.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class AppModuleService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getAllAppModules() {
-    return this.apiService.get("appmodule").map(res => res.json());
-  }
-
-  addAppModules(appModule: ApplicationModule) {
-    return this.apiService.post("appmodule", appModule);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/application.iface.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/application.iface.service.ts
deleted file mode 100644
index 4bf1640..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/application.iface.service.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {ComputeResource} from "../models/compute/compute.resource.model";
-import 'rxjs/add/operator/map';
-import {ApplicationIface} from "../models/application/application.iface.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class ApplicationIfaceService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getAllApplicationIfaces() {
-    return this.apiService.get("appiface").map(res => res.json());
-  }
-
-  addApplicationIface(appIface: ApplicationIface) {
-    return this.apiService.post("appiface", appIface);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/compute.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/compute.service.ts
deleted file mode 100644
index 45786aa..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/compute.service.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {ComputeResource} from "../models/compute/compute.resource.model";
-import 'rxjs/add/operator/map';
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class ComputeService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getAllComputeResources() {
-    return this.apiService.get("compute").map(res => res.json());
-  }
-
-  addComputeResource(computeResource: ComputeResource) {
-    return this.apiService.post("compute", computeResource);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/deployment.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/deployment.service.ts
deleted file mode 100644
index c1088ce..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/deployment.service.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {ApplicationDeployment} from "../models/application/application.deployment.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class AppDeploymentService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getAllAppDeployments() {
-    return this.apiService.get("appdep").map(res => res.json());
-  }
-
-  addAppDeployment(appDep: ApplicationDeployment) {
-    return this.apiService.post("appdep", appDep);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/experiment.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/experiment.service.ts
deleted file mode 100644
index 55b66bf..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/experiment.service.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {ComputeResource} from "../models/compute/compute.resource.model";
-import 'rxjs/add/operator/map';
-import {Experiment} from "../models/experiment/experiment.model";
-/**
- * Created by dimuthu on 10/29/17.
- */
-
-@Injectable()
-export class ExperimentService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  launchExperiment(id: number) {
-    return this.apiService.get("experiment/" + id + "/launch");
-  }
-
-  getExperimentById(id: number) {
-    return this.apiService.get("experiment/" + id).map(res => res.json());
-  }
-
-  getAllExperiments() {
-    return this.apiService.get("experiment").map(res => res.json());
-  }
-
-  addExperiment(experiment: Experiment) {
-    return this.apiService.post("experiment", experiment);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/process.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/process.service.ts
deleted file mode 100644
index 78fcac4..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/process.service.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {Process} from "../models/process/process.model";
-/**
- * Created by dimuthu on 10/30/17.
- */
-@Injectable()
-export class ProcessService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getProcessById(id: number) {
-    return this.apiService.get("process/" + id).map(res => res.json());
-  }
-
-  getAllProcesses() {
-    return this.apiService.get("process").map(res => res.json());
-  }
-
-  addProcess(process: Process) {
-    return this.apiService.post("process", process);
-  }
-
-  getAllOutputsForProcess(processId: number) {
-    return this.apiService.get("data/process/" + processId).map(res => res.json());
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/app/services/task.service.ts b/sandbox/airavata-kubernetes/web-console/src/app/services/task.service.ts
deleted file mode 100644
index d7b17ed..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/app/services/task.service.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {Injectable, Inject} from "@angular/core";
-import {ApiService} from "./api.service";
-import {} from "../models/process/process.model";
-import {Task} from "../models/task/task.model";
-/**
- * Created by dimuthu on 10/30/17.
- */
-@Injectable()
-export class TaskService {
-  constructor(@Inject(ApiService) private apiService:ApiService) {
-
-  }
-
-  getTaskById(id: number) {
-    return this.apiService.get("task/" + id).map(res => res.json());
-  }
-
-  getAllTasks() {
-    return this.apiService.get("task").map(res => res.json());
-  }
-
-  addTask(task: Task) {
-    return this.apiService.post("task", task);
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/assets/.gitkeep b/sandbox/airavata-kubernetes/web-console/src/assets/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/sandbox/airavata-kubernetes/web-console/src/environments/environment.prod.ts b/sandbox/airavata-kubernetes/web-console/src/environments/environment.prod.ts
deleted file mode 100644
index 3612073..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/environments/environment.prod.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const environment = {
-  production: true
-};
diff --git a/sandbox/airavata-kubernetes/web-console/src/environments/environment.ts b/sandbox/airavata-kubernetes/web-console/src/environments/environment.ts
deleted file mode 100644
index b7f639a..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/environments/environment.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// The file contents for the current environment will overwrite these during build.
-// The build system defaults to the dev environment which uses `environment.ts`, but if you do
-// `ng build --env=prod` then `environment.prod.ts` will be used instead.
-// The list of which env maps to which file can be found in `.angular-cli.json`.
-
-export const environment = {
-  production: false
-};
diff --git a/sandbox/airavata-kubernetes/web-console/src/favicon.ico b/sandbox/airavata-kubernetes/web-console/src/favicon.ico
deleted file mode 100644
index 8081c7c..0000000
Binary files a/sandbox/airavata-kubernetes/web-console/src/favicon.ico and /dev/null differ
diff --git a/sandbox/airavata-kubernetes/web-console/src/index.html b/sandbox/airavata-kubernetes/web-console/src/index.html
deleted file mode 100644
index 4e85744..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>WebConsole</title>
-  <base href="/">
-
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <link rel="icon" type="image/x-icon" href="favicon.ico">
-  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
-
-</head>
-<body>
-  <app-root></app-root>
-</body>
-</html>
diff --git a/sandbox/airavata-kubernetes/web-console/src/main.ts b/sandbox/airavata-kubernetes/web-console/src/main.ts
deleted file mode 100644
index 91ec6da..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/main.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-
-if (environment.production) {
-  enableProdMode();
-}
-
-platformBrowserDynamic().bootstrapModule(AppModule)
-  .catch(err => console.log(err));
diff --git a/sandbox/airavata-kubernetes/web-console/src/polyfills.ts b/sandbox/airavata-kubernetes/web-console/src/polyfills.ts
deleted file mode 100644
index 20d4075..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/polyfills.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
- *      file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
- *
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
- */
-
-/***************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/weak-map';
-// import 'core-js/es6/set';
-
-/** IE10 and IE11 requires the following for NgClass support on SVG elements */
-// import 'classlist.js';  // Run `npm install --save classlist.js`.
-
-/** IE10 and IE11 requires the following for the Reflect API. */
-// import 'core-js/es6/reflect';
-
-
-/** Evergreen browsers require these. **/
-// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
-import 'core-js/es7/reflect';
-
-
-/**
- * Required to support Web Animations `@angular/platform-browser/animations`.
- * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
- **/
-// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
-
-
-
-/***************************************************************************************************
- * Zone JS is required by Angular itself.
- */
-import 'zone.js/dist/zone';  // Included with Angular CLI.
-
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */
-
-/**
- * Date, currency, decimal and percent pipes.
- * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
- */
-// import 'intl';  // Run `npm install --save intl`.
-/**
- * Need to import at least one locale-data with intl.
- */
-// import 'intl/locale-data/jsonp/en';
diff --git a/sandbox/airavata-kubernetes/web-console/src/styles.css b/sandbox/airavata-kubernetes/web-console/src/styles.css
deleted file mode 100644
index 90d4ee0..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/styles.css
+++ /dev/null
@@ -1 +0,0 @@
-/* You can add global styles to this file, and also import other style files */
diff --git a/sandbox/airavata-kubernetes/web-console/src/test.ts b/sandbox/airavata-kubernetes/web-console/src/test.ts
deleted file mode 100644
index cd612ee..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
-
-import 'zone.js/dist/long-stack-trace-zone';
-import 'zone.js/dist/proxy.js';
-import 'zone.js/dist/sync-test';
-import 'zone.js/dist/jasmine-patch';
-import 'zone.js/dist/async-test';
-import 'zone.js/dist/fake-async-test';
-import { getTestBed } from '@angular/core/testing';
-import {
-  BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
-declare const __karma__: any;
-declare const require: any;
-
-// Prevent Karma from running prematurely.
-__karma__.loaded = function () {};
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
-  BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting()
-);
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
-// Finally, start Karma to run the tests.
-__karma__.start();
diff --git a/sandbox/airavata-kubernetes/web-console/src/tsconfig.app.json b/sandbox/airavata-kubernetes/web-console/src/tsconfig.app.json
deleted file mode 100644
index 39ba8db..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/tsconfig.app.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "extends": "../tsconfig.json",
-  "compilerOptions": {
-    "outDir": "../out-tsc/app",
-    "baseUrl": "./",
-    "module": "es2015",
-    "types": []
-  },
-  "exclude": [
-    "test.ts",
-    "**/*.spec.ts"
-  ]
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/tsconfig.spec.json b/sandbox/airavata-kubernetes/web-console/src/tsconfig.spec.json
deleted file mode 100644
index 63d89ff..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/tsconfig.spec.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "extends": "../tsconfig.json",
-  "compilerOptions": {
-    "outDir": "../out-tsc/spec",
-    "baseUrl": "./",
-    "module": "commonjs",
-    "target": "es5",
-    "types": [
-      "jasmine",
-      "node"
-    ]
-  },
-  "files": [
-    "test.ts"
-  ],
-  "include": [
-    "**/*.spec.ts",
-    "**/*.d.ts"
-  ]
-}
diff --git a/sandbox/airavata-kubernetes/web-console/src/typings.d.ts b/sandbox/airavata-kubernetes/web-console/src/typings.d.ts
deleted file mode 100644
index ef5c7bd..0000000
--- a/sandbox/airavata-kubernetes/web-console/src/typings.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/* SystemJS module definition */
-declare var module: NodeModule;
-interface NodeModule {
-  id: string;
-}
diff --git a/sandbox/airavata-kubernetes/web-console/tsconfig.json b/sandbox/airavata-kubernetes/web-console/tsconfig.json
deleted file mode 100644
index a6c016b..0000000
--- a/sandbox/airavata-kubernetes/web-console/tsconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "compileOnSave": false,
-  "compilerOptions": {
-    "outDir": "./dist/out-tsc",
-    "sourceMap": true,
-    "declaration": false,
-    "moduleResolution": "node",
-    "emitDecoratorMetadata": true,
-    "experimentalDecorators": true,
-    "target": "es5",
-    "typeRoots": [
-      "node_modules/@types"
-    ],
-    "lib": [
-      "es2017",
-      "dom"
-    ]
-  }
-}
diff --git a/sandbox/airavata-kubernetes/web-console/tslint.json b/sandbox/airavata-kubernetes/web-console/tslint.json
deleted file mode 100644
index c24dc29..0000000
--- a/sandbox/airavata-kubernetes/web-console/tslint.json
+++ /dev/null
@@ -1,141 +0,0 @@
-{
-  "rulesDirectory": [
-    "node_modules/codelyzer"
-  ],
-  "rules": {
-    "arrow-return-shorthand": true,
-    "callable-types": true,
-    "class-name": true,
-    "comment-format": [
-      true,
-      "check-space"
-    ],
-    "curly": true,
-    "eofline": true,
-    "forin": true,
-    "import-blacklist": [
-      true,
-      "rxjs",
-      "rxjs/Rx"
-    ],
-    "import-spacing": true,
-    "indent": [
-      true,
-      "spaces"
-    ],
-    "interface-over-type-literal": true,
-    "label-position": true,
-    "max-line-length": [
-      true,
-      140
-    ],
-    "member-access": false,
-    "member-ordering": [
-      true,
-      {
-        "order": [
-          "static-field",
-          "instance-field",
-          "static-method",
-          "instance-method"
-        ]
-      }
-    ],
-    "no-arg": true,
-    "no-bitwise": true,
-    "no-console": [
-      true,
-      "debug",
-      "info",
-      "time",
-      "timeEnd",
-      "trace"
-    ],
-    "no-construct": true,
-    "no-debugger": true,
-    "no-duplicate-super": true,
-    "no-empty": false,
-    "no-empty-interface": true,
-    "no-eval": true,
-    "no-inferrable-types": [
-      true,
-      "ignore-params"
-    ],
-    "no-misused-new": true,
-    "no-non-null-assertion": true,
-    "no-shadowed-variable": true,
-    "no-string-literal": false,
-    "no-string-throw": true,
-    "no-switch-case-fall-through": true,
-    "no-trailing-whitespace": true,
-    "no-unnecessary-initializer": true,
-    "no-unused-expression": true,
-    "no-use-before-declare": true,
-    "no-var-keyword": true,
-    "object-literal-sort-keys": false,
-    "one-line": [
-      true,
-      "check-open-brace",
-      "check-catch",
-      "check-else",
-      "check-whitespace"
-    ],
-    "prefer-const": true,
-    "quotemark": [
-      true,
-      "single"
-    ],
-    "radix": true,
-    "semicolon": [
-      true,
-      "always"
-    ],
-    "triple-equals": [
-      true,
-      "allow-null-check"
-    ],
-    "typedef-whitespace": [
-      true,
-      {
-        "call-signature": "nospace",
-        "index-signature": "nospace",
-        "parameter": "nospace",
-        "property-declaration": "nospace",
-        "variable-declaration": "nospace"
-      }
-    ],
-    "typeof-compare": true,
-    "unified-signatures": true,
-    "variable-name": false,
-    "whitespace": [
-      true,
-      "check-branch",
-      "check-decl",
-      "check-operator",
-      "check-separator",
-      "check-type"
-    ],
-    "directive-selector": [
-      true,
-      "attribute",
-      "app",
-      "camelCase"
-    ],
-    "component-selector": [
-      true,
-      "element",
-      "app",
-      "kebab-case"
-    ],
-    "use-input-property-decorator": true,
-    "use-output-property-decorator": true,
-    "use-host-property-decorator": true,
-    "no-input-rename": true,
-    "no-output-rename": true,
-    "use-life-cycle-interface": true,
-    "use-pipe-transform-interface": true,
-    "component-class-suffix": true,
-    "directive-class-suffix": true,
-    "invoke-injectable": true
-  }
-}

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.