Merge pull request #131 from apache/development

Merge development into master
diff --git a/.gitignore b/.gitignore
index 954abc0..6b2f042 100644
--- a/.gitignore
+++ b/.gitignore
@@ -120,3 +120,12 @@
 
 # Apple OS X folder attributes
 .DS_Store
+
+# node_modules
+/react-components/oodt_fm_plugin/node_modules
+/react-components/oodt_opsui_sample_app/node_modules
+
+# npm build/Tarball ignores
+/react-components/oodt_fm_plugin/dist
+
+
diff --git a/CHANGES.txt b/CHANGES.txt
index 85b23cb..c55f718 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,15 @@
 ======================
 
 =======
+Release 2.0 - In Progress
+
+NOTE: Avro RPC becomes the default method of communication from this version. XML RPC is made deprecated.
+
+* OODT-1006 Introduce docker images for file manager, resource manager, ReactJs based OPSUI and file manager/workflow manager REST APIs
+
+* OODT-1006 Add Dockerfile for OODT deployment
+
+=======
 Release 1.9.1 - 25/09/2021
 
 * OODT-1031 OODT 1.9 should default to XMLRpc versions of FM/RESMGR/WMGR instead of Avro versions
diff --git a/commons/src/main/java/org/apache/oodt/commons/AvroExecServer.java b/commons/src/main/java/org/apache/oodt/commons/AvroExecServer.java
index 34be998..b88f939 100644
--- a/commons/src/main/java/org/apache/oodt/commons/AvroExecServer.java
+++ b/commons/src/main/java/org/apache/oodt/commons/AvroExecServer.java
@@ -230,14 +230,9 @@
                     objOut.flush();
                     System.out.println();
                 } else {
-                    Class<?> servantClass = Class.forName("org.omg.PortableServer.Servant");
-                    Class<?> orbClass = Class.forName("org.omg.CORBA.ORB");
-                    Class<?> corbaObjectClass = Class.forName("org.omg.CORBA.Object");
-
-                    Object servant = servantClass.cast(server.getServant());
-                    Object orb = orbClass.cast(servantClass.getDeclaredMethod("_orb").invoke(servant));
-                    Object object = corbaObjectClass.cast(servantClass.getDeclaredMethod("_this_object", orbClass).invoke(servant, orb));
-                    System.out.println(orbClass.getDeclaredMethod("object_to_string", corbaObjectClass).invoke(orb, object));
+                    org.omg.PortableServer.Servant servant=(org.omg.PortableServer.Servant)server.getServant();
+                    org.omg.CORBA.ORB orb = servant._orb();
+                    System.out.println(orb.object_to_string(servant._this_object(orb)));         
                 }
                 System.out.flush();
             }
diff --git a/commons/src/main/java/org/apache/oodt/commons/ExecServer.java b/commons/src/main/java/org/apache/oodt/commons/ExecServer.java
index 1a91320..3f7373d 100644
--- a/commons/src/main/java/org/apache/oodt/commons/ExecServer.java
+++ b/commons/src/main/java/org/apache/oodt/commons/ExecServer.java
@@ -119,14 +119,9 @@
 					objOut.flush();
 					System.out.println();
 				} else {
-                    Class<?> servantClass = Class.forName("org.omg.PortableServer.Servant");
-                    Class<?> orbClass = Class.forName("org.omg.CORBA.ORB");
-                    Class<?> corbaObjectClass = Class.forName("org.omg.CORBA.Object");
-
-                    Object servant = servantClass.cast(server.getServant());
-                    Object orb = orbClass.cast(servantClass.getDeclaredMethod("_orb").invoke(servant));
-                    Object object = corbaObjectClass.cast(servantClass.getDeclaredMethod("_this_object", orbClass).invoke(servant, orb));
-                    System.out.println(orbClass.getDeclaredMethod("object_to_string", corbaObjectClass).invoke(orb, object));
+					org.omg.PortableServer.Servant servant=(org.omg.PortableServer.Servant)server.getServant();
+					org.omg.CORBA.ORB orb = servant._orb();
+					System.out.println(orb.object_to_string(servant._this_object(orb)));
 				}
 				System.out.flush();
 			}
diff --git a/core/pom.xml b/core/pom.xml
index 00ffd74..b7ab26f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -41,6 +41,10 @@
     <jetty.version>6.1.25</jetty.version>
     <sonar.language>java</sonar.language>
     <lucene.version>6.6.5</lucene.version>
+    <!-- Docker -->
+    <docker.build.disabled>true</docker.build.disabled>
+    <docker.image.name/>
+    <docker.working.dir>${project.basedir}</docker.working.dir>
   </properties>
   <distributionManagement>
     <site>
@@ -287,6 +291,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.cxf</groupId>
+        <artifactId>cxf-rt-transports-http-jetty</artifactId>
+        <version>3.1.6</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-rt-frontend-jaxrs</artifactId>
         <version>3.1.6</version>
       </dependency>
@@ -371,6 +380,12 @@
       </dependency>
       <dependency>
         <groupId>org.apache.oodt</groupId>
+        <artifactId>workflow-services</artifactId>
+        <version>${project.parent.version}</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.oodt</groupId>
         <artifactId>cas-resource</artifactId>
         <version>${project.parent.version}</version>
       </dependency>
@@ -407,6 +422,12 @@
       </dependency>
       <dependency>
         <groupId>org.apache.oodt</groupId>
+        <artifactId>oodt-reactjs-opsui</artifactId>
+        <version>${project.parent.version}</version>
+        <type>pom</type>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.oodt</groupId>
         <artifactId>curator-sso</artifactId>
         <version>${project.parent.version}</version>
       </dependency>
@@ -1061,5 +1082,42 @@
         </plugins>
       </build>
     </profile>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <version>3.0.0</version>
+            <configuration>
+              <skip>${docker.build.disabled}</skip>
+            </configuration>
+            <executions>
+              <execution>
+                <id>docker-clean</id>
+                <phase>install</phase>
+                <goals>
+                  <goal>exec</goal>
+                </goals>
+                <configuration>
+                  <executable>docker</executable>
+                  <workingDirectory>${docker.working.dir}</workingDirectory>
+                  <arguments>
+                    <argument>build</argument>
+                    <argument>-t</argument>
+                    <argument>${docker.image.name}</argument>
+                    <argument>.</argument>
+                  </arguments>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>
diff --git a/crawler/src/main/resources/logging.properties b/crawler/src/main/resources/logging.properties
index ed5b249..119b99e 100644
--- a/crawler/src/main/resources/logging.properties
+++ b/crawler/src/main/resources/logging.properties
@@ -20,11 +20,11 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler, org.slf4j.bridge.SLF4JBridgeHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
+.level = ALL
     
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/curator/sso/src/main/java/org/apache/oodt/security/sso/OpenSSOImpl.java b/curator/sso/src/main/java/org/apache/oodt/security/sso/OpenSSOImpl.java
index f170efc..6c1c50d 100755
--- a/curator/sso/src/main/java/org/apache/oodt/security/sso/OpenSSOImpl.java
+++ b/curator/sso/src/main/java/org/apache/oodt/security/sso/OpenSSOImpl.java
@@ -44,7 +44,7 @@
   private static final Logger LOG = Logger.getLogger(OpenSSOImpl.class
       .getName());
 
-  private SSOProxy ssoProxy;
+  private transient SSOProxy ssoProxy;
 
   /**
    * Default constructor.
diff --git a/deployment/assembly.xml b/deployment/assembly.xml
new file mode 100644
index 0000000..b1c1025
--- /dev/null
+++ b/deployment/assembly.xml
@@ -0,0 +1,58 @@
+<!-- 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<assembly>
+    <id>docker-compose</id>
+    <formats>
+        <format>tar.gz</format>
+        <format>zip</format>
+    </formats>
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>oodt-docker-compose</baseDirectory>
+    <files>
+        <file>
+            <source>docker-compose.yml</source>
+            <filtered>true</filtered>
+        </file>
+    </files>
+
+    <fileSets>
+        <fileSet>
+            <outputDirectory>/filemgr/data</outputDirectory>
+            <excludes>
+                <exclude>**/*</exclude>
+            </excludes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/docker-compose/cas-filemgr-${project.version}</directory>
+            <outputDirectory>/filemgr</outputDirectory>
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/docker-compose/cas-workflow-${project.version}</directory>
+            <outputDirectory>/workflowmgr</outputDirectory>
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+    </fileSets>
+
+</assembly>
diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml
new file mode 100644
index 0000000..a60a79a
--- /dev/null
+++ b/deployment/docker-compose.yml
@@ -0,0 +1,47 @@
+version: '3'
+
+services:
+
+  filemgr:
+    image: oodt/filemgr:latest
+    restart: "no"
+    ports:
+      - 9000:9000
+      - 5005:5005
+    environment:
+      - SOLR_URL=http://solr:8983
+      - DEBUG=5005
+    volumes:
+      - ./filemgr/data:/filemgr/data
+      - ./filemgr/policy:/filemgr/policy
+
+  workflowmgr:
+    image: oodt/workflowmgr:latest
+    restart: "no"
+    ports:
+      - 9001:9001
+    environment:
+      - SOLR_URL=http://solr:8983
+    volumes:
+      - ./workflowmgr/policy:/workflowmgr/policy
+
+  opsui:
+    image: oodt/opsui:latest
+    restart: "no"
+    ports:
+      - 5000:5000
+
+  tomcat:
+    image: oodt/tomcat:latest
+    restart: "no"
+    ports:
+      - 8080:8080
+    environment:
+      FILEMGR_URL: http://filemgr:9000
+      WORKFLOW_URL: http://workflowmgr:9001
+      FILEMGR_WORKINGDIR: /tmp
+    volumes:
+      - ./filemgr/data:/filemgr/data
+
+volumes:
+  filemgr-data:
\ No newline at end of file
diff --git a/deployment/docker/Dockerfile b/deployment/docker/Dockerfile
new file mode 100644
index 0000000..90812f3
--- /dev/null
+++ b/deployment/docker/Dockerfile
@@ -0,0 +1,35 @@
+FROM maven:3.5
+MAINTAINER Tom Barber
+
+#Setting the Work Directory for OODT in Docker Container
+WORKDIR /usr/src
+
+RUN mvn archetype:generate -DarchetypeGroupId=org.apache.oodt -DarchetypeArtifactId=radix-archetype -DarchetypeVersion=0.9 -Doodt=1.2.3 -DgroupId=com.mycompany -DartifactId=oodt -Dversion=0.1 && mv oodt oodt-src; cd oodt-src; mvn package && mkdir /usr/src/oodt; tar -xvf /usr/src/oodt-src/distribution/target/oodt-distribution-0.1-bin.tar.gz -C /usr/src/oodt && cd /usr/src/oodt-src && mvn clean && rm -rf ~/.m2
+# Maven archetype generation command to make an oodt project.
+# Fix Below Parameters before build the docker image
+# groupId = specify your company's namespace
+# artifactId = pecify a short name of your project
+# version = initial version label for your project
+# oodt = the version of OODT that you want your project to be built on
+RUN mvn archetype:generate -DarchetypeGroupId=org.apache.oodt \
+    -DarchetypeArtifactId=radix-archetype -DarchetypeVersion=0.9 \
+    -Doodt=1.2.5 -DgroupId=com.mycompany \
+    -DartifactId=oodt -Dversion=0.1 \
+    && mv oodt oodt-src; \
+    cd oodt-src; \
+    mvn package \
+    && mkdir /usr/src/oodt; \
+    tar -xvf distribution/target/oodt-distribution-0.1-bin.tar.gz -C /usr/src/oodt \
+    && mkdir /usr/src/oodt/tomcat/server/webapps/host-manager /usr/src/oodt/tomcat/server/webapps/manager \
+    && mvn clean && rm -rf ~/.m2
+
+#Exposing required ports to local
+EXPOSE 8080
+EXPOSE 9000
+EXPOSE 2001
+EXPOSE 9001
+EXPOSE 9200
+EXPOSE 9002
+
+# Starting OODT and Loging catalina log
+CMD cd /usr/src/oodt/bin/ && ./oodt start && tail -f /usr/src/oodt/tomcat/logs/catalina.out
\ No newline at end of file
diff --git a/deployment/docker/README.md b/deployment/docker/README.md
new file mode 100644
index 0000000..58492b9
--- /dev/null
+++ b/deployment/docker/README.md
@@ -0,0 +1,36 @@
+# OODT Docker
+
+Automated RADIX build on Docker for Apache OODT
+
+## Usage
+
+You should edit docker file replacing the parameters below with values you desire before building this image.
+
+1. The groupId is a place to specify your company's namespace. 
+    ```dockerfile
+    -DgroupId = com.mycompany
+    ```
+2. The artifactId is a place to specify a short name of your project. 
+    ```dockerfile
+    -DartifactId = oodt
+    ```
+3. The version indicates the initial version label for your project. 
+    ```dockerfile
+    -Dversion = 0.1
+    ``` 
+4. The oodt flag indicates the version of OODT that you want your project to be built on. N.B., this should most likely match [the most recent version of OODT](https://search.maven.org/search?q=g:org.apache.oodt).
+    ```dockerfile
+    -Doodt = 1.2.5
+    ```
+
+### Building OODT Docker Image
+Execute below command in a prompt which is opened where the Docker file placed. Replace  `oodt_docker` with any name as it will be the name of your docker image.
+```dockerfile
+sudo docker build -t oodt_docker . 
+```    
+
+### Running OODT Docker Image
+After your docker image successfully built, execute below prompt command.`oodt_docker` is the oodt docker image name.
+```dockerfile
+sudo docker run -p 8080:8080 -p 9000:9000 -p 9001:9001 -p 9002:9002 -p 2001:2001 -p 9200:9200  --name my_first_oodt -i -t oodt_docker
+```
diff --git a/deployment/pom.xml b/deployment/pom.xml
new file mode 100644
index 0000000..f47b96d
--- /dev/null
+++ b/deployment/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more contributor
+  license agreements.  See the NOTICE.txt file distributed with this work for
+  additional information regarding copyright ownership.  The ASF licenses this
+  file to you under the Apache License, Version 2.0 (the "License"); you may not
+  use this file except in compliance with the License.  You may obtain a copy of
+  the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.oodt</groupId>
+        <artifactId>oodt-core</artifactId>
+        <version>1.10-SNAPSHOT</version>
+        <relativePath>../core/pom.xml</relativePath>
+    </parent>
+    <artifactId>oodt-deployment</artifactId>
+    <packaging>pom</packaging>
+    <name>OODT Deployment</name>
+    <description>Contains the docker based deployments for OODT</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>cas-filemgr</artifactId>
+            <version>${project.version}</version>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>cas-workflow</artifactId>
+            <version>${project.version}</version>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>cas-product</artifactId>
+            <type>war</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>workflow-services</artifactId>
+            <type>war</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>oodt-reactjs-opsui</artifactId>
+            <type>pom</type>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <version>3.2.0</version>
+                        <executions>
+                            <execution>
+                                <id>unpack</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.apache.oodt</groupId>
+                                            <artifactId>cas-filemgr</artifactId>
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                            <overWrite>false</overWrite>
+                                            <outputDirectory>${project.build.directory}/docker-compose</outputDirectory>
+                                            <includes>*/policy/**</includes>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.apache.oodt</groupId>
+                                            <artifactId>cas-workflow</artifactId>
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                            <overWrite>false</overWrite>
+                                            <outputDirectory>${project.build.directory}/docker-compose</outputDirectory>
+                                            <includes>*/policy/**</includes>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <configuration>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <descriptors>
+                                <descriptor>assembly.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <phase>install</phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
\ No newline at end of file
diff --git a/filemgr/Dockerfile b/filemgr/Dockerfile
new file mode 100644
index 0000000..d21d9b7
--- /dev/null
+++ b/filemgr/Dockerfile
@@ -0,0 +1,8 @@
+FROM openjdk:8-jre-alpine
+
+ADD target/cas-filemgr-1.10-SNAPSHOT.tar.gz /
+RUN mv cas-filemgr-1.10-SNAPSHOT /filemgr
+
+WORKDIR /filemgr/bin
+
+ENTRYPOINT ["sh", "./filemgr", "run"]
\ No newline at end of file
diff --git a/filemgr/pom.xml b/filemgr/pom.xml
index 4902250..0a5014e 100644
--- a/filemgr/pom.xml
+++ b/filemgr/pom.xml
@@ -25,11 +25,19 @@
   </parent>
   <artifactId>cas-filemgr</artifactId>
   <name>Catalog and Archive File Management Component</name>
-  <description>The file management component of a Catalog and Archive Service. This component
+  <description>
+    The file management component of a Catalog and Archive Service. This component
      purposefully separates data stores and metadata stores as standard interfaces, and
      provides some out of the box backend implementations of them (including one based
      on the javax.sql.DataSource interface). This component provides everything that you need
-     to catalog, archive and manage files, and directories, and their associated metadata.</description>
+     to catalog, archive and manage files, and directories, and their associated metadata.
+  </description>
+  
+  <properties>
+    <docker.build.disabled>false</docker.build.disabled>
+    <docker.image.name>oodt/filemgr:latest</docker.image.name>
+  </properties>
+  
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
      For example, within core/pom.xml:
@@ -327,6 +335,7 @@
         <artifactId>maven-assembly-plugin</artifactId>
         <version>2.6</version>
         <configuration>
+          <appendAssemblyId>false</appendAssemblyId>
           <descriptors>
             <descriptor>src/main/assembly/assembly.xml</descriptor>
           </descriptors>
diff --git a/filemgr/src/main/bin/filemgr b/filemgr/src/main/bin/filemgr
index 8981580..806a15e 100644
--- a/filemgr/src/main/bin/filemgr
+++ b/filemgr/src/main/bin/filemgr
@@ -36,9 +36,9 @@
 export JAVA_HOME
 FILEMGR_HOME=`cd ..; pwd`
 export FILEMGR_HOME
-RUN_HOME=${FILEMGR_HOME}/../run
+RUN_HOME=${FILEMGR_HOME}/run
 export RUN_HOME
-CAS_FILEMGR_PROPS=../etc/filemgr.properties
+CAS_FILEMGR_PROPS=${FILEMGR_HOME}/etc/filemgr.properties
 export CAS_FILEMGR_PROPS
 
 PATH=${JAVA_HOME}/bin:${FILEMGR_HOME}/bin:/usr/bin:/bin:/usr/sbin:/sbin
@@ -66,11 +66,27 @@
     echo "Using standalone configuration management"
 fi
 
+if [ ! -z $DEBUG ]; then
+    echo "Running in debug mode on port: ${DEBUG}"
+    JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DEBUG}"
+fi
+
 # See how we were called.
 case "$1" in
+  run)
+        echo -n "Starting cas file manager: "
+        $JAVA_HOME/bin/java ${JAVA_OPTS} \
+        	-cp ${LIB_DEPS} \
+        	${DISTRIBUTED_CONF_PROPERTIES} \
+        	-Dlog4j.configurationFile="${FILEMGR_HOME}/etc/log4j2.xml" \
+        	-Djava.util.logging.config.file="${FILEMGR_HOME}/etc/logging.properties" \
+    	    -Dorg.apache.oodt.cas.filemgr.properties=${CAS_FILEMGR_PROPS} \
+        	org.apache.oodt.cas.filemgr.system.FileManagerServerMain \
+        	--portNum $SERVER_PORT
+        ;;
   start)
         echo -n "Starting cas file manager: "
-        $JAVA_HOME/bin/java \
+        $JAVA_HOME/bin/java ${JAVA_OPTS} \
         	-cp ${LIB_DEPS} \
         	${DISTRIBUTED_CONF_PROPERTIES} \
         	-Dlog4j.configurationFile="${FILEMGR_HOME}/etc/log4j2.xml" \
@@ -101,7 +117,7 @@
         fi
         ;;
   *)
-        echo "Usage: $0 {start|stop|restart|status}"
+        echo "Usage: $0 {run|start|stop|restart|status}"
         exit 1
 esac
 
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/Catalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/Catalog.java
index f056336..89d2ade 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/Catalog.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/Catalog.java
@@ -321,8 +321,6 @@
     /**
      * 
      * @return The {@link ValidationLayer} that is used by this Catalog.
-     * @throws CatalogException
-     *             If any error occurs (e.g., the layer isn't initialized).
      */
     ValidationLayer getValidationLayer();
 
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
index ba2dc2b..4751fb2 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
@@ -41,6 +41,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Vector;
 import java.util.concurrent.ConcurrentHashMap;
@@ -151,6 +152,7 @@
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#addMetadata(org.apache.oodt.cas.metadata.Metadata,
      *      org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void addMetadata(Metadata m, Product product)
             throws CatalogException {
         CompleteProduct p;
@@ -182,6 +184,7 @@
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#removeMetadata(org.apache.oodt.cas.metadata.Metadata,
      *      org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void removeMetadata(Metadata m, Product product)
             throws CatalogException {
         CompleteProduct p;
@@ -240,6 +243,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#addProduct(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void addProduct(Product product)
             throws CatalogException {
         if(product.getProductId()!=null && CATALOG_CACHE.containsKey(product.getProductId())) {
@@ -276,6 +280,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#modifyProduct(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void modifyProduct(Product product)
             throws CatalogException {
         if (product.getProductId()!=null && CATALOG_CACHE.containsKey(product.getProductId())) {
@@ -306,6 +311,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#removeProduct(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void removeProduct(Product product)
             throws CatalogException {
         removeProductDocument(product);
@@ -316,6 +322,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#setProductTransferStatus(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void setProductTransferStatus(Product product)
             throws CatalogException {
         LOG.log(Level.FINE,
@@ -330,6 +337,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#addProductReferences(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public synchronized void addProductReferences(Product product)
             throws CatalogException {
         if(product.getProductId()!=null && CATALOG_CACHE.containsKey(product.getProductId())) {
@@ -361,6 +369,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getProductById(java.lang.String)
      */
+    @Override
     public Product getProductById(String productId) throws CatalogException {
         CompleteProduct prod = getCompleteProductById(productId, false);
         return prod.getProduct();
@@ -431,6 +440,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getProductByName(java.lang.String)
      */
+    @Override
     public Product getProductByName(String productName) throws CatalogException {
         return getProductByName(productName, false);
     }
@@ -494,12 +504,13 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getProductReferences(org.apache.oodt.cas.filemgr.structs.Product)
      */
+    @Override
     public List<Reference> getProductReferences(Product product) throws CatalogException {
         Product prod = getProductById(product.getProductId(), true);
         if (prod != null) {
             return prod.getProductReferences();
         } else {
-            return null;
+            return Collections.emptyList();
         }
     }
 
@@ -508,13 +519,14 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getProducts()
      */
+    @Override
     public List<Product> getProducts() throws CatalogException {
         return getProducts(false);
     }
 
     private List<Product> getProducts(boolean getRefs) throws CatalogException {
         IndexSearcher searcher = null;
-        List<Product> products = null;
+        List<Product> products = new Vector<Product>();
 
         try {
             try {
@@ -536,7 +548,6 @@
 
                 // should be > 0 hits
                 if (hits.length > 0) {
-                    products = new Vector<Product>(hits.length);
                     for (ScoreDoc hit : hits) {
                         Document productDoc = searcher.doc(hit.doc);
                         CompleteProduct prod = toCompleteProduct(productDoc,
@@ -546,7 +557,6 @@
                 } else {
                     LOG.log(Level.FINEST,
                         "Request for products returned no results");
-                    return null;
                 }
             }
         } catch (IOException e) {
@@ -572,6 +582,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getProductsByProductType(org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public List<Product> getProductsByProductType(ProductType type)
             throws CatalogException {
         return getProductsByProductType(type, false);
@@ -580,7 +591,7 @@
     private List<Product> getProductsByProductType(ProductType type, boolean getRefs)
             throws CatalogException {
         IndexSearcher searcher = null;
-        List<Product> products = null;
+        List<Product> products = new Vector<Product>();
 
         try {
             try {
@@ -603,7 +614,6 @@
 
                 // should be > 0 hits
                 if (hits.length > 0) {
-                    products = new Vector<Product>(hits.length);
                     for (ScoreDoc hit : hits) {
                         Document productDoc = searcher.doc(hit.doc);
                         CompleteProduct prod = toCompleteProduct(productDoc,
@@ -613,7 +623,6 @@
                 } else {
                     LOG.log(Level.FINEST, "Request for products by type: ["
                         + type.getProductTypeId() + "] returned no results");
-                    return null;
                 }
             }
 
@@ -635,6 +644,7 @@
         return products;
     }
 
+    @Override
     public synchronized Metadata getMetadata(Product product) throws CatalogException {
         IndexSearcher searcher = null;
         try {
@@ -681,6 +691,7 @@
         }
     }
     
+    @Override
     public Metadata getReducedMetadata(Product product, List<String> elements) throws CatalogException {
         Metadata fullMetadata = getMetadata(product);
         Metadata reducedMetadata = new Metadata();
@@ -698,6 +709,7 @@
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#query(org.apache.oodt.cas.filemgr.structs.Query,
      *      org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public List<String> query(Query query, ProductType type) throws CatalogException {
         // paginate products returns full products, but the query method
         // is expected to return product ids
@@ -720,8 +732,9 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getTopNProducts(int)
      */
+    @Override
     public synchronized List<Product> getTopNProducts(int n) throws CatalogException {
-        List<Product> products = null;
+        List<Product> products = new Vector<Product>();
         IndexSearcher searcher = null;
 
         try {
@@ -749,7 +762,6 @@
                 ScoreDoc[] hits = topDocs.scoreDocs;
 
                 if (hits.length > 0) {
-                    products = new Vector<Product>(n);
                     int i = 0;
                     while (products.size() < Math.min(n, hits.length)) {
                         Document productDoc = searcher.doc(hits[i].doc);
@@ -762,10 +774,6 @@
                     LOG.log(Level.WARNING, "Top N query produced no products!");
                 }
             }
-            else{
-                return null;
-            }
-
         } catch (IOException e) {
             LOG.log(Level.WARNING,
                     "IOException when opening index directory: ["
@@ -790,6 +798,7 @@
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getTopNProducts(int,
      *      org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public synchronized List<Product> getTopNProducts(int n, ProductType type)
             throws CatalogException {
         int numPages = 1;
@@ -819,6 +828,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getValidationLayer()
      */
+    @Override
     public ValidationLayer getValidationLayer() {
         return valLayer;
     }
@@ -828,6 +838,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#getNumProducts(org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public int getNumProducts(ProductType type) throws CatalogException {
         Query query = new Query();
         return getNumHits(query, type);
@@ -838,6 +849,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.util.Pagination#getFirstPage(org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public ProductPage getFirstPage(ProductType type) {
         logger.debug("Getting first page for product type: {}", type);
         ProductPage firstPage = new ProductPage();
@@ -855,12 +867,12 @@
                             + type.getProductTypeId()
                             + "] from catalog: Message: " + e.getMessage());
             logger.error("Unable to get first page for product type: {} - {}", type, e.getMessage());
-            return null;
+            return ProductPage.blankPage();
         }
         // There are no products and thus no first page
         if (products == null || (products.size() == 0)) {
             logger.warn("No product found for first page for product type: {}", type);
-            return null;
+            return ProductPage.blankPage();
         }
 
         firstPage.setPageProducts(products);
@@ -875,6 +887,7 @@
      * 
      * @see org.apache.oodt.cas.filemgr.util.Pagination#getLastProductPage(org.apache.oodt.cas.filemgr.structs.ProductType)
      */
+    @Override
     public ProductPage getLastProductPage(ProductType type) {
         ProductPage lastPage = new ProductPage();
         ProductPage firstPage = getFirstPage(type);
@@ -891,11 +904,11 @@
                   "CatalogException getting last page for product type: ["
                           + type.getProductTypeId()
                           + "] from catalog: Message: " + e.getMessage());
-          	return null;
+            return ProductPage.blankPage();
         }
         // There are no products thus there is no last page
         if (products == null || (products.size() == 0)) {
-        	  return null;
+            return ProductPage.blankPage();
         }
         lastPage.setPageProducts(products);
 
@@ -908,6 +921,7 @@
      * @see org.apache.oodt.cas.filemgr.util.Pagination#getNextPage(org.apache.oodt.cas.filemgr.structs.ProductType,
      *      org.apache.oodt.cas.filemgr.structs.ProductPage)
      */
+    @Override
     public ProductPage getNextPage(ProductType type, ProductPage currentPage) {
         if(type==null){
             LOG.warning("getNextPage: Provided type was null: Returning blank page.");
@@ -952,6 +966,7 @@
      * @see org.apache.oodt.cas.filemgr.util.Pagination#getPrevPage(org.apache.oodt.cas.filemgr.structs.ProductType,
      *      org.apache.oodt.cas.filemgr.structs.ProductPage)
      */
+    @Override
     public ProductPage getPrevPage(ProductType type, ProductPage currentPage) {
         if(type==null){
             LOG.warning("getPrevPage: Provided type was null: Returning blank page.");
@@ -980,12 +995,12 @@
                     "CatalogException getting prev page for product type: ["
                             + type.getProductTypeId()
                             + "] from catalog: Message: " + e.getMessage());
-            return null;
+            return ProductPage.blankPage();
         }
         
         // There are no products and thus no pages
         if (products == null || (products.size() == 0)) {
-        	  return null;
+            return ProductPage.blankPage();
         }
         prevPage.setPageProducts(products);
 
@@ -998,6 +1013,7 @@
      * @see org.apache.oodt.cas.filemgr.catalog.Catalog#pagedQuery(org.apache.oodt.cas.filemgr.structs.Query,
      *      org.apache.oodt.cas.filemgr.structs.ProductType, int)
      */
+    @Override
     public ProductPage pagedQuery(Query query, ProductType type, int pageNum)
             throws CatalogException {
         try {
@@ -1365,7 +1381,7 @@
 
     private synchronized List<Product> paginateQuery(Query query, ProductType type, int pageNum, ProductPage page)
             throws CatalogException {
-        List<Product> products = null;
+        List<Product> products = new Vector<Product>(pageSize);
         IndexSearcher searcher = null;
 
         boolean doSkip = true;
@@ -1420,8 +1436,6 @@
                             startNum = 0;
                         }
 
-                        products = new Vector<Product>(pageSize);
-
                         for (int i = startNum; i < Math.min(hits.length,
                             (startNum + pageSize)); i++) {
                             Document productDoc = searcher.doc(hits[i].doc);
@@ -1502,10 +1516,11 @@
             Term startTerm = null;
             if (!startVal.equals("")) {
                 startTerm = new Term(queryCriteria.getElementName(), startVal);
+            } else {
+                startTerm = new Term(queryCriteria.getElementName());
             }
-
             return TermRangeQuery.newStringRange(startTerm.field(), startVal, endVal, inclusive,inclusive);
-        }else {
+        } else {
             throw new CatalogException("Invalid QueryCriteria ["
                     + queryCriteria.getClass().getCanonicalName() + "]");
         }
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
index 06eb300..3b08470 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
@@ -184,6 +184,10 @@
          u = URI.create("file://"+ref.getDataStoreReference()).toURL().getPath();
        }
        File dataFile = new File(u);
+       if (!dataFile.exists()) {
+         LOG.warning("Couldn't file file to be deleted: " + dataFile.getAbsolutePath());
+         return;
+       }
        if (!dataFile.delete()) {
         throw new IOException(String.format("Failed to delete file %s - delete returned false",
             dataFile));
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/ingest/StdIngester.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/ingest/StdIngester.java
index 0195bb6..fcd579f 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/ingest/StdIngester.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/ingest/StdIngester.java
@@ -19,6 +19,7 @@
 
 //OODT imports
 
+import org.apache.oodt.cas.filemgr.datatransfer.DataTransfer;
 import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
@@ -51,7 +52,7 @@
  * @version $Revision$
  *
  * <p>
- * An implementation of the {@link Ingster} interface that uses the following
+ * An implementation of the {@link Ingester} interface that uses the following
  * pieces of {@link Metadata} information to determine how to ingest a
  * {@link Product}:
  *
@@ -188,8 +189,8 @@
         product.setProductType(getProductType(productType));
 
         List<String> references = new Vector<String>();
-        if (!fileLocation.endsWith("/")) {
-            fileLocation += "/";
+        if (!fileLocation.endsWith(File.separator)) {
+            fileLocation += File.separator;
         }
 
         String fullFilePath = fileLocation + fileName;
@@ -268,9 +269,10 @@
                     + url + "]");
             // instantiate the client transfer object
             // the crawler will have the client perform the transfer
-            fmClient
-                    .setDataTransfer(GenericFileManagerObjectFactory
-                            .getDataTransferServiceFromFactory(this.clientTransferServiceFactory));
+            DataTransfer dataTransfer = GenericFileManagerObjectFactory
+                    .getDataTransferServiceFromFactory(this.clientTransferServiceFactory);
+            dataTransfer.setFileManagerUrl(url);
+            fmClient.setDataTransfer(dataTransfer);
         } catch (ConnectionException e) {
             LOG.log(Level.SEVERE, e.getMessage());
             LOG.log(Level.WARNING, "Unable to connect to file manager: [" + url
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ExtractorSpec.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ExtractorSpec.java
index 2019ae7..e276642 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ExtractorSpec.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ExtractorSpec.java
@@ -18,6 +18,7 @@
 package org.apache.oodt.cas.filemgr.structs;
 
 //JDK imports
+import java.io.Serializable;
 import java.util.Properties;
 
 /**
@@ -29,7 +30,7 @@
  * a {@link FilemgrMetExtractor}.
  * </p>.
  */
-public class ExtractorSpec {
+public class ExtractorSpec implements Serializable {
 
     private String className;
 
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java
index 84b3601..40824fb 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java
@@ -17,6 +17,7 @@
 
 package org.apache.oodt.cas.filemgr.structs;
 
+import java.io.Serializable;
 import java.util.Collections;
 //JDK imports
 import java.util.List;
@@ -32,7 +33,7 @@
  * </p>
  * 
  */
-public class ProductPage {
+public class ProductPage implements Serializable {
 
     /* the number of this page */
     private int pageNum = -1;
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductType.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductType.java
index 4458fba..ddbcdbc 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductType.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductType.java
@@ -17,6 +17,7 @@
 
 package org.apache.oodt.cas.filemgr.structs;
 
+import java.io.Serializable;
 import java.util.Collections;
 //JDK imports
 import java.util.List;
@@ -39,7 +40,7 @@
  * </p>
  * 
  */
-public class ProductType {
+public class ProductType implements Serializable {
 
     /* the unique ID representing this product type */
     private String productTypeId = null;
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Reference.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Reference.java
index 7811c70..178cfe0 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Reference.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Reference.java
@@ -29,6 +29,7 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.Serializable;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -45,7 +46,7 @@
  * </p>
  * 
  */
-public class Reference {
+public class Reference implements Serializable {
     private static Logger LOG = Logger.getLogger(Reference.class.getName());
     /* the item's original location */
     private String origReference = null;
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java
index 2057ce1..2f656c4 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java
@@ -68,10 +68,10 @@
     private static final Logger logger = LoggerFactory.getLogger(AvroFileManagerClient.class);
 
     /** Avro-Rpc client */
-    private Transceiver client;
+    private transient Transceiver client;
 
     /** proxy for the server */
-    private AvroFileManager proxy;
+    private transient AvroFileManager proxy;
 
     /* URL where the fileManager is */
     private URL fileManagerUrl;
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/FileManagerClient.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/FileManagerClient.java
index c0fa46a..23667ca 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/FileManagerClient.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/FileManagerClient.java
@@ -37,6 +37,7 @@
 //JDK imports
 import java.io.Closeable;
 import java.io.IOException;
+import java.io.Serializable;
 import java.net.URL;
 import java.util.List;
 
@@ -47,7 +48,7 @@
  * <p>Interface of client for FileManager RPC logic. All methods that are used for
  * RPC transfer.</p>
  */
-public interface FileManagerClient extends Closeable {
+public interface FileManagerClient extends Closeable, Serializable {
 
     public boolean refreshConfigAndPolicy();
 
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
index 06c2726..bfe9513 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
@@ -77,7 +77,7 @@
 public class XmlRpcFileManagerClient implements FileManagerClient {
 
   /* our xml rpc client */
-  private XmlRpcClient client = null;
+  private transient XmlRpcClient client = null;
 
   /* our log stream */
   private static Logger LOG = Logger.getLogger(XmlRpcFileManagerClient.class
diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/RpcCommunicationFactory.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/RpcCommunicationFactory.java
index 0ed2bb4..c580aad 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/RpcCommunicationFactory.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/RpcCommunicationFactory.java
@@ -20,10 +20,10 @@
 import org.apache.oodt.cas.filemgr.structs.exceptions.ConnectionException;
 import org.apache.oodt.cas.filemgr.system.FileManagerClient;
 import org.apache.oodt.cas.filemgr.system.FileManagerServer;
+import org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerClientFactory;
+import org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerServerFactory;
 import org.apache.oodt.cas.filemgr.system.rpc.FileManagerClientFactory;
 import org.apache.oodt.cas.filemgr.system.rpc.FileManagerServerFactory;
-import org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerClientFactory;
-import org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerServerFactory;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -47,7 +47,7 @@
     
     private static String getClientFactoryName() {
         return System.getProperty(FileManagerServer.FILEMGR_CLIENT_SYSTEM_PROPERTY,
-                XmlRpcFileManagerClientFactory.class.getName());
+                AvroFileManagerClientFactory.class.getName());
     }
 
     /**
@@ -129,7 +129,7 @@
         setPror();
 
         String serverFactory = System.getProperty(FileManagerServer.FILEMGR_SERVER_SYSTEM_PROPERTY,
-                XmlRpcFileManagerServerFactory.class.getName());
+                AvroFileManagerServerFactory.class.getName());
 
         LOG.log(Level.INFO, "Init. server's factory class: " + serverFactory);
 
diff --git a/filemgr/src/main/resources/examples/core/product-types.xml b/filemgr/src/main/resources/examples/core/product-types.xml
index e45259b..6211109 100644
--- a/filemgr/src/main/resources/examples/core/product-types.xml
+++ b/filemgr/src/main/resources/examples/core/product-types.xml
@@ -17,7 +17,7 @@
 -->
 <cas:producttypes xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
   <type id="urn:oodt:GenericFile" name="GenericFile">
-    <repository path="file://[HOME]/files"/>
+    <repository path="file://[FILEMGR_HOME]/data/files"/>
     <versioner class="org.apache.oodt.cas.filemgr.versioning.BasicVersioner"/>
     <!--  
      You can optionally specify a 'trim' tag to identify whether
diff --git a/filemgr/src/main/resources/examples/geo/product-types.xml b/filemgr/src/main/resources/examples/geo/product-types.xml
index 427d4f0..2656fbd 100644
--- a/filemgr/src/main/resources/examples/geo/product-types.xml
+++ b/filemgr/src/main/resources/examples/geo/product-types.xml
@@ -17,7 +17,7 @@
 -->
 <cas:producttypes xmlns:cas="http://oodt.apache.org/components/cas">
   <type id="urn:oodt:LocationAwareProduct" name="LocationAwareProduct">
-    <repository path="file://[HOME]/files"/>
+    <repository path="file://[FILEMGR_HOME]/data/files"/>
     <versioner class="org.apache.oodt.cas.filemgr.versioning.BasicVersioner"/>
     <!--
       You can optionally specify a 'trim' tag to identify whether or not you
diff --git a/filemgr/src/main/resources/examples/trace/product-types.xml b/filemgr/src/main/resources/examples/trace/product-types.xml
index 1ec9c99..34f114c 100644
--- a/filemgr/src/main/resources/examples/trace/product-types.xml
+++ b/filemgr/src/main/resources/examples/trace/product-types.xml
@@ -17,7 +17,7 @@
 -->
 <cas:producttypes xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
   <type id="urn:oodt:TraceableFile" name="TraceableFile">
-    <repository path="file://[HOME]/files"/>
+    <repository path="file://[FILEMGR_HOME]/data/files"/>
     <versioner class="org.apache.oodt.cas.filemgr.versioning.BasicVersioner"/>
     <!--                                                                                                                                                            
      You can optionally specify a 'trim' tag to identify whether                                                                                                    
diff --git a/filemgr/src/main/resources/filemgr.properties b/filemgr/src/main/resources/filemgr.properties
index 65c2fca..81b0a24 100644
--- a/filemgr/src/main/resources/filemgr.properties
+++ b/filemgr/src/main/resources/filemgr.properties
@@ -18,8 +18,8 @@
 # rpc configuration, uncomment the avro implementations to use AvroRPC
 #filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerServerFactory
 #filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerClientFactory
-filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerServerFactory
-filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerClientFactory
+filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerServerFactory
+filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerClientFactory
 
 # repository factory
 filemgr.repository.factory=org.apache.oodt.cas.filemgr.repository.XMLRepositoryManagerFactory
@@ -67,7 +67,7 @@
 org.apache.oodt.cas.filemgr.catalog.science.jdbc.driver=driver.class.name
 
 # lucene catalog configuration
-org.apache.oodt.cas.filemgr.catalog.lucene.idxPath=/tmp/test
+org.apache.oodt.cas.filemgr.catalog.lucene.idxPath=[FILEMGR_HOME]/data/catalog
 org.apache.oodt.cas.filemgr.catalog.lucene.pageSize=20
 org.apache.oodt.cas.filemgr.catalog.lucene.commitLockTimeout.seconds=60
 org.apache.oodt.cas.filemgr.catalog.lucene.writeLockTimeout.seconds=60
@@ -94,12 +94,12 @@
 org.apache.oodt.cas.filemgr.repositorymgr.science.jdbc.driver=driver.class.name
 
 # XML repository manager configuration
-org.apache.oodt.cas.filemgr.repositorymgr.dirs=file:///dir1,file:///dir2
+org.apache.oodt.cas.filemgr.repositorymgr.dirs=file:[FILEMGR_HOME]/policy/core,file:[FILEMGR_HOME]/policy/geo,file:[FILEMGR_HOME]/policy/trace
 # uncomment the following line and set the value to true to recursively parse policy directories
 #org.apache.oodt.cas.filemgr.repositorymgr.dirs.recursive=false
 
 # XML validation layer configuration
-org.apache.oodt.cas.filemgr.validation.dirs=file:///dir1,file:///dir2
+org.apache.oodt.cas.filemgr.validation.dirs=file:[FILEMGR_HOME]/policy/core,file:[FILEMGR_HOME]/policy/geo,file:[FILEMGR_HOME]/policy/trace
 # uncomment the following line and set the value to true to recursively parse validation directories
 #org.apache.oodt.cas.filemgr.validation.dirs.recursive=false
 
@@ -134,7 +134,7 @@
 org.apache.oodt.cas.filemgr.datatransfer.s3.encrypt=false
 
 # location of Mime-Type repository
-org.apache.oodt.cas.filemgr.mime.type.repository=/path/to/mime-types.xml
+org.apache.oodt.cas.filemgr.mime.type.repository=[FILEMGR_HOME]/etc/mime-types.xml
 
 # tells the file manager system layer to include product instance metadata
 # NOTE: here are the expected field mappings
diff --git a/filemgr/src/main/resources/logging.properties b/filemgr/src/main/resources/logging.properties
index 175699c..30e234c 100644
--- a/filemgr/src/main/resources/logging.properties
+++ b/filemgr/src/main/resources/logging.properties
@@ -19,11 +19,11 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler, org.slf4j.bridge.SLF4JBridgeHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
+.level = ALL
     
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/structs/type/TestTypeHandler.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/structs/type/TestTypeHandler.java
index d3d12bc..a189f93 100644
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/structs/type/TestTypeHandler.java
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/structs/type/TestTypeHandler.java
@@ -462,7 +462,8 @@
                 boolean gotFirstClause = false;
                 int clauseNum = 0;
 
-                if (query.getCriteria() != null
+                if (this.getValidationLayer() != null
+                        && query.getCriteria() != null
                         && query.getCriteria().size() > 0) {
                     for (QueryCriteria criteria : query.getCriteria()) {
                         clauseNum++;
@@ -701,7 +702,8 @@
                 boolean gotFirstClause = false;
                 int clauseNum = 0;
 
-                if (query.getCriteria() != null
+                if (this.getValidationLayer() != null
+                        && query.getCriteria() != null
                         && query.getCriteria().size() > 0) {
                     for (QueryCriteria criteria : query.getCriteria()) {
                         clauseNum++;
diff --git a/filemgr/src/test/resources/test.logging.properties b/filemgr/src/test/resources/test.logging.properties
index 4508d93..038c0c8 100644
--- a/filemgr/src/test/resources/test.logging.properties
+++ b/filemgr/src/test/resources/test.logging.properties
@@ -20,10 +20,11 @@
 handlers = java.util.logging.ConsoleHandler
 
 # Set the default logging level for the root logger
-.level = OFF
+.level = ALL
     
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = OFF
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/metadata/src/main/java/org/apache/oodt/cas/metadata/util/PathUtils.java b/metadata/src/main/java/org/apache/oodt/cas/metadata/util/PathUtils.java
index f70e29f..2a009b6 100644
--- a/metadata/src/main/java/org/apache/oodt/cas/metadata/util/PathUtils.java
+++ b/metadata/src/main/java/org/apache/oodt/cas/metadata/util/PathUtils.java
@@ -88,6 +88,14 @@
 
         return finalPath.toString();
     }
+    
+    public static String recursivelyReplaceEnvVariables(String origPath) {
+        while (origPath != null && origPath.contains("[") && origPath.contains("]")) {
+            origPath = replaceEnvVariables(origPath);
+        }
+        
+        return origPath;
+    }
 
     public static String doDynamicReplacement(String string)
         throws ParseException, CommonsException, CasMetadataException {
diff --git a/metadata/src/main/resources/logging.properties b/metadata/src/main/resources/logging.properties
index 7cb59e6..0349fac 100644
--- a/metadata/src/main/resources/logging.properties
+++ b/metadata/src/main/resources/logging.properties
@@ -19,10 +19,11 @@
 handlers = java.util.logging.ConsoleHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
 
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/MetadataTestCase.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/MetadataTestCase.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/TestMetadata.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/TestMetadata.java
similarity index 93%
rename from metadata/src/test/org/apache/oodt/cas/metadata/TestMetadata.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/TestMetadata.java
index 9918a48..b295892 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/TestMetadata.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/TestMetadata.java
@@ -21,7 +21,7 @@
 //JDK imports
 import java.util.List;
 import java.util.Vector;
-import java.util.Hashtable;
+import java.util.HashMap;
 
 /**
  * Test Case Suite for the Metadata class.
@@ -53,7 +53,7 @@
   }
 
   public void testAddMany() {
-    List counting = new Vector();
+    List<String> counting = new Vector<>();
     counting.add("1");
     counting.add("2");
     counting.add("3");
@@ -69,7 +69,7 @@
   }
 
   public void testAddHashtable() {
-    Hashtable testHash = new Hashtable();
+    HashMap<String,Object> testHash = new HashMap<>();
     testHash.put("key1", "val1");
     testHash.put("key2", "val2");
 
@@ -88,7 +88,7 @@
   }
 
   public void testReplace() {
-    Hashtable testHash = new Hashtable();
+    HashMap<String,Object> testHash = new HashMap<>();
     testHash.put("key1", "val1");
     testHash.put("key2", "val2");
 
@@ -114,7 +114,7 @@
     assertEquals("val2", metadata.getMetadata("key1"));
     assertEquals("val1", metadata.getMetadata("key2"));
 
-    List twoValues = new Vector();
+    List<String> twoValues = new Vector<>();
     twoValues.add("firstVal");
     twoValues.add("secondVal");
 
@@ -131,15 +131,15 @@
     Metadata m1 = new Metadata();
     m1.addMetadata("Group1/key1", "val1");
     m1.addMetadata("Group1/key2", "val2");
+    m1.addMetadata("Group1/sub1/key2", "val3");
     m1.addMetadata("Group2/key2", "val3");
     m1.addMetadata("Group2/key2/key3", "val3");
-    m1.addMetadata("Group1/sub1/key2", "val3");
     m1.addMetadata("Group1/sub2/key2/key3", "val3");
     List<String> keys = m1.getAllKeysWithName("key2");
     assertEquals(keys.size(), 3);
-    assertEquals(keys.get(0), "Group2/key2");
+    assertEquals(keys.get(0), "Group1/key2");
     assertEquals(keys.get(1), "Group1/sub1/key2");
-    assertEquals(keys.get(2), "Group1/key2");
+    assertEquals(keys.get(2), "Group2/key2");
     keys = m1.getAllKeysWithName("key1");
     assertEquals(keys.size(), 1);
     assertEquals(keys.get(0), "Group1/key1");
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/TestSerializableMetadata.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/TestSerializableMetadata.java
similarity index 92%
rename from metadata/src/test/org/apache/oodt/cas/metadata/TestSerializableMetadata.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/TestSerializableMetadata.java
index 3c523d5..2ddf9f3 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/TestSerializableMetadata.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/TestSerializableMetadata.java
@@ -73,8 +73,8 @@
         ois.close();
 
         assertNotNull(sm2);
-        assertNotNull(sm2.getHashtable());
-        assertEquals(2, sm2.getHashtable().size());
+        assertNotNull(sm2.getMap());
+        assertEquals(2, sm2.getMap().size());
         assertNotNull(sm2.getMetadata("key1"));
         assertEquals("val1", sm2.getMetadata("key1"));
         assertNotNull(sm2.getMetadata("key2"));
@@ -106,8 +106,8 @@
         out.close();
 
         assertNotNull(metadata2);
-        assertNotNull(metadata2.getHashtable());
-        assertEquals(2, metadata2.getHashtable().size());
+        assertNotNull(metadata2.getMap());
+        assertEquals(2, metadata2.getMap().size());
         assertNotNull(metadata2.getMetadata("Name1"));
         assertEquals("Value1", metadata2.getMetadata("Name1"));
         assertNotNull(metadata2.getMetadata("Name2"));
@@ -127,8 +127,8 @@
       Metadata mConv = sm.getMetadata();
 
       assertNotNull(mConv);
-      assertNotNull(mConv.getHashtable());
-      assertEquals(2, mConv.getHashtable().size());
+      assertNotNull(mConv.getMap());
+      assertEquals(2, mConv.getMap().size());
       assertNotNull(mConv.getMetadata("key1"));
       assertEquals("val1", mConv.getMetadata("key1"));
       assertNotNull(mConv.getMetadata("key2"));
@@ -146,7 +146,6 @@
     try {
       XMLUtils.writeXmlToStream(metadata.toXML(), out);
     } catch (Exception e) {
-      LOG.log(Level.SEVERE, e.getMessage());
       fail(e.getMessage());
     }
 
@@ -155,14 +154,13 @@
       metadata2 = new SerializableMetadata(new ByteArrayInputStream(out
           .toByteArray()));
     } catch (Exception e) {
-      LOG.log(Level.SEVERE, e.getMessage());
       fail(e.getMessage());
     }
 
     assertNotNull(metadata2);
-    assertNotNull(metadata2.getHashtable());
+    assertNotNull(metadata2.getMap());
 
-    assertEquals(2, metadata2.getHashtable().size());
+    assertEquals(2, metadata2.getMap().size());
     assertNotNull(metadata2.getMetadata("Name1"));
     assertEquals("Value1", metadata2.getMetadata("Name1"));
     assertNotNull(metadata2.getMetadata("Name2"));
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java
similarity index 96%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java
index 5c69f30..65a476c 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java
@@ -68,9 +68,9 @@
     }
 
     assertNotNull(met);
-    assertNotNull(met.getHashtable());
-    assertNotNull(met.getHashtable().keySet());
-    assertEquals(3, met.getHashtable().keySet().size());
+    assertNotNull(met.getMap());
+    assertNotNull(met.getMap().keySet());
+    assertEquals(3, met.getMap().keySet().size());
     assertTrue(met.containsKey(FILENAME));
     assertEquals(expectedFilename, met.getMetadata(FILENAME));
     assertTrue(met.containsKey(PRODUCT_TYPE));
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestDataSourceMetExtractor.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestDataSourceMetExtractor.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestDataSourceMetExtractor.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestDataSourceMetExtractor.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java
similarity index 98%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java
index 9be4f07..d577b08 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java
@@ -144,11 +144,11 @@
     replaceMet.addMetadata(testPathKey, extractorFile.getParent());
     confFileContents = PathUtils.replaceEnvVariables(confFileContents, replaceMet);
     FileUtils.writeStringToFile(this.confFile, confFileContents);
-    
+
 
     try {
       extractor = new ExternMetExtractor();
-    } catch (InstantiationException e) {
+    } catch (Exception e) {
       fail(e.getMessage());
     }
   }
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestMetReader.java
similarity index 95%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestMetReader.java
index dd944a3..55bdb61 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestMetReader.java
@@ -64,9 +64,9 @@
         }
 
         assertNotNull(met);
-        assertNotNull(met.getHashtable());
-        assertNotNull(met.getHashtable().keySet());
-        assertEquals(3, met.getHashtable().keySet().size());
+        assertNotNull(met.getMap());
+        assertNotNull(met.getMap().keySet());
+        assertEquals(3, met.getMap().keySet().size());
         assertTrue(met.containsKey(FILENAME));
         assertEquals(met.getMetadata(FILENAME), expectedFilename);
         assertTrue(met.containsKey(FILE_LOCATION));
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/filenaming/TestPathUtilsNamingConvention.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/filenaming/TestPathUtilsNamingConvention.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/filenaming/TestPathUtilsNamingConvention.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/filenaming/TestPathUtilsNamingConvention.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java
similarity index 94%
rename from metadata/src/test/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java
index e49991b..2f9b130 100644
--- a/metadata/src/test/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java
+++ b/metadata/src/test/java/org/apache/oodt/cas/metadata/util/TestMimeTypeUtils.java
@@ -27,7 +27,7 @@
 		assertEquals("application/pdf", mtUtils.getMimeType("file.pdf"));
 		assertEquals("application/xhtml+xml", mtUtils.getMimeType("file.xhtml"));
 		assertEquals("application/xml", mtUtils.getSuperTypeForMimeType(mtUtils.getMimeType("file.xhtml")));
-		assertEquals("test/example", mtUtils.getMimeType("file.testexample"));
+		assertEquals("audio/amr", mtUtils.getMimeType("file.amr"));
 	}
 	
 }
diff --git a/metadata/src/test/org/apache/oodt/cas/metadata/util/TestPathUtils.java b/metadata/src/test/java/org/apache/oodt/cas/metadata/util/TestPathUtils.java
similarity index 100%
rename from metadata/src/test/org/apache/oodt/cas/metadata/util/TestPathUtils.java
rename to metadata/src/test/java/org/apache/oodt/cas/metadata/util/TestPathUtils.java
diff --git a/metadata/src/test/resources/tika-mimetypes.xml b/metadata/src/test/resources/tika-mimetypes.xml
deleted file mode 100644
index 9935b5c..0000000
--- a/metadata/src/test/resources/tika-mimetypes.xml
+++ /dev/null
@@ -1,5928 +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.
--->
-<!--
-  Description: This xml file defines the valid mime types used by Tika.
-  The mime type data within this file is based on information from various
-  sources like Apache Nutch, Apache HTTP Server, the file(1) command, etc.
-
-  Notes:
-   * Tika supports a wider range of match types than Freedesktop does
-   * Glob patterns must be unique, if there's a clash assign to the most
-     popular format
-   * The main mime type should be the canonical one, use aliases for any
-     other widely used forms
-   * Where there's a hierarchy in the types, list it via a parent
-   * Highly specific magic matches get a high priority
-   * General magic matches which could trigger a false-positive need
-     a low one
-   * The priority for containers normally need to be higher than for
-     the things they contain, so they don't accidently get detected
-     as what's in them
-   * For logic too complex to be expressed in a magic match, do the best
-     you can here, then provide a Custom Detector for the rest
--->
-<mime-info>
-
-    <mime-type type="test/example">
-        <glob pattern="*.testexample"/>
-    </mime-type>
-    <mime-type type="application/activemessage"/>
-    <mime-type type="application/andrew-inset">
-        <glob pattern="*.ez"/>
-    </mime-type>
-    <mime-type type="application/applefile"/>
-    <mime-type type="application/applixware">
-        <glob pattern="*.aw"/>
-    </mime-type>
-
-    <mime-type type="application/atom+xml">
-        <root-XML localName="feed" namespaceURI="http://purl.org/atom/ns#"/>
-        <root-XML localName="feed" namespaceURI="http://www.w3.org/2005/Atom"/>
-        <glob pattern="*.atom"/>
-    </mime-type>
-
-    <mime-type type="application/atomcat+xml">
-        <glob pattern="*.atomcat"/>
-    </mime-type>
-    <mime-type type="application/atomicmail"/>
-    <mime-type type="application/atomsvc+xml">
-        <glob pattern="*.atomsvc"/>
-    </mime-type>
-    <mime-type type="application/auth-policy+xml"/>
-    <mime-type type="application/batch-smtp"/>
-    <mime-type type="application/beep+xml"/>
-
-    <mime-type type="application/bizagi-modeler">
-        <_comment>BizAgi Process Modeler</_comment>
-        <sub-class-of type="application/zip"/>
-        <glob pattern="*.bpm"/>
-    </mime-type>
-
-    <mime-type type="application/cals-1840"/>
-    <mime-type type="application/ccxml+xml">
-        <glob pattern="*.ccxml"/>
-    </mime-type>
-    <mime-type type="application/cea-2018+xml"/>
-    <mime-type type="application/cellml+xml"/>
-    <mime-type type="application/cnrp+xml"/>
-    <mime-type type="application/commonground"/>
-    <mime-type type="application/conference-info+xml"/>
-    <mime-type type="application/cpl+xml"/>
-    <mime-type type="application/csta+xml"/>
-    <mime-type type="application/cstadata+xml"/>
-    <mime-type type="application/cu-seeme">
-        <glob pattern="*.cu"/>
-    </mime-type>
-    <mime-type type="application/cybercash"/>
-    <mime-type type="application/davmount+xml">
-        <glob pattern="*.davmount"/>
-    </mime-type>
-    <mime-type type="application/dca-rft"/>
-    <mime-type type="application/dec-dx"/>
-    <mime-type type="application/dialog-info+xml"/>
-    <mime-type type="application/dicom"/>
-
-    <mime-type type="application/dita+xml">
-        <sub-class-of type="application/xml"/>
-        <_comment>Darwin Information Typing Architecture</_comment>
-    </mime-type>
-
-    <mime-type type="application/dita+xml;format=map">
-        <sub-class-of type="application/dita+xml"/>
-        <_comment>DITA Map</_comment>
-        <root-XML localName="map"/>
-        <root-XML localName="map" namespaceURI="http://docs.oasis-open.org/namespace"/>
-        <glob pattern="*.ditamap"/>
-    </mime-type>
-    <mime-type type="application/dita+xml;format=topic">
-        <sub-class-of type="application/dita+xml"/>
-        <_comment>DITA Topic</_comment>
-        <root-XML localName="topic"/>
-        <root-XML localName="topic" namespaceURI="http://docs.oasis-open.org/namespace"/>
-        <!-- Topic is the default, Task and Concept are specialisations -->
-        <glob pattern="*.dita"/>
-    </mime-type>
-    <mime-type type="application/dita+xml;format=task">
-        <sub-class-of type="application/dita+xml;format=task"/>
-        <_comment>DITA Task Topic</_comment>
-        <root-XML localName="task"/>
-        <root-XML localName="task" namespaceURI="http://docs.oasis-open.org/namespace"/>
-    </mime-type>
-    <mime-type type="application/dita+xml;format=concept">
-        <sub-class-of type="application/dita+xml;format=topic"/>
-        <_comment>DITA Concept Topic</_comment>
-        <root-XML localName="concept"/>
-        <root-XML localName="concept" namespaceURI="http://docs.oasis-open.org/namespace"/>
-    </mime-type>
-    <mime-type type="application/dita+xml;format=val">
-        <sub-class-of type="application/dita+xml"/>
-        <_comment>DITA Conditional Processing Profile</_comment>
-        <root-XML localName="val"/>
-        <root-XML localName="val" namespaceURI="http://docs.oasis-open.org/namespace"/>
-        <glob pattern="*.ditaval"/>
-    </mime-type>
-
-    <mime-type type="application/dns"/>
-    <mime-type type="application/dvcs"/>
-    <mime-type type="application/ecmascript">
-        <glob pattern="*.ecma"/>
-    </mime-type>
-    <mime-type type="application/edi-consent"/>
-    <mime-type type="application/edi-x12"/>
-    <mime-type type="application/edifact"/>
-    <mime-type type="application/emma+xml">
-        <glob pattern="*.emma"/>
-    </mime-type>
-    <mime-type type="application/epp+xml"/>
-
-    <mime-type type="application/epub+zip">
-        <acronym>EPUB</acronym>
-        <_comment>Electronic Publication</_comment>
-        <magic priority="50">
-            <match value="PK\003\004" type="string" offset="0">
-                <match value="mimetypeapplication/epub+zip" type="string" offset="30"/>
-            </match>
-        </magic>
-        <glob pattern="*.epub"/>
-    </mime-type>
-
-    <mime-type type="application/eshop"/>
-    <mime-type type="application/example"/>
-    <mime-type type="application/fastinfoset"/>
-    <mime-type type="application/fastsoap"/>
-
-    <mime-type type="application/fits">
-        <acronym>FITS</acronym>
-        <_comment>Flexible Image Transport System</_comment>
-        <tika:link>http://www.digitalpreservation.gov/formats/fdd/fdd000317.shtml</tika:link>
-        <magic priority="50">
-            <match value="SIMPLE  =                    T" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.fits"/>
-        <glob pattern="*.fit"/>
-        <glob pattern="*.fts"/>
-    </mime-type>
-
-    <mime-type type="application/font-tdpfr">
-        <glob pattern="*.pfr"/>
-    </mime-type>
-    <mime-type type="application/h224"/>
-    <mime-type type="application/http"/>
-    <mime-type type="application/hyperstudio">
-        <glob pattern="*.stk"/>
-    </mime-type>
-    <mime-type type="application/ibe-key-request+xml"/>
-    <mime-type type="application/ibe-pkg-reply+xml"/>
-    <mime-type type="application/ibe-pp-data"/>
-    <mime-type type="application/iges"/>
-
-    <mime-type type="application/illustrator">
-        <acronym>AI</acronym>
-        <_comment>Adobe Illustrator Artwork</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/Adobe_Illustrator_Artwork</tika:link>
-        <glob pattern="*.ai"/>]
-        <sub-class-of type="application/postscript"/>
-    </mime-type>
-
-    <mime-type type="application/im-iscomposing+xml"/>
-    <mime-type type="application/index"/>
-    <mime-type type="application/index.cmd"/>
-    <mime-type type="application/index.obj"/>
-    <mime-type type="application/index.response"/>
-    <mime-type type="application/index.vnd"/>
-    <mime-type type="application/iotp"/>
-    <mime-type type="application/ipp"/>
-    <mime-type type="application/isup"/>
-
-    <mime-type type="application/java-archive">
-        <_comment>Java Archive</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/.jar</tika:link>
-        <tika:uti>com.sun.java-archive</tika:uti>
-        <sub-class-of type="application/zip"/>
-        <glob pattern="*.jar"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.android.package-archive">
-        <sub-class-of type="application/java-archive"/>
-        <glob pattern="*.apk"/>
-    </mime-type>
-    <mime-type type="application/x-tika-java-enterprise-archive">
-        <sub-class-of type="application/java-archive"/>
-        <glob pattern="*.ear"/>
-    </mime-type>
-    <mime-type type="application/x-tika-java-web-archive">
-        <sub-class-of type="application/java-archive"/>
-        <glob pattern="*.war"/>
-    </mime-type>
-
-    <mime-type type="application/x-tika-unix-dump"/>
-
-    <mime-type type="application/java-serialized-object">
-        <glob pattern="*.ser"/>
-    </mime-type>
-
-    <mime-type type="application/javascript">
-        <alias type="application/x-javascript"/>
-        <alias type="text/javascript"/>
-        <sub-class-of type="text/plain"/>
-        <_comment>JavaScript Source Code</_comment>
-        <glob pattern="*.js"/>
-    </mime-type>
-
-    <mime-type type="application/json">
-        <sub-class-of type="application/javascript"/>
-        <glob pattern="*.json"/>
-    </mime-type>
-
-    <mime-type type="application/java-vm">
-        <_comment>Java Class File</_comment>
-        <alias type="application/x-java-vm"/>
-        <alias type="application/x-java"/>
-        <magic priority="40">
-            <match value="0xcafebabe" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.class"/>
-    </mime-type>
-
-    <mime-type type="application/x-java-jnilib">
-        <_comment>Java Native Library for OSX</_comment>
-        <magic priority="50">
-            <match value="0xcafebabe" type="string" offset="0">
-                <match value="0xfeedface" type="string" offset="4096"/>
-                <match value="0xfeedfacf" type="string" offset="4096"/>
-                <match value="0xcefaedfe" type="string" offset="4096"/>
-                <match value="0xcffaedfe" type="string" offset="4096"/>
-            </match>
-        </magic>
-        <glob pattern="*.jnilib"/>
-    </mime-type>
-
-    <mime-type type="application/kpml-request+xml"/>
-    <mime-type type="application/kpml-response+xml"/>
-    <mime-type type="application/lost+xml">
-        <glob pattern="*.lostxml"/>
-    </mime-type>
-
-    <mime-type type="application/mac-binhex40">
-        <alias type="application/mac-binhex"/>
-        <alias type="application/binhex"/>
-        <magic priority="50">
-            <match value="must\ be\ converted\ with\ BinHex" type="string" offset="11"/>
-        </magic>
-        <glob pattern="*.hqx"/>
-    </mime-type>
-
-    <mime-type type="application/mac-compactpro">
-        <glob pattern="*.cpt"/>
-    </mime-type>
-
-    <mime-type type="application/macwriteii"/>
-    <mime-type type="application/marc">
-        <glob pattern="*.mrc"/>
-    </mime-type>
-    <mime-type type="application/mathematica">
-        <glob pattern="*.ma"/>
-        <glob pattern="*.nb"/>
-        <glob pattern="*.mb"/>
-    </mime-type>
-    <mime-type type="application/mathml+xml">
-        <glob pattern="*.mathml"/>
-    </mime-type>
-    <mime-type type="application/mbms-associated-procedure-description+xml"/>
-    <mime-type type="application/mbms-deregister+xml"/>
-    <mime-type type="application/mbms-envelope+xml"/>
-    <mime-type type="application/mbms-msk+xml"/>
-    <mime-type type="application/mbms-msk-response+xml"/>
-    <mime-type type="application/mbms-protection-description+xml"/>
-    <mime-type type="application/mbms-reception-report+xml"/>
-    <mime-type type="application/mbms-register+xml"/>
-    <mime-type type="application/mbms-register-response+xml"/>
-    <mime-type type="application/mbms-user-service-description+xml"/>
-    <mime-type type="application/mbox">
-        <sub-class-of type="text/plain"/>
-        <glob pattern="*.mbox"/>
-    </mime-type>
-    <mime-type type="application/media_control+xml"/>
-    <mime-type type="application/mediaservercontrol+xml">
-        <glob pattern="*.mscml"/>
-    </mime-type>
-    <mime-type type="application/mikey"/>
-    <mime-type type="application/moss-keys"/>
-    <mime-type type="application/moss-signature"/>
-    <mime-type type="application/mosskey-data"/>
-    <mime-type type="application/mosskey-request"/>
-    <mime-type type="application/mp4">
-        <glob pattern="*.mp4s"/>
-    </mime-type>
-    <mime-type type="application/mpeg4-generic"/>
-    <mime-type type="application/mpeg4-iod"/>
-    <mime-type type="application/mpeg4-iod-xmt"/>
-
-    <!-- http://www.iana.org/assignments/media-types/application/msword -->
-    <mime-type type="application/msword">
-        <!-- Use DefaultDetector / org.apache.tika.parser.microsoft.POIFSContainerDetector for more reliable detection of OLE2 documents -->
-        <alias type="application/vnd.ms-word"/>
-        <_comment>Microsoft Word Document</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/.doc</tika:link>
-        <tika:uti>com.microsoft.word.doc</tika:uti>
-        <magic priority="50">
-            <match value="Microsoft\ Word\ 6.0\ Document" type="string" offset="2080"/>
-            <match value="Documento\ Microsoft\ Word\ 6" type="string" offset="2080"/>
-            <match value="MSWordDoc" type="string" offset="2112"/>
-            <match value="0x31be0000" type="big32" offset="0"/>
-            <match value="PO^Q`" type="string" offset="0"/>
-            <match value="\376\067\0\043" type="string" offset="0"/>
-            <match value="\333\245-\0\0\0" type="string" offset="0"/>
-            <match value="\224\246\056" type="string" offset="0"/>
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="W\x00o\x00r\x00d\x00D\x00o\x00c\x00u\x00m\x00e\x00n\x00t" type="string" offset="1152:4096" />
-            </match>
-        </magic>
-        <glob pattern="*.doc"/>
-        <glob pattern="*.dot"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/msword2">
-        <!-- Pre-OLE2, not a subtype of application/x-tika-msoffice -->
-        <_comment>Microsoft Word 2 Document</_comment>
-        <magic priority="50">
-            <match value="0x9ba5" type="string" />
-            <match value="0xdba5" type="string" />
-        </magic>
-    </mime-type>
-    <mime-type type="application/msword5">
-        <!-- Pre-OLE2, not a subtype of application/x-tika-msoffice -->
-        <_comment>Microsoft Word 5 Document</_comment>
-        <magic priority="50">
-            <match value="0xfe37" type="string" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/mxf">
-        <glob pattern="*.mxf"/>
-    </mime-type>
-    <mime-type type="application/nasdata"/>
-    <mime-type type="application/news-checkgroups"/>
-    <mime-type type="application/news-groupinfo"/>
-    <mime-type type="application/news-transmission"/>
-    <mime-type type="application/nss"/>
-    <mime-type type="application/ocsp-request"/>
-    <mime-type type="application/ocsp-response"/>
-
-    <mime-type type="application/octet-stream">
-        <magic priority="50">
-            <match value="#\ This\ is\ a\ shell\ archive" type="string" offset="10"/>
-            <match value="\037\036" type="string" offset="0"/>
-            <match value="017437" type="host16" offset="0"/>
-            <match value="0x1fff" type="host16" offset="0"/>
-            <match value="\377\037" type="string" offset="0"/>
-            <match value="0145405" type="host16" offset="0"/>
-        </magic>
-        <glob pattern="*.bin"/>
-        <glob pattern="*.dms"/>
-        <glob pattern="*.lha"/>
-        <glob pattern="*.lrf"/>
-        <glob pattern="*.lzh"/>
-        <glob pattern="*.so"/>
-        <glob pattern="*.dist"/>
-        <glob pattern="*.distz"/>
-        <glob pattern="*.pkg"/>
-        <glob pattern="*.bpk"/>
-        <glob pattern="*.dump"/>
-        <glob pattern="*.elc"/>
-        <glob pattern="*.deploy"/>
-    </mime-type>
-
-    <mime-type type="application/oda">
-        <glob pattern="*.oda"/>
-    </mime-type>
-    <mime-type type="application/oebps-package+xml">
-        <glob pattern="*.opf"/>
-    </mime-type>
-
-    <mime-type type="application/ogg">
-        <alias type="application/x-ogg"/>
-        <magic priority="50">
-            <match value="OggS" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.ogx"/>
-    </mime-type>
-    <mime-type type="application/kate">
-        <sub-class-of type="application/ogg"/>
-    </mime-type>
-
-    <mime-type type="application/onenote">
-        <glob pattern="*.onetoc"/>
-        <glob pattern="*.onetoc2"/>
-        <glob pattern="*.onetmp"/>
-        <glob pattern="*.onepkg"/>
-    </mime-type>
-    <mime-type type="application/parityfec"/>
-    <mime-type type="application/patch-ops-error+xml">
-        <glob pattern="*.xer"/>
-    </mime-type>
-
-    <mime-type type="application/pdf">
-        <alias type="application/x-pdf"/>
-        <acronym>PDF</acronym>
-        <_comment>Portable Document Format</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/PDF</tika:link>
-        <tika:link>http://www.adobe.com/devnet/pdf/pdf_reference_archive.html</tika:link>
-        <tika:uti>com.adobe.pdf</tika:uti>
-        <magic priority="50">
-            <match value="%PDF-" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.pdf"/>
-    </mime-type>
-
-    <mime-type type="application/pgp-encrypted">
-        <alias type="application/pgp"/>
-        <glob pattern="*.pgp"/>
-    </mime-type>
-
-    <mime-type type="application/pgp-keys"/>
-
-    <mime-type type="application/pgp-signature">
-        <glob pattern="*.asc"/>
-        <glob pattern="*.sig"/>
-    </mime-type>
-
-    <mime-type type="application/pics-rules">
-        <glob pattern="*.prf"/>
-    </mime-type>
-    <mime-type type="application/pidf+xml"/>
-    <mime-type type="application/pidf-diff+xml"/>
-    <mime-type type="application/pkcs10">
-        <glob pattern="*.p10"/>
-    </mime-type>
-
-    <mime-type type="application/pkcs7-mime">
-        <glob pattern="*.p7m"/>
-        <glob pattern="*.p7c"/>
-    </mime-type>
-
-    <mime-type type="application/pkcs7-signature">
-        <glob pattern="*.p7s"/>
-        <magic priority="50">
-            <match value="-----BEGIN PKCS7" type="string" offset="0"/>
-            <match value="0x3082FFFF06092a864886f70d0107FFa0" type="string"
-                   mask="0xFFFF0000FFFFFFFFFFFFFFFFFFFF00FF" offset="0"/>
-            <match value="0x308006092a864886f70d0107FFa0" type="string"
-                   mask="0xFFFFFFFFFFFFFFFFFFFFFFFF00FF" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/pkix-cert">
-        <glob pattern="*.cer"/>
-    </mime-type>
-    <mime-type type="application/pkix-crl">
-        <glob pattern="*.crl"/>
-    </mime-type>
-    <mime-type type="application/pkix-pkipath">
-        <glob pattern="*.pkipath"/>
-    </mime-type>
-    <mime-type type="application/pkixcmp">
-        <glob pattern="*.pki"/>
-    </mime-type>
-    <mime-type type="application/pls+xml">
-        <glob pattern="*.pls"/>
-    </mime-type>
-    <mime-type type="application/poc-settings+xml"/>
-
-    <mime-type type="application/postscript">
-        <_comment>PostScript</_comment>
-        <magic priority="50">
-            <match value="%!" type="string" offset="0" />
-            <match value="\004%!" type="string" offset="0" />
-            <!-- Windows format EPS -->
-            <match value="0xc5d0d3c6" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.ps"/>
-        <glob pattern="*.eps"/>
-        <glob pattern="*.epsf"/>
-        <glob pattern="*.epsi"/>
-    </mime-type>
-
-    <mime-type type="application/prs.alvestrand.titrax-sheet"/>
-    <mime-type type="application/prs.cww">
-        <glob pattern="*.cww"/>
-    </mime-type>
-    <mime-type type="application/prs.nprend"/>
-    <mime-type type="application/prs.plucker"/>
-    <mime-type type="application/qsig"/>
-
-    <mime-type type="application/rdf+xml">
-        <root-XML localName="RDF"/>
-        <root-XML localName="RDF" namespaceURI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
-        <sub-class-of type="application/xml"/>
-        <acronym>RDF/XML</acronym>
-        <_comment>XML syntax for RDF graphs</_comment>
-        <glob pattern="*.rdf"/>
-        <glob pattern="*.owl"/>
-        <glob pattern="^rdf$" isregex="true"/>
-        <glob pattern="^owl$" isregex="true"/>
-        <glob pattern="*.xmp"/>
-    </mime-type>
-
-    <mime-type type="application/reginfo+xml">
-        <glob pattern="*.rif"/>
-    </mime-type>
-    <mime-type type="application/relax-ng-compact-syntax">
-        <sub-class-of type="text/plain"/>
-        <glob pattern="*.rnc"/>
-    </mime-type>
-    <mime-type type="application/remote-printing"/>
-    <mime-type type="application/resource-lists+xml">
-        <glob pattern="*.rl"/>
-    </mime-type>
-    <mime-type type="application/resource-lists-diff+xml">
-        <glob pattern="*.rld"/>
-    </mime-type>
-    <mime-type type="application/riscos"/>
-    <mime-type type="application/rlmi+xml"/>
-    <mime-type type="application/rls-services+xml">
-        <glob pattern="*.rs"/>
-    </mime-type>
-    <mime-type type="application/rsd+xml">
-        <glob pattern="*.rsd"/>
-    </mime-type>
-
-    <mime-type type="application/rss+xml">
-        <alias type="text/rss"/>
-        <root-XML localName="rss"/>
-        <root-XML namespaceURI="http://purl.org/rss/1.0/"/>
-        <glob pattern="*.rss"/>
-    </mime-type>
-
-    <mime-type type="application/rtf">
-        <_comment>Rich Text Format File</_comment>
-        <alias type="text/rtf"/>
-        <magic priority="50">
-            <match value="{\\rtf" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.rtf"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="application/rtx"/>
-    <mime-type type="application/samlassertion+xml"/>
-    <mime-type type="application/samlmetadata+xml"/>
-    <mime-type type="application/sbml+xml">
-        <glob pattern="*.sbml"/>
-    </mime-type>
-    <mime-type type="application/scvp-cv-request">
-        <glob pattern="*.scq"/>
-    </mime-type>
-    <mime-type type="application/scvp-cv-response">
-        <glob pattern="*.scs"/>
-    </mime-type>
-    <mime-type type="application/scvp-vp-request">
-        <glob pattern="*.spq"/>
-    </mime-type>
-    <mime-type type="application/scvp-vp-response">
-        <glob pattern="*.spp"/>
-    </mime-type>
-    <mime-type type="application/sdp">
-        <glob pattern="*.sdp"/>
-    </mime-type>
-    <mime-type type="application/set-payment"/>
-    <mime-type type="application/set-payment-initiation">
-        <glob pattern="*.setpay"/>
-    </mime-type>
-    <mime-type type="application/set-registration"/>
-    <mime-type type="application/set-registration-initiation">
-        <glob pattern="*.setreg"/>
-    </mime-type>
-    <mime-type type="application/sgml"/>
-    <mime-type type="application/sgml-open-catalog"/>
-    <mime-type type="application/shf+xml">
-        <glob pattern="*.shf"/>
-    </mime-type>
-    <mime-type type="application/sieve"/>
-    <mime-type type="application/simple-filter+xml"/>
-    <mime-type type="application/simple-message-summary"/>
-    <mime-type type="application/simplesymbolcontainer"/>
-    <mime-type type="application/slate"/>
-
-    <mime-type type="application/smil+xml">
-        <alias type="application/smil"/>
-        <_comment>SMIL Multimedia</_comment>
-        <glob pattern="*.smi"/>
-        <glob pattern="*.smil"/>
-        <glob pattern="*.sml"/>
-    </mime-type>
-
-    <mime-type type="application/soap+fastinfoset"/>
-    <mime-type type="application/soap+xml"/>
-
-    <mime-type type="application/sldworks">
-        <_comment>SolidWorks CAD program</_comment>
-        <glob pattern="*.sldprt" />
-        <glob pattern="*.sldasm" />
-        <glob pattern="*.slddrw" />
-        <sub-class-of type="application/x-tika-msoffice" />
-    </mime-type>
-
-    <mime-type type="application/sparql-query">
-        <glob pattern="*.rq"/>
-    </mime-type>
-    <mime-type type="application/sparql-results+xml">
-        <glob pattern="*.srx"/>
-    </mime-type>
-    <mime-type type="application/spirits-event+xml"/>
-    <mime-type type="application/srgs">
-        <glob pattern="*.gram"/>
-    </mime-type>
-    <mime-type type="application/srgs+xml">
-        <glob pattern="*.grxml"/>
-    </mime-type>
-    <mime-type type="application/ssml+xml">
-        <glob pattern="*.ssml"/>
-    </mime-type>
-    <mime-type type="application/timestamp-query"/>
-    <mime-type type="application/timestamp-reply"/>
-    <mime-type type="application/tve-trigger"/>
-    <mime-type type="application/ulpfec"/>
-    <mime-type type="application/vemmi"/>
-    <mime-type type="application/vividence.scriptfile"/>
-    <mime-type type="application/vnd.3gpp.bsf+xml"/>
-    <mime-type type="application/vnd.3gpp.pic-bw-large">
-        <glob pattern="*.plb"/>
-    </mime-type>
-    <mime-type type="application/vnd.3gpp.pic-bw-small">
-        <glob pattern="*.psb"/>
-    </mime-type>
-    <mime-type type="application/vnd.3gpp.pic-bw-var">
-        <glob pattern="*.pvb"/>
-    </mime-type>
-    <mime-type type="application/vnd.3gpp.sms"/>
-    <mime-type type="application/vnd.3gpp2.bcmcsinfo+xml"/>
-    <mime-type type="application/vnd.3gpp2.sms"/>
-    <mime-type type="application/vnd.3gpp2.tcap">
-        <glob pattern="*.tcap"/>
-    </mime-type>
-    <mime-type type="application/vnd.3m.post-it-notes">
-        <glob pattern="*.pwn"/>
-    </mime-type>
-    <mime-type type="application/vnd.accpac.simply.aso">
-        <glob pattern="*.aso"/>
-    </mime-type>
-    <mime-type type="application/vnd.accpac.simply.imp">
-        <glob pattern="*.imp"/>
-    </mime-type>
-    <mime-type type="application/vnd.acucobol">
-        <glob pattern="*.acu"/>
-    </mime-type>
-    <mime-type type="application/vnd.acucorp">
-        <glob pattern="*.atc"/>
-        <glob pattern="*.acutc"/>
-    </mime-type>
-    <mime-type type="application/vnd.adobe.air-application-installer-package+zip">
-        <glob pattern="*.air"/>
-    </mime-type>
-    <mime-type type="application/vnd.adobe.aftereffects.project">
-        <glob pattern="*.aep"/>
-    </mime-type>
-    <mime-type type="application/vnd.adobe.aftereffects.template">
-        <glob pattern="*.aet"/>
-    </mime-type>
-    <mime-type type="application/vnd.adobe.xdp+xml">
-        <glob pattern="*.xdp"/>
-    </mime-type>
-    <mime-type type="application/vnd.adobe.xfdf">
-        <glob pattern="*.xfdf"/>
-    </mime-type>
-    <mime-type type="application/vnd.aether.imp"/>
-    <mime-type type="application/vnd.airzip.filesecure.azf">
-        <glob pattern="*.azf"/>
-    </mime-type>
-    <mime-type type="application/vnd.airzip.filesecure.azs">
-        <glob pattern="*.azs"/>
-    </mime-type>
-    <mime-type type="application/vnd.amazon.ebook">
-        <glob pattern="*.azw"/>
-    </mime-type>
-    <mime-type type="application/vnd.americandynamics.acc">
-        <glob pattern="*.acc"/>
-    </mime-type>
-    <mime-type type="application/vnd.amiga.ami">
-        <glob pattern="*.ami"/>
-    </mime-type>
-    <mime-type type="application/vnd.anser-web-certificate-issue-initiation">
-        <glob pattern="*.cii"/>
-    </mime-type>
-    <mime-type type="application/vnd.anser-web-funds-transfer-initiation">
-        <glob pattern="*.fti"/>
-    </mime-type>
-    <mime-type type="application/vnd.antix.game-component">
-        <glob pattern="*.atx"/>
-    </mime-type>
-    <mime-type type="application/vnd.apple.installer+xml">
-        <glob pattern="*.mpkg"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.apple.iwork">
-        <sub-class-of type="application/zip"/>
-    </mime-type>
-    <mime-type type="application/vnd.apple.keynote">
-        <root-XML localName="presentation" namespaceURI="http://developer.apple.com/namespaces/keynote2" />
-        <sub-class-of type="application/vnd.apple.iwork" />
-        <glob pattern="*.key"/>
-    </mime-type>
-    <mime-type type="application/vnd.apple.pages">
-        <root-XML localName="document" namespaceURI="http://developer.apple.com/namespaces/sl" />
-        <sub-class-of type="application/vnd.apple.iwork" />
-        <glob pattern="*.pages"/>
-    </mime-type>
-    <mime-type type="application/vnd.apple.numbers">
-        <root-XML localName="document" namespaceURI="http://developer.apple.com/namespaces/ls" />
-        <sub-class-of type="application/vnd.apple.iwork" />
-        <glob pattern="*.numbers"/>
-    </mime-type>
-    <mime-type type="application/x-tika-iworks-protected">
-        <sub-class-of type="application/vnd.apple.iwork" />
-        <_comment>Password Protected iWorks File</_comment>
-    </mime-type>
-
-    <mime-type type="application/vnd.arastra.swi">
-        <glob pattern="*.swi"/>
-    </mime-type>
-    <mime-type type="application/vnd.audiograph"/>
-    <mime-type type="application/vnd.autopackage"/>
-    <mime-type type="application/vnd.avistar+xml"/>
-    <mime-type type="application/vnd.blueice.multipass">
-        <glob pattern="*.mpm"/>
-    </mime-type>
-    <mime-type type="application/vnd.bluetooth.ep.oob"/>
-    <mime-type type="application/vnd.bmi">
-        <glob pattern="*.bmi"/>
-    </mime-type>
-    <mime-type type="application/vnd.businessobjects">
-        <glob pattern="*.rep"/>
-    </mime-type>
-    <mime-type type="application/vnd.cab-jscript"/>
-    <mime-type type="application/vnd.canon-cpdl"/>
-    <mime-type type="application/vnd.canon-lips"/>
-    <mime-type type="application/vnd.cendio.thinlinc.clientconf"/>
-    <mime-type type="application/vnd.chemdraw+xml">
-        <glob pattern="*.cdxml"/>
-    </mime-type>
-    <mime-type type="application/vnd.chipnuts.karaoke-mmd">
-        <glob pattern="*.mmd"/>
-    </mime-type>
-    <mime-type type="application/vnd.cinderella">
-        <glob pattern="*.cdy"/>
-    </mime-type>
-    <mime-type type="application/vnd.cirpack.isdn-ext"/>
-    <mime-type type="application/vnd.claymore">
-        <glob pattern="*.cla"/>
-    </mime-type>
-    <mime-type type="application/vnd.clonk.c4group">
-        <glob pattern="*.c4g"/>
-        <glob pattern="*.c4d"/>
-        <glob pattern="*.c4f"/>
-        <glob pattern="*.c4p"/>
-        <glob pattern="*.c4u"/>
-    </mime-type>
-    <mime-type type="application/vnd.commerce-battelle"/>
-    <mime-type type="application/vnd.commonspace">
-        <glob pattern="*.csp"/>
-    </mime-type>
-    <mime-type type="application/vnd.contact.cmsg">
-        <glob pattern="*.cdbcmsg"/>
-    </mime-type>
-    <mime-type type="application/vnd.cosmocaller">
-        <glob pattern="*.cmc"/>
-    </mime-type>
-    <mime-type type="application/vnd.crick.clicker">
-        <glob pattern="*.clkx"/>
-    </mime-type>
-    <mime-type type="application/vnd.crick.clicker.keyboard">
-        <glob pattern="*.clkk"/>
-    </mime-type>
-    <mime-type type="application/vnd.crick.clicker.palette">
-        <glob pattern="*.clkp"/>
-    </mime-type>
-    <mime-type type="application/vnd.crick.clicker.template">
-        <glob pattern="*.clkt"/>
-    </mime-type>
-    <mime-type type="application/vnd.crick.clicker.wordbank">
-        <glob pattern="*.clkw"/>
-    </mime-type>
-    <mime-type type="application/vnd.criticaltools.wbs+xml">
-        <glob pattern="*.wbs"/>
-    </mime-type>
-    <mime-type type="application/vnd.ctc-posml">
-        <glob pattern="*.pml"/>
-    </mime-type>
-    <mime-type type="application/vnd.ctct.ws+xml"/>
-    <mime-type type="application/vnd.cups-pdf"/>
-    <mime-type type="application/vnd.cups-postscript"/>
-    <mime-type type="application/vnd.cups-ppd">
-        <glob pattern="*.ppd"/>
-    </mime-type>
-    <mime-type type="application/vnd.cups-raster"/>
-    <mime-type type="application/vnd.cups-raw"/>
-    <mime-type type="application/vnd.curl.car">
-        <glob pattern="*.car"/>
-    </mime-type>
-    <mime-type type="application/vnd.curl.pcurl">
-        <glob pattern="*.pcurl"/>
-    </mime-type>
-    <mime-type type="application/vnd.cybank"/>
-    <mime-type type="application/vnd.data-vision.rdz">
-        <glob pattern="*.rdz"/>
-    </mime-type>
-    <mime-type type="application/vnd.denovo.fcselayout-link">
-        <glob pattern="*.fe_launch"/>
-    </mime-type>
-    <mime-type type="application/vnd.dir-bi.plate-dl-nosuffix"/>
-    <mime-type type="application/vnd.dna">
-        <glob pattern="*.dna"/>
-    </mime-type>
-    <mime-type type="application/vnd.dolby.mlp">
-        <glob pattern="*.mlp"/>
-    </mime-type>
-    <mime-type type="application/vnd.dolby.mobile.1"/>
-    <mime-type type="application/vnd.dolby.mobile.2"/>
-    <mime-type type="application/vnd.dpgraph">
-        <glob pattern="*.dpg"/>
-    </mime-type>
-    <mime-type type="application/vnd.dreamfactory">
-        <glob pattern="*.dfac"/>
-    </mime-type>
-    <mime-type type="application/vnd.dvb.esgcontainer"/>
-    <mime-type type="application/vnd.dvb.ipdcdftnotifaccess"/>
-    <mime-type type="application/vnd.dvb.ipdcesgaccess"/>
-    <mime-type type="application/vnd.dvb.ipdcroaming"/>
-    <mime-type type="application/vnd.dvb.iptv.alfec-base"/>
-    <mime-type type="application/vnd.dvb.iptv.alfec-enhancement"/>
-    <mime-type type="application/vnd.dvb.notif-aggregate-root+xml"/>
-    <mime-type type="application/vnd.dvb.notif-container+xml"/>
-    <mime-type type="application/vnd.dvb.notif-generic+xml"/>
-    <mime-type type="application/vnd.dvb.notif-ia-msglist+xml"/>
-    <mime-type type="application/vnd.dvb.notif-ia-registration-request+xml"/>
-    <mime-type type="application/vnd.dvb.notif-ia-registration-response+xml"/>
-    <mime-type type="application/vnd.dvb.notif-init+xml"/>
-    <mime-type type="application/vnd.dxr"/>
-    <mime-type type="application/vnd.dynageo">
-        <glob pattern="*.geo"/>
-    </mime-type>
-    <mime-type type="application/vnd.ecdis-update"/>
-    <mime-type type="application/vnd.ecowin.chart">
-        <glob pattern="*.mag"/>
-    </mime-type>
-    <mime-type type="application/vnd.ecowin.filerequest"/>
-    <mime-type type="application/vnd.ecowin.fileupdate"/>
-    <mime-type type="application/vnd.ecowin.series"/>
-    <mime-type type="application/vnd.ecowin.seriesrequest"/>
-    <mime-type type="application/vnd.ecowin.seriesupdate"/>
-    <mime-type type="application/vnd.emclient.accessrequest+xml"/>
-    <mime-type type="application/vnd.enliven">
-        <glob pattern="*.nml"/>
-    </mime-type>
-    <mime-type type="application/vnd.epson.esf">
-        <glob pattern="*.esf"/>
-    </mime-type>
-    <mime-type type="application/vnd.epson.msf">
-        <glob pattern="*.msf"/>
-    </mime-type>
-    <mime-type type="application/vnd.epson.quickanime">
-        <glob pattern="*.qam"/>
-    </mime-type>
-    <mime-type type="application/vnd.epson.salt">
-        <glob pattern="*.slt"/>
-    </mime-type>
-    <mime-type type="application/vnd.epson.ssf">
-        <glob pattern="*.ssf"/>
-    </mime-type>
-    <mime-type type="application/vnd.ericsson.quickcall"/>
-    <mime-type type="application/vnd.eszigno3+xml">
-        <glob pattern="*.es3"/>
-        <glob pattern="*.et3"/>
-    </mime-type>
-    <mime-type type="application/vnd.etsi.aoc+xml"/>
-    <mime-type type="application/vnd.etsi.cug+xml"/>
-    <mime-type type="application/vnd.etsi.iptvcommand+xml"/>
-    <mime-type type="application/vnd.etsi.iptvdiscovery+xml"/>
-    <mime-type type="application/vnd.etsi.iptvprofile+xml"/>
-    <mime-type type="application/vnd.etsi.iptvsad-bc+xml"/>
-    <mime-type type="application/vnd.etsi.iptvsad-cod+xml"/>
-    <mime-type type="application/vnd.etsi.iptvsad-npvr+xml"/>
-    <mime-type type="application/vnd.etsi.iptvueprofile+xml"/>
-    <mime-type type="application/vnd.etsi.mcid+xml"/>
-    <mime-type type="application/vnd.etsi.sci+xml"/>
-    <mime-type type="application/vnd.etsi.simservs+xml"/>
-    <mime-type type="application/vnd.eudora.data"/>
-    <mime-type type="application/vnd.ezpix-album">
-        <glob pattern="*.ez2"/>
-    </mime-type>
-    <mime-type type="application/vnd.ezpix-package">
-        <glob pattern="*.ez3"/>
-    </mime-type>
-    <mime-type type="application/vnd.f-secure.mobile"/>
-    <mime-type type="application/vnd.fdf">
-        <acronym>FDF</acronym>
-        <_comment>Forms Data Format</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/Forms_Data_Format</tika:link>
-        <tika:link>http://www.adobe.com/devnet/acrobat/fdftoolkit.html</tika:link>
-        <tika:uti>com.adobe.fdf</tika:uti>
-        <magic priority="50">
-            <match value="%FDF-" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.fdf"/>
-    </mime-type>
-    <mime-type type="application/vnd.fdsn.mseed">
-        <glob pattern="*.mseed"/>
-    </mime-type>
-    <mime-type type="application/vnd.fdsn.seed">
-        <glob pattern="*.seed"/>
-        <glob pattern="*.dataless"/>
-    </mime-type>
-    <mime-type type="application/vnd.ffsns"/>
-    <mime-type type="application/vnd.fints"/>
-    <mime-type type="application/vnd.flographit">
-        <glob pattern="*.gph"/>
-    </mime-type>
-    <mime-type type="application/vnd.fluxtime.clip">
-        <glob pattern="*.ftc"/>
-    </mime-type>
-    <mime-type type="application/vnd.font-fontforge-sfd"/>
-    <mime-type type="application/vnd.framemaker">
-        <glob pattern="*.fm"/>
-        <glob pattern="*.frame"/>
-        <glob pattern="*.maker"/>
-        <glob pattern="*.book"/>
-    </mime-type>
-    <mime-type type="application/vnd.frogans.fnc">
-        <glob pattern="*.fnc"/>
-    </mime-type>
-    <mime-type type="application/vnd.frogans.ltf">
-        <glob pattern="*.ltf"/>
-    </mime-type>
-    <mime-type type="application/vnd.fsc.weblaunch">
-        <glob pattern="*.fsc"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujitsu.oasys">
-        <glob pattern="*.oas"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujitsu.oasys2">
-        <glob pattern="*.oa2"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujitsu.oasys3">
-        <glob pattern="*.oa3"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujitsu.oasysgp">
-        <glob pattern="*.fg5"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujitsu.oasysprs">
-        <glob pattern="*.bh2"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujixerox.art-ex"/>
-    <mime-type type="application/vnd.fujixerox.art4"/>
-    <mime-type type="application/vnd.fujixerox.hbpl"/>
-    <mime-type type="application/vnd.fujixerox.ddd">
-        <glob pattern="*.ddd"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujixerox.docuworks">
-        <glob pattern="*.xdw"/>
-    </mime-type>
-    <mime-type type="application/vnd.fujixerox.docuworks.binder">
-        <glob pattern="*.xbd"/>
-    </mime-type>
-    <mime-type type="application/vnd.fut-misnet"/>
-    <mime-type type="application/vnd.fuzzysheet">
-        <glob pattern="*.fzs"/>
-    </mime-type>
-    <mime-type type="application/vnd.genomatix.tuxedo">
-        <glob pattern="*.txd"/>
-    </mime-type>
-    <mime-type type="application/vnd.geogebra.file">
-        <glob pattern="*.ggb"/>
-    </mime-type>
-    <mime-type type="application/vnd.geogebra.tool">
-        <glob pattern="*.ggt"/>
-    </mime-type>
-    <mime-type type="application/vnd.geometry-explorer">
-        <glob pattern="*.gex"/>
-        <glob pattern="*.gre"/>
-    </mime-type>
-    <mime-type type="application/vnd.gmx">
-        <glob pattern="*.gmx"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.google-earth.kml+xml">
-        <root-XML localName="kml"/>
-        <root-XML namespaceURI="http://www.opengis.net/kml/2.2" localName="kml"/>
-        <root-XML namespaceURI="http://earth.google.com/kml/2.0" localName="kml"/>
-        <root-XML namespaceURI="http://earth.google.com/kml/2.1" localName="kml"/>
-        <root-XML namespaceURI="http://earth.google.com/kml/2.2" localName="kml"/>
-        <acronym>KML</acronym>
-        <_comment>Keyhole Markup Language</_comment>
-        <glob pattern="*.kml"/>
-        <sub-class-of type="application/xml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.google-earth.kmz">
-        <sub-class-of type="application/zip"/>
-        <glob pattern="*.kmz"/>
-    </mime-type>
-    <mime-type type="application/vnd.grafeq">
-        <glob pattern="*.gqf"/>
-        <glob pattern="*.gqs"/>
-    </mime-type>
-    <mime-type type="application/vnd.gridmp"/>
-    <mime-type type="application/vnd.groove-account">
-        <glob pattern="*.gac"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-help">
-        <glob pattern="*.ghf"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-identity-message">
-        <glob pattern="*.gim"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-injector">
-        <glob pattern="*.grv"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-tool-message">
-        <glob pattern="*.gtm"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-tool-template">
-        <glob pattern="*.tpl"/>
-    </mime-type>
-    <mime-type type="application/vnd.groove-vcard">
-        <glob pattern="*.vcg"/>
-    </mime-type>
-    <mime-type type="application/vnd.handheld-entertainment+xml">
-        <glob pattern="*.zmm"/>
-    </mime-type>
-    <mime-type type="application/vnd.hbci">
-        <glob pattern="*.hbci"/>
-    </mime-type>
-    <mime-type type="application/vnd.hcl-bireports"/>
-    <mime-type type="application/vnd.hhe.lesson-player">
-        <glob pattern="*.les"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-hpgl">
-        <glob pattern="*.hpgl"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-hpid">
-        <glob pattern="*.hpid"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-hps">
-        <glob pattern="*.hps"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-jlyt">
-        <glob pattern="*.jlt"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-pcl">
-        <glob pattern="*.pcl"/>
-    </mime-type>
-    <mime-type type="application/vnd.hp-pclxl">
-        <glob pattern="*.pclxl"/>
-    </mime-type>
-    <mime-type type="application/vnd.httphone"/>
-    <mime-type type="application/vnd.hydrostatix.sof-data">
-        <glob pattern="*.sfd-hdstx"/>
-    </mime-type>
-    <mime-type type="application/vnd.hzn-3d-crossword">
-        <glob pattern="*.x3d"/>
-    </mime-type>
-    <mime-type type="application/vnd.ibm.afplinedata"/>
-    <mime-type type="application/vnd.ibm.electronic-media"/>
-    <mime-type type="application/vnd.ibm.minipay">
-        <glob pattern="*.mpy"/>
-    </mime-type>
-    <mime-type type="application/vnd.ibm.modcap">
-        <glob pattern="*.afp"/>
-        <glob pattern="*.listafp"/>
-        <glob pattern="*.list3820"/>
-    </mime-type>
-    <mime-type type="application/vnd.ibm.rights-management">
-        <glob pattern="*.irm"/>
-    </mime-type>
-    <mime-type type="application/vnd.ibm.secure-container">
-        <glob pattern="*.sc"/>
-    </mime-type>
-    <mime-type type="application/vnd.iccprofile">
-        <glob pattern="*.icc"/>
-        <glob pattern="*.icm"/>
-    </mime-type>
-    <mime-type type="application/vnd.igloader">
-        <glob pattern="*.igl"/>
-    </mime-type>
-    <mime-type type="application/vnd.immervision-ivp">
-        <glob pattern="*.ivp"/>
-    </mime-type>
-    <mime-type type="application/vnd.immervision-ivu">
-        <glob pattern="*.ivu"/>
-    </mime-type>
-    <mime-type type="application/vnd.informedcontrol.rms+xml"/>
-    <mime-type type="application/vnd.informix-visionary"/>
-    <mime-type type="application/vnd.intercon.formnet">
-        <glob pattern="*.xpw"/>
-        <glob pattern="*.xpx"/>
-    </mime-type>
-    <mime-type type="application/vnd.intertrust.digibox"/>
-    <mime-type type="application/vnd.intertrust.nncp"/>
-    <mime-type type="application/vnd.intu.qbo">
-        <glob pattern="*.qbo"/>
-    </mime-type>
-    <mime-type type="application/vnd.intu.qfx">
-        <glob pattern="*.qfx"/>
-    </mime-type>
-    <mime-type type="application/vnd.iptc.g2.conceptitem+xml"/>
-    <mime-type type="application/vnd.iptc.g2.knowledgeitem+xml"/>
-    <mime-type type="application/vnd.iptc.g2.newsitem+xml"/>
-    <mime-type type="application/vnd.iptc.g2.packageitem+xml"/>
-    <mime-type type="application/vnd.ipunplugged.rcprofile">
-        <glob pattern="*.rcprofile"/>
-    </mime-type>
-    <mime-type type="application/vnd.irepository.package+xml">
-        <glob pattern="*.irp"/>
-    </mime-type>
-    <mime-type type="application/vnd.is-xpr">
-        <glob pattern="*.xpr"/>
-    </mime-type>
-    <mime-type type="application/vnd.jam">
-        <glob pattern="*.jam"/>
-    </mime-type>
-    <mime-type type="application/vnd.japannet-directory-service"/>
-    <mime-type type="application/vnd.japannet-jpnstore-wakeup"/>
-    <mime-type type="application/vnd.japannet-payment-wakeup"/>
-    <mime-type type="application/vnd.japannet-registration"/>
-    <mime-type type="application/vnd.japannet-registration-wakeup"/>
-    <mime-type type="application/vnd.japannet-setstore-wakeup"/>
-    <mime-type type="application/vnd.japannet-verification"/>
-    <mime-type type="application/vnd.japannet-verification-wakeup"/>
-    <mime-type type="application/vnd.jcp.javame.midlet-rms">
-        <glob pattern="*.rms"/>
-    </mime-type>
-    <mime-type type="application/vnd.jisp">
-        <glob pattern="*.jisp"/>
-    </mime-type>
-    <mime-type type="application/vnd.joost.joda-archive">
-        <glob pattern="*.joda"/>
-    </mime-type>
-    <mime-type type="application/vnd.kahootz">
-        <glob pattern="*.ktz"/>
-        <glob pattern="*.ktr"/>
-    </mime-type>
-    <mime-type type="application/vnd.kde.karbon">
-        <glob pattern="*.karbon"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kchart">
-        <alias type="application/x-kchart"/>
-        <_comment>KChart File</_comment>
-        <glob pattern="*.chrt"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kformula">
-        <glob pattern="*.kfo"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kivio">
-        <glob pattern="*.flw"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kontour">
-        <glob pattern="*.kon"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kpresenter">
-        <alias type="application/x-kpresenter"/>
-        <_comment>KPresenter File</_comment>
-        <glob pattern="*.kpr"/>
-        <glob pattern="*.kpt"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kspread">
-        <alias type="application/x-kspread"/>
-        <_comment>KSpread File</_comment>
-        <glob pattern="*.ksp"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kde.kword">
-        <alias type="application/x-kword"/>
-        <_comment>KWord File</_comment>
-        <glob pattern="*.kwd"/>
-        <glob pattern="*.kwt"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.kenameaapp">
-        <glob pattern="*.htke"/>
-    </mime-type>
-    <mime-type type="application/vnd.kidspiration">
-        <glob pattern="*.kia"/>
-    </mime-type>
-    <mime-type type="application/vnd.kinar">
-        <glob pattern="*.kne"/>
-        <glob pattern="*.knp"/>
-    </mime-type>
-    <mime-type type="application/vnd.koan">
-        <alias type="application/x-koan"/>
-        <_comment>SSEYO Koan File</_comment>
-        <glob pattern="*.skp"/>
-        <glob pattern="*.skd"/>
-        <glob pattern="*.skt"/>
-        <glob pattern="*.skm"/>
-    </mime-type>
-    <mime-type type="application/vnd.kodak-descriptor">
-        <glob pattern="*.sse"/>
-    </mime-type>
-    <mime-type type="application/vnd.liberty-request+xml"/>
-    <mime-type type="application/vnd.llamagraphics.life-balance.desktop">
-        <glob pattern="*.lbd"/>
-    </mime-type>
-    <mime-type type="application/vnd.llamagraphics.life-balance.exchange+xml">
-        <glob pattern="*.lbe"/>
-    </mime-type>
-    <mime-type type="application/vnd.lotus-1-2-3">
-        <glob pattern="*.123"/>
-    </mime-type>
-    <mime-type type="application/vnd.lotus-approach">
-        <glob pattern="*.apr"/>
-    </mime-type>
-    <mime-type type="application/vnd.lotus-freelance">
-        <glob pattern="*.pre"/>
-    </mime-type>
-    <mime-type type="application/vnd.lotus-notes">
-        <glob pattern="*.nsf"/>
-    </mime-type>
-    <mime-type type="application/vnd.lotus-organizer">
-        <glob pattern="*.org"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.lotus-screencam">
-        <!-- <glob pattern="*.scm"/> - conflicts with text/x-scheme -->
-    </mime-type>
-
-    <mime-type type="application/vnd.lotus-wordpro">
-        <magic priority="50">
-            <match value="WordPro\0" type="string" offset="0" />
-            <match value="WordPro\r\373" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.lwp"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.macports.portpkg">
-        <glob pattern="*.portpkg"/>
-    </mime-type>
-    <mime-type type="application/vnd.marlin.drm.actiontoken+xml"/>
-    <mime-type type="application/vnd.marlin.drm.conftoken+xml"/>
-    <mime-type type="application/vnd.marlin.drm.license+xml"/>
-    <mime-type type="application/vnd.marlin.drm.mdcf"/>
-    <mime-type type="application/vnd.mcd">
-        <glob pattern="*.mcd"/>
-    </mime-type>
-    <mime-type type="application/vnd.medcalcdata">
-        <glob pattern="*.mc1"/>
-    </mime-type>
-    <mime-type type="application/vnd.mediastation.cdkey">
-        <glob pattern="*.cdkey"/>
-    </mime-type>
-    <mime-type type="application/vnd.meridian-slingshot"/>
-    <mime-type type="application/vnd.mfer">
-        <glob pattern="*.mwf"/>
-    </mime-type>
-    <mime-type type="application/vnd.mfmp">
-        <glob pattern="*.mfm"/>
-    </mime-type>
-    <mime-type type="application/vnd.micrografx.flo">
-        <glob pattern="*.flo"/>
-    </mime-type>
-    <mime-type type="application/vnd.micrografx.igx">
-        <glob pattern="*.igx"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.mif">
-        <_comment>FrameMaker Interchange Format</_comment>
-        <alias type="application/x-mif"/>
-        <alias type="application/x-frame"/>
-        <magic priority="50">
-            <match value="\&lt;MakerFile" type="string" offset="0" />
-            <match value="\&lt;MIFFile" type="string" offset="0" />
-            <match value="\&lt;MakerDictionary" type="string" offset="0" />
-            <match value="\&lt;MakerScreenFont" type="string" offset="0" />
-            <match value="\&lt;MML" type="string" offset="0" />
-            <match value="\&lt;Book" type="string" offset="0" />
-            <match value="\&lt;Maker" type="string" offset="0" />
-            <match value="\x3c\x4d\x49\x46\x46\x69\x6c\x65\x20" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.mif"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.mindjet.mindmanager">
-        <_comment>MindManager</_comment>
-        <sub-class-of type="application/zip"/>
-        <glob pattern="*.mmp"/>
-        <glob pattern="*.mmap"/>
-        <glob pattern="*.mmpt"/>
-        <glob pattern="*.mmat"/>
-        <glob pattern="*.mmmp"/>
-        <glob pattern="*.mmas"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.minisoft-hp3000-save"/>
-    <mime-type type="application/vnd.mitsubishi.misty-guard.trustweb"/>
-    <mime-type type="application/vnd.mobius.daf">
-        <glob pattern="*.daf"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.dis">
-        <glob pattern="*.dis"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.mbk">
-        <glob pattern="*.mbk"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.mqy">
-        <glob pattern="*.mqy"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.msl">
-        <glob pattern="*.msl"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.plc">
-        <glob pattern="*.plc"/>
-    </mime-type>
-    <mime-type type="application/vnd.mobius.txf">
-        <glob pattern="*.txf"/>
-    </mime-type>
-    <mime-type type="application/vnd.mophun.application">
-        <glob pattern="*.mpn"/>
-    </mime-type>
-    <mime-type type="application/vnd.mophun.certificate">
-        <glob pattern="*.mpc"/>
-    </mime-type>
-    <mime-type type="application/vnd.motorola.flexsuite"/>
-    <mime-type type="application/vnd.motorola.flexsuite.adsi"/>
-    <mime-type type="application/vnd.motorola.flexsuite.fis"/>
-    <mime-type type="application/vnd.motorola.flexsuite.gotap"/>
-    <mime-type type="application/vnd.motorola.flexsuite.kmr"/>
-    <mime-type type="application/vnd.motorola.flexsuite.ttc"/>
-    <mime-type type="application/vnd.motorola.flexsuite.wem"/>
-    <mime-type type="application/vnd.motorola.iprm"/>
-    <mime-type type="application/vnd.mozilla.xul+xml">
-        <glob pattern="*.xul"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-artgalry">
-        <glob pattern="*.cil"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-asf"/>
-    <mime-type type="application/vnd.ms-cab-compressed">
-        <glob pattern="*.cab"/>
-    </mime-type>
-
-    <!-- http://www.iana.org/assignments/media-types/application/vnd.ms-excel -->
-    <mime-type type="application/vnd.ms-excel">
-        <!-- Use DefaultDetector / org.apache.tika.parser.microsoft.POIFSContainerDetector for more reliable detection of OLE2 documents -->
-        <alias type="application/msexcel" />
-        <_comment>Microsoft Excel Spreadsheet</_comment>
-        <magic priority="50">
-            <match value="Microsoft\ Excel\ 5.0\ Worksheet" type="string" offset="2080"/>
-            <match value="Foglio\ di\ lavoro\ Microsoft\ Exce" type="string" offset="2080"/>
-            <match value="Biff5" type="string" offset="2114"/>
-            <match value="Biff5" type="string" offset="2121"/>
-            <match value="\x09\x04\x06\x00\x00\x00\x10\x00" type="string" offset="0"/>
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="W\x00o\x00r\x00k\x00b\x00o\x00o\x00k" type="string" offset="1152:4096" />
-            </match>
-        </magic>
-        <glob pattern="*.xls"/>
-        <glob pattern="*.xlm"/>
-        <glob pattern="*.xla"/>
-        <glob pattern="*.xlc"/>
-        <glob pattern="*.xlt"/>
-        <glob pattern="*.xlw"/>
-        <glob pattern="*.xll"/>
-        <glob pattern="*.xld"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-excel.addin.macroenabled.12">
-        <_comment>Office Open XML Workbook Add-in (macro-enabled)</_comment>
-        <glob pattern="*.xlam"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-excel.sheet.macroenabled.12">
-        <_comment>Office Open XML Workbook (macro-enabled)</_comment>
-        <glob pattern="*.xlsm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-excel.sheet.binary.macroenabled.12">
-        <_comment>Microsoft Excel 2007 Binary Spreadsheet</_comment>
-        <glob pattern="*.xlsb"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-fontobject">
-        <glob pattern="*.eot"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-htmlhelp">
-        <glob pattern="*.chm"/>
-        <magic priority="50">
-            <match value="ITSF" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="application/vnd.ms-ims">
-        <glob pattern="*.ims"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-lrm">
-        <glob pattern="*.lrm"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-outlook">
-        <_comment>Microsoft Outlook Message</_comment>
-        <glob pattern="*.msg" />
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-outlook-pst">
-        <_comment>Outlook Personal Folders File Format</_comment>
-        <magic priority="50">
-            <match value="!BDN....SM" type="string" offset="0" mask="0xFFFFFFFF00000000FFFF"/>
-        </magic>
-        <glob pattern="*.pst"/>
-        <glob pattern="*.ost"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-pki.seccat">
-        <glob pattern="*.cat"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-pki.stl">
-        <glob pattern="*.stl"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-playready.initiator+xml"/>
-
-    <!-- http://www.iana.org/assignments/media-types/application/vnd.ms-powerpoint -->
-    <mime-type type="application/vnd.ms-powerpoint">
-        <!-- Use DefaultDetector / org.apache.tika.parser.microsoft.POIFSContainerDetector for more reliable detection of OLE2 documents -->
-        <alias type="application/mspowerpoint"/>
-        <_comment>Microsoft Powerpoint Presentation</_comment>
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="P\x00o\x00w\x00e\x00r\x00P\x00o\x00i\x00n\x00t\x00 D\x00o\x00c\x00u\x00m\x00e\x00n\x00t" type="string" offset="1152:4096" />
-            </match>
-        </magic>
-        <glob pattern="*.ppt"/>
-        <glob pattern="*.ppz"/>
-        <glob pattern="*.pps"/>
-        <glob pattern="*.pot"/>
-        <glob pattern="*.ppa"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-powerpoint.addin.macroenabled.12">
-        <_comment>Office Open XML Presentation Add-in (macro-enabled)</_comment>
-        <glob pattern="*.ppam"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-powerpoint.presentation.macroenabled.12">
-        <_comment>Office Open XML Presentation (macro-enabled)</_comment>
-        <glob pattern="*.pptm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-powerpoint.slide.macroenabled.12">
-        <glob pattern="*.sldm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-powerpoint.slideshow.macroenabled.12">
-        <_comment>Office Open XML Presentation Slideshow (macro-enabled)</_comment>
-        <glob pattern="*.ppsm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-powerpoint.template.macroenabled.12">
-        <glob pattern="*.potm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-project">
-        <glob pattern="*.mpp"/>
-        <glob pattern="*.mpt"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/x-project">
-        <glob pattern="*.mpx"/>
-        <magic priority="50">
-            <match value="MPX,Microsoft Project for Windows," type="string" offset="0"/>
-        </magic>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-tnef">
-        <alias type="application/ms-tnef" />
-        <magic priority="50">
-            <match value="0x223e9f78" type="little32" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-wmdrm.lic-chlg-req"/>
-    <mime-type type="application/vnd.ms-wmdrm.lic-resp"/>
-    <mime-type type="application/vnd.ms-wmdrm.meter-chlg-req"/>
-    <mime-type type="application/vnd.ms-wmdrm.meter-resp"/>
-
-    <mime-type type="application/vnd.ms-word.document.macroenabled.12">
-        <_comment>Office Open XML Document (macro-enabled)</_comment>
-        <glob pattern="*.docm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-word.template.macroenabled.12">
-        <_comment>Office Open XML Document Template (macro-enabled)</_comment>
-        <glob pattern="*.dotm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-works">
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="M\x00a\x00t\x00O\x00S\x00T" type="string" offset="1152:4096" />
-            </match>
-        </magic>
-        <glob pattern="*.wps"/>
-        <glob pattern="*.wks"/>
-        <glob pattern="*.wcm"/>
-        <glob pattern="*.wdb"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-wpl">
-        <glob pattern="*.wpl"/>
-    </mime-type>
-    <mime-type type="application/vnd.ms-xpsdocument">
-        <alias type="application/oxps"/>
-        <_comment>Open XML Paper Specification</_comment>
-        <glob pattern="*.xps"/>
-        <glob pattern="*.oxps"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-    <mime-type type="application/vnd.mseq">
-        <glob pattern="*.mseq"/>
-    </mime-type>
-    <mime-type type="application/vnd.msign"/>
-    <mime-type type="application/vnd.multiad.creator"/>
-    <mime-type type="application/vnd.multiad.creator.cif"/>
-    <mime-type type="application/vnd.music-niff"/>
-    <mime-type type="application/vnd.musician">
-        <glob pattern="*.mus"/>
-    </mime-type>
-    <mime-type type="application/vnd.muvee.style">
-        <glob pattern="*.msty"/>
-    </mime-type>
-    <mime-type type="application/vnd.ncd.control"/>
-    <mime-type type="application/vnd.ncd.reference"/>
-    <mime-type type="application/vnd.nervana"/>
-    <mime-type type="application/vnd.netfpx"/>
-    <mime-type type="application/vnd.neurolanguage.nlu">
-        <glob pattern="*.nlu"/>
-    </mime-type>
-    <mime-type type="application/vnd.noblenet-directory">
-        <glob pattern="*.nnd"/>
-    </mime-type>
-    <mime-type type="application/vnd.noblenet-sealer">
-        <glob pattern="*.nns"/>
-    </mime-type>
-    <mime-type type="application/vnd.noblenet-web">
-        <glob pattern="*.nnw"/>
-    </mime-type>
-    <mime-type type="application/vnd.nokia.catalogs"/>
-    <mime-type type="application/vnd.nokia.conml+wbxml"/>
-    <mime-type type="application/vnd.nokia.conml+xml"/>
-    <mime-type type="application/vnd.nokia.isds-radio-presets"/>
-    <mime-type type="application/vnd.nokia.iptv.config+xml"/>
-    <mime-type type="application/vnd.nokia.landmark+wbxml"/>
-    <mime-type type="application/vnd.nokia.landmark+xml"/>
-    <mime-type type="application/vnd.nokia.landmarkcollection+xml"/>
-    <mime-type type="application/vnd.nokia.n-gage.ac+xml"/>
-    <mime-type type="application/vnd.nokia.n-gage.data">
-        <glob pattern="*.ngdat"/>
-    </mime-type>
-    <mime-type type="application/vnd.nokia.n-gage.symbian.install">
-        <glob pattern="*.n-gage"/>
-    </mime-type>
-    <mime-type type="application/vnd.nokia.ncd"/>
-    <mime-type type="application/vnd.nokia.pcd+wbxml"/>
-    <mime-type type="application/vnd.nokia.pcd+xml"/>
-    <mime-type type="application/vnd.nokia.radio-preset">
-        <glob pattern="*.rpst"/>
-    </mime-type>
-    <mime-type type="application/vnd.nokia.radio-presets">
-        <glob pattern="*.rpss"/>
-    </mime-type>
-    <mime-type type="application/vnd.novadigm.edm">
-        <glob pattern="*.edm"/>
-    </mime-type>
-    <mime-type type="application/vnd.novadigm.edx">
-        <glob pattern="*.edx"/>
-    </mime-type>
-    <mime-type type="application/vnd.novadigm.ext">
-        <glob pattern="*.ext"/>
-    </mime-type>
-
-    <!-- =================================================================== -->
-    <!-- Open Document Format for Office Applications (OpenDocument) v1.0    -->
-    <!-- http://www.oasis-open.org/specs/index.php#opendocumentv1.0          -->
-    <!-- =================================================================== -->
-
-    <mime-type type="application/vnd.oasis.opendocument.chart">
-        <alias type="application/x-vnd.oasis.opendocument.chart"/>
-        <_comment>OpenDocument v1.0: Chart document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.chart"/>
-            </match>
-        </magic>
-        <glob pattern="*.odc"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.chart-template">
-        <alias type="application/x-vnd.oasis.opendocument.chart-template"/>
-        <_comment>OpenDocument v1.0: Chart document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.chart-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.otc"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.database">
-        <glob pattern="*.odb"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.formula">
-        <alias type="application/x-vnd.oasis.opendocument.formula"/>
-        <_comment>OpenDocument v1.0: Formula document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.formula" />
-            </match>
-        </magic>
-        <glob pattern="*.odf"/>
-        <sub-class-of type="application/zip"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.formula-template">
-        <alias type="application/x-vnd.oasis.opendocument.formula-template"/>
-        <_comment>OpenDocument v1.0: Formula document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.formula-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.odft"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.graphics">
-        <alias type="application/x-vnd.oasis.opendocument.graphics"/>
-        <_comment>OpenDocument v1.0: Graphics document (Drawing)</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.graphics"/>
-            </match>
-        </magic>
-        <glob pattern="*.odg"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.graphics-template">
-        <alias type="application/x-vnd.oasis.opendocument.graphics-template"/>
-        <_comment>OpenDocument v1.0: Graphics document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.graphics-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.otg"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.image">
-        <alias type="application/x-vnd.oasis.opendocument.image"/>
-        <_comment>OpenDocument v1.0: Image document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.image"/>
-            </match>
-        </magic>
-        <glob pattern="*.odi"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.image-template">
-        <alias type="application/x-vnd.oasis.opendocument.image-template"/>
-        <_comment>OpenDocument v1.0: Image document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.image-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.oti"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.presentation">
-        <alias type="application/x-vnd.oasis.opendocument.presentation"/>
-        <_comment>OpenDocument v1.0: Presentation document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.presentation"/>
-            </match>
-        </magic>
-        <glob pattern="*.odp"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.presentation-template">
-        <alias type="application/x-vnd.oasis.opendocument.presentation-template"/>
-        <_comment>OpenDocument v1.0: Presentation document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.presentation-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.otp"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.spreadsheet">
-        <alias type="application/x-vnd.oasis.opendocument.spreadsheet"/>
-        <_comment>OpenDocument v1.0: Spreadsheet document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.spreadsheet"/>
-            </match>
-        </magic>
-        <glob pattern="*.ods"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.spreadsheet-template">
-        <alias type="application/x-vnd.oasis.opendocument.spreadsheet-template"/>
-        <_comment>OpenDocument v1.0: Spreadsheet document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.spreadsheet-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.ots"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.text">
-        <alias type="application/x-vnd.oasis.opendocument.text"/>
-        <_comment>OpenDocument v1.0: Text document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.text"/>
-            </match>
-        </magic>
-        <glob pattern="*.odt"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.text-master">
-        <alias type="application/x-vnd.oasis.opendocument.text-master"/>
-        <_comment>OpenDocument v1.0: Global Text document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.text-master"/>
-            </match>
-        </magic>
-        <glob pattern="*.otm"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.text-template">
-        <alias type="application/x-vnd.oasis.opendocument.text-template"/>
-        <_comment>OpenDocument v1.0: Text document used as template</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.text-template"/>
-            </match>
-        </magic>
-        <glob pattern="*.ott"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.oasis.opendocument.text-web">
-        <alias type="application/x-vnd.oasis.opendocument.text-web"/>
-        <_comment>OpenDocument v1.0: Text document used as template for HTML documents</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.oasis.opendocument.text-web"/>
-            </match>
-        </magic>
-        <glob pattern="*.oth"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.obn"/>
-    <mime-type type="application/vnd.olpc-sugar">
-        <glob pattern="*.xo"/>
-    </mime-type>
-    <mime-type type="application/vnd.oma-scws-config"/>
-    <mime-type type="application/vnd.oma-scws-http-request"/>
-    <mime-type type="application/vnd.oma-scws-http-response"/>
-    <mime-type type="application/vnd.oma.bcast.associated-procedure-parameter+xml"/>
-    <mime-type type="application/vnd.oma.bcast.drm-trigger+xml"/>
-    <mime-type type="application/vnd.oma.bcast.imd+xml"/>
-    <mime-type type="application/vnd.oma.bcast.ltkm"/>
-    <mime-type type="application/vnd.oma.bcast.notification+xml"/>
-    <mime-type type="application/vnd.oma.bcast.provisioningtrigger"/>
-    <mime-type type="application/vnd.oma.bcast.sgboot"/>
-    <mime-type type="application/vnd.oma.bcast.sgdd+xml"/>
-    <mime-type type="application/vnd.oma.bcast.sgdu"/>
-    <mime-type type="application/vnd.oma.bcast.simple-symbol-container"/>
-    <mime-type type="application/vnd.oma.bcast.smartcard-trigger+xml"/>
-    <mime-type type="application/vnd.oma.bcast.sprov+xml"/>
-    <mime-type type="application/vnd.oma.bcast.stkm"/>
-    <mime-type type="application/vnd.oma.dcd"/>
-    <mime-type type="application/vnd.oma.dcdc"/>
-    <mime-type type="application/vnd.oma.dd2+xml">
-        <glob pattern="*.dd2"/>
-    </mime-type>
-    <mime-type type="application/vnd.oma.drm.risd+xml"/>
-    <mime-type type="application/vnd.oma.group-usage-list+xml"/>
-    <mime-type type="application/vnd.oma.poc.detailed-progress-report+xml"/>
-    <mime-type type="application/vnd.oma.poc.final-report+xml"/>
-    <mime-type type="application/vnd.oma.poc.groups+xml"/>
-    <mime-type type="application/vnd.oma.poc.invocation-descriptor+xml"/>
-    <mime-type type="application/vnd.oma.poc.optimized-progress-report+xml"/>
-    <mime-type type="application/vnd.oma.xcap-directory+xml"/>
-    <mime-type type="application/vnd.omads-email+xml"/>
-    <mime-type type="application/vnd.omads-file+xml"/>
-    <mime-type type="application/vnd.omads-folder+xml"/>
-    <mime-type type="application/vnd.omaloc-supl-init"/>
-
-    <mime-type type="application/vnd.openofficeorg.extension">
-        <glob pattern="*.oxt"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.presentation">
-        <_comment>Office Open XML Presentation</_comment>
-        <glob pattern="*.pptx"/>
-        <glob pattern="*.thmx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slide">
-        <glob pattern="*.sldx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.template">
-        <_comment>Office Open XML Presentation Template</_comment>
-        <glob pattern="*.potx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slideshow">
-        <_comment>Office Open XML Presentation Slideshow</_comment>
-        <glob pattern="*.ppsx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
-        <_comment>Office Open XML Workbook</_comment>
-        <glob pattern="*.xlsx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.template">
-        <_comment>Office Open XML Workbook Template</_comment>
-        <glob pattern="*.xltx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.ms-excel.template.macroenabled.12">
-        <_comment>Office Open XML Workbook Template (macro-enabled)</_comment>
-        <glob pattern="*.xltm"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.document">
-        <_comment>Office Open XML Document</_comment>
-        <glob pattern="*.docx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.template">
-        <_comment>Office Open XML Document Template</_comment>
-        <glob pattern="*.dotx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.osa.netdeploy"/>
-    <mime-type type="application/vnd.osgi.bundle"/>
-    <mime-type type="application/vnd.osgi.dp">
-        <glob pattern="*.dp"/>
-    </mime-type>
-    <mime-type type="application/vnd.otps.ct-kip+xml"/>
-
-    <mime-type type="application/vnd.palm">
-        <!-- <glob pattern="*.pdb"/> - conflicts with chemical/x-pdb -->
-        <glob pattern="*.pqa"/>
-        <glob pattern="*.oprc"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.paos.xml"/>
-    <mime-type type="application/vnd.pg.format">
-        <glob pattern="*.str"/>
-    </mime-type>
-    <mime-type type="application/vnd.pg.osasli">
-        <glob pattern="*.ei6"/>
-    </mime-type>
-    <mime-type type="application/vnd.piaccess.application-licence"/>
-    <mime-type type="application/vnd.picsel">
-        <glob pattern="*.efif"/>
-    </mime-type>
-    <mime-type type="application/vnd.poc.group-advertisement+xml"/>
-    <mime-type type="application/vnd.pocketlearn">
-        <glob pattern="*.plf"/>
-    </mime-type>
-    <mime-type type="application/vnd.powerbuilder6">
-        <glob pattern="*.pbd"/>
-    </mime-type>
-    <mime-type type="application/vnd.powerbuilder6-s"/>
-    <mime-type type="application/vnd.powerbuilder7"/>
-    <mime-type type="application/vnd.powerbuilder7-s"/>
-    <mime-type type="application/vnd.powerbuilder75"/>
-    <mime-type type="application/vnd.powerbuilder75-s"/>
-    <mime-type type="application/vnd.preminet"/>
-    <mime-type type="application/vnd.previewsystems.box">
-        <glob pattern="*.box"/>
-    </mime-type>
-    <mime-type type="application/vnd.proteus.magazine">
-        <glob pattern="*.mgz"/>
-    </mime-type>
-    <mime-type type="application/vnd.publishare-delta-tree">
-        <glob pattern="*.qps"/>
-    </mime-type>
-    <mime-type type="application/vnd.pvi.ptid1">
-        <glob pattern="*.ptid"/>
-    </mime-type>
-    <mime-type type="application/vnd.pwg-multiplexed"/>
-    <mime-type type="application/vnd.pwg-xhtml-print+xml"/>
-    <mime-type type="application/vnd.qualcomm.brew-app-res"/>
-    <mime-type type="application/vnd.quark.quarkxpress">
-        <glob pattern="*.qxd"/>
-        <glob pattern="*.qxt"/>
-        <glob pattern="*.qwd"/>
-        <glob pattern="*.qwt"/>
-        <glob pattern="*.qxl"/>
-        <glob pattern="*.qxb"/>
-    </mime-type>
-    <mime-type type="application/vnd.rapid"/>
-    <mime-type type="application/vnd.recordare.musicxml">
-        <glob pattern="*.mxl"/>
-    </mime-type>
-    <mime-type type="application/vnd.recordare.musicxml+xml">
-        <glob pattern="*.musicxml"/>
-    </mime-type>
-    <mime-type type="application/vnd.renlearn.rlprint"/>
-    <mime-type type="application/vnd.rim.cod">
-        <glob pattern="*.cod"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.rn-realmedia">
-        <magic priority="50">
-            <match value=".RMF" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.rm"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.route66.link66+xml">
-        <glob pattern="*.link66"/>
-    </mime-type>
-    <mime-type type="application/vnd.ruckus.download"/>
-    <mime-type type="application/vnd.s3sms"/>
-    <mime-type type="application/vnd.sbm.cid"/>
-    <mime-type type="application/vnd.sbm.mid2"/>
-    <mime-type type="application/vnd.scribus"/>
-    <mime-type type="application/vnd.sealed.3df"/>
-    <mime-type type="application/vnd.sealed.csf"/>
-    <mime-type type="application/vnd.sealed.doc"/>
-    <mime-type type="application/vnd.sealed.eml"/>
-    <mime-type type="application/vnd.sealed.mht"/>
-    <mime-type type="application/vnd.sealed.net"/>
-    <mime-type type="application/vnd.sealed.ppt"/>
-    <mime-type type="application/vnd.sealed.tiff"/>
-    <mime-type type="application/vnd.sealed.xls"/>
-    <mime-type type="application/vnd.sealedmedia.softseal.html"/>
-    <mime-type type="application/vnd.sealedmedia.softseal.pdf"/>
-    <mime-type type="application/vnd.seemail">
-        <glob pattern="*.see"/>
-    </mime-type>
-    <mime-type type="application/vnd.sema">
-        <glob pattern="*.sema"/>
-    </mime-type>
-    <mime-type type="application/vnd.semd">
-        <glob pattern="*.semd"/>
-    </mime-type>
-    <mime-type type="application/vnd.semf">
-        <glob pattern="*.semf"/>
-    </mime-type>
-    <mime-type type="application/vnd.shana.informed.formdata">
-        <glob pattern="*.ifm"/>
-    </mime-type>
-    <mime-type type="application/vnd.shana.informed.formtemplate">
-        <glob pattern="*.itp"/>
-    </mime-type>
-    <mime-type type="application/vnd.shana.informed.interchange">
-        <glob pattern="*.iif"/>
-    </mime-type>
-    <mime-type type="application/vnd.shana.informed.package">
-        <glob pattern="*.ipk"/>
-    </mime-type>
-    <mime-type type="application/vnd.simtech-mindmapper">
-        <glob pattern="*.twd"/>
-        <glob pattern="*.twds"/>
-    </mime-type>
-    <mime-type type="application/vnd.smaf">
-        <glob pattern="*.mmf"/>
-    </mime-type>
-    <mime-type type="application/vnd.smart.teacher">
-        <glob pattern="*.teacher"/>
-    </mime-type>
-    <mime-type type="application/vnd.software602.filler.form+xml"/>
-    <mime-type type="application/vnd.software602.filler.form-xml-zip"/>
-    <mime-type type="application/vnd.solent.sdkm+xml">
-        <glob pattern="*.sdkm"/>
-        <glob pattern="*.sdkd"/>
-    </mime-type>
-    <mime-type type="application/vnd.spotfire.dxp">
-        <glob pattern="*.dxp"/>
-    </mime-type>
-    <mime-type type="application/vnd.spotfire.sfs">
-        <glob pattern="*.sfs"/>
-    </mime-type>
-    <mime-type type="application/vnd.sss-cod"/>
-    <mime-type type="application/vnd.sss-dtf"/>
-    <mime-type type="application/vnd.sss-ntf"/>
-
-    <mime-type type="application/vnd.stardivision.calc">
-        <sub-class-of type="application/x-tika-staroffice"/>
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="StarCalc" type="string" offset="2048:2207" />
-            </match>
-        </magic>
-        <glob pattern="*.sdc"/>
-    </mime-type>
-    <mime-type type="application/vnd.stardivision.draw">
-        <sub-class-of type="application/x-tika-staroffice"/>
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="StarDraw" type="string" offset="2048:2207" />
-            </match>
-        </magic>
-        <glob pattern="*.sda"/>
-    </mime-type>
-    <mime-type type="application/vnd.stardivision.impress">
-        <sub-class-of type="application/x-tika-staroffice"/>
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="StarImpress" type="string" offset="2048:2207" />
-            </match>
-        </magic>
-        <glob pattern="*.sdd"/>
-    </mime-type>
-    <mime-type type="application/vnd.stardivision.math">
-        <glob pattern="*.smf"/>
-    </mime-type>
-    <mime-type type="application/vnd.stardivision.writer">
-        <sub-class-of type="application/x-tika-staroffice"/>
-        <magic priority="50">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="StarWriter" type="string" offset="2048:2207" />
-            </match>
-        </magic>
-        <glob pattern="*.sdw"/>
-    </mime-type>
-    <mime-type type="application/x-staroffice-template">
-        <sub-class-of type="application/x-tika-staroffice"/>
-        <glob pattern="*.vor"/>
-    </mime-type>
-    <mime-type type="application/vnd.stardivision.writer-global">
-        <glob pattern="*.sgl"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.street-stream"/>
-    <mime-type type="application/vnd.sun.xml.calc">
-        <glob pattern="*.sxc"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.calc.template">
-        <glob pattern="*.stc"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.draw">
-        <glob pattern="*.sxd"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.draw.template">
-        <glob pattern="*.std"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.impress">
-        <glob pattern="*.sxi"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.impress.template">
-        <glob pattern="*.sti"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.math">
-        <glob pattern="*.sxm"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.sun.xml.writer">
-        <alias type="application/x-vnd.sun.xml.writer"/>
-        <_comment>OpenOffice v1.0: Writer Document</_comment>
-        <magic>
-            <match type="string" offset="0" value="PK">
-                <match type="string" offset="30"
-                       value="mimetypeapplication/vnd.sun.xml.writer"/>
-            </match>
-        </magic>
-        <glob pattern="*.sxw"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.sun.xml.writer.global">
-        <glob pattern="*.sxg"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.xml.writer.template">
-        <glob pattern="*.stw"/>
-    </mime-type>
-    <mime-type type="application/vnd.sun.wadl+xml"/>
-    <mime-type type="application/vnd.sus-calendar">
-        <glob pattern="*.sus"/>
-        <glob pattern="*.susp"/>
-    </mime-type>
-    <mime-type type="application/vnd.svd">
-        <glob pattern="*.svd"/>
-    </mime-type>
-    <mime-type type="application/vnd.swiftview-ics"/>
-
-    <mime-type type="application/vnd.symbian.install">
-        <magic priority="50">
-            <match value="0x10000419" type="little32" offset="8" />
-        </magic>
-        <glob pattern="*.sis"/>
-        <glob pattern="*.sisx"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.syncml+xml">
-        <glob pattern="*.xsm"/>
-    </mime-type>
-    <mime-type type="application/vnd.syncml.dm+wbxml">
-        <glob pattern="*.bdm"/>
-    </mime-type>
-    <mime-type type="application/vnd.syncml.dm+xml">
-        <glob pattern="*.xdm"/>
-    </mime-type>
-    <mime-type type="application/vnd.syncml.dm.notification"/>
-    <mime-type type="application/vnd.syncml.ds.notification"/>
-    <mime-type type="application/vnd.tao.intent-module-archive">
-        <glob pattern="*.tao"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.tcpdump.pcap">
-        <_comment>TCPDump pcap packet capture</_comment>
-        <magic priority="50">
-            <match value="0xa1b2c3d4" type="big32" offset="0" />
-            <match value="0xd4c3b2a1" type="big32" offset="0" />
-        </magic>
-        <glob pattern="*.pcap"/>
-        <glob pattern="*.cap"/>
-        <glob pattern="*.dmp"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.tmobile-livetv">
-        <glob pattern="*.tmo"/>
-    </mime-type>
-    <mime-type type="application/vnd.trid.tpt">
-        <glob pattern="*.tpt"/>
-    </mime-type>
-    <mime-type type="application/vnd.triscape.mxs">
-        <glob pattern="*.mxs"/>
-    </mime-type>
-    <mime-type type="application/vnd.trueapp">
-        <glob pattern="*.tra"/>
-    </mime-type>
-    <mime-type type="application/vnd.truedoc"/>
-    <mime-type type="application/vnd.ufdl">
-        <glob pattern="*.ufd"/>
-        <glob pattern="*.ufdl"/>
-    </mime-type>
-    <mime-type type="application/vnd.uiq.theme">
-        <glob pattern="*.utz"/>
-    </mime-type>
-    <mime-type type="application/vnd.umajin">
-        <glob pattern="*.umj"/>
-    </mime-type>
-    <mime-type type="application/vnd.unity">
-        <glob pattern="*.unityweb"/>
-    </mime-type>
-    <mime-type type="application/vnd.uoml+xml">
-        <glob pattern="*.uoml"/>
-    </mime-type>
-    <mime-type type="application/vnd.uplanet.alert"/>
-    <mime-type type="application/vnd.uplanet.alert-wbxml"/>
-    <mime-type type="application/vnd.uplanet.bearer-choice"/>
-    <mime-type type="application/vnd.uplanet.bearer-choice-wbxml"/>
-    <mime-type type="application/vnd.uplanet.cacheop"/>
-    <mime-type type="application/vnd.uplanet.cacheop-wbxml"/>
-    <mime-type type="application/vnd.uplanet.channel"/>
-    <mime-type type="application/vnd.uplanet.channel-wbxml"/>
-    <mime-type type="application/vnd.uplanet.list"/>
-    <mime-type type="application/vnd.uplanet.list-wbxml"/>
-    <mime-type type="application/vnd.uplanet.listcmd"/>
-    <mime-type type="application/vnd.uplanet.listcmd-wbxml"/>
-    <mime-type type="application/vnd.uplanet.signal"/>
-    <mime-type type="application/vnd.vcx">
-        <glob pattern="*.vcx"/>
-    </mime-type>
-    <mime-type type="application/vnd.vd-study"/>
-    <mime-type type="application/vnd.vectorworks"/>
-    <mime-type type="application/vnd.vidsoft.vidconference"/>
-
-    <!-- http://www.iana.org/assignments/media-types/application/vnd.visio -->
-    <mime-type type="application/vnd.visio">
-        <_comment>Microsoft Visio Diagram</_comment>
-        <glob pattern="*.vsd"/>
-        <glob pattern="*.vst"/>
-        <glob pattern="*.vss"/>
-        <glob pattern="*.vsw"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.visionary">
-        <glob pattern="*.vis"/>
-    </mime-type>
-    <mime-type type="application/vnd.vividence.scriptfile"/>
-    <mime-type type="application/vnd.vsf">
-        <glob pattern="*.vsf"/>
-    </mime-type>
-    <mime-type type="application/vnd.wap.sic"/>
-    <mime-type type="application/vnd.wap.slc"/>
-
-    <mime-type type="application/vnd.wap.wbxml">
-        <glob pattern="*.wbxml"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.wap.wmlc">
-        <_comment>Compiled WML Document</_comment>
-        <glob pattern="*.wmlc"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.wap.wmlscriptc">
-        <_comment>Compiled WML Script</_comment>
-        <glob pattern="*.wmlsc"/>
-    </mime-type>
-
-    <mime-type type="application/vnd.webturbo">
-        <glob pattern="*.wtb"/>
-    </mime-type>
-    <mime-type type="application/vnd.wfa.wsc"/>
-    <mime-type type="application/vnd.wmc"/>
-    <mime-type type="application/vnd.wmf.bootstrap"/>
-    <mime-type type="application/vnd.wordperfect">
-        <alias type="application/wordperfect"/>
-        <glob pattern="*.wpd"/>
-    </mime-type>
-    <mime-type type="application/vnd.wqd">
-        <glob pattern="*.wqd"/>
-    </mime-type>
-    <mime-type type="application/vnd.wrq-hp3000-labelled"/>
-    <mime-type type="application/vnd.wt.stf">
-        <glob pattern="*.stf"/>
-    </mime-type>
-    <mime-type type="application/vnd.wv.csp+wbxml"/>
-    <mime-type type="application/vnd.wv.csp+xml"/>
-    <mime-type type="application/vnd.wv.ssp+xml"/>
-    <mime-type type="application/vnd.xara">
-        <glob pattern="*.xar"/>
-    </mime-type>
-    <mime-type type="application/vnd.xfdl">
-        <glob pattern="*.xfdl"/>
-    </mime-type>
-    <mime-type type="application/vnd.xfdl.webform"/>
-    <mime-type type="application/vnd.xmi+xml"/>
-    <mime-type type="application/vnd.xmpie.cpkg"/>
-    <mime-type type="application/vnd.xmpie.dpkg"/>
-    <mime-type type="application/vnd.xmpie.plan"/>
-    <mime-type type="application/vnd.xmpie.ppkg"/>
-    <mime-type type="application/vnd.xmpie.xlim"/>
-    <mime-type type="application/vnd.yamaha.hv-dic">
-        <glob pattern="*.hvd"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.hv-script">
-        <glob pattern="*.hvs"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.hv-voice">
-        <glob pattern="*.hvp"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.openscoreformat">
-        <glob pattern="*.osf"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.openscoreformat.osfpvg+xml">
-        <glob pattern="*.osfpvg"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.smaf-audio">
-        <glob pattern="*.saf"/>
-    </mime-type>
-    <mime-type type="application/vnd.yamaha.smaf-phrase">
-        <glob pattern="*.spf"/>
-    </mime-type>
-    <mime-type type="application/vnd.yellowriver-custom-menu">
-        <glob pattern="*.cmp"/>
-    </mime-type>
-    <mime-type type="application/vnd.zul">
-        <glob pattern="*.zir"/>
-        <glob pattern="*.zirz"/>
-    </mime-type>
-    <mime-type type="application/vnd.zzazz.deck+xml">
-        <glob pattern="*.zaz"/>
-    </mime-type>
-    <mime-type type="application/voicexml+xml">
-        <glob pattern="*.vxml"/>
-    </mime-type>
-    <mime-type type="application/watcherinfo+xml"/>
-    <mime-type type="application/whoispp-query"/>
-    <mime-type type="application/whoispp-response"/>
-    <mime-type type="application/winhlp">
-        <glob pattern="*.hlp"/>
-    </mime-type>
-    <mime-type type="application/wita"/>
-    <mime-type type="application/wordperfect5.1"/>
-    <mime-type type="application/wsdl+xml">
-        <glob pattern="*.wsdl"/>
-    </mime-type>
-    <mime-type type="application/wspolicy+xml">
-        <glob pattern="*.wspolicy"/>
-    </mime-type>
-
-    <mime-type type="application/x-123">
-        <magic priority="50">
-            <match value="0x00001a00" type="big32" offset="0" />
-            <match value="0x00000200" type="big32" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-abiword">
-        <glob pattern="*.abw"/>
-    </mime-type>
-    <mime-type type="application/x-ace-compressed">
-        <glob pattern="*.ace"/>
-    </mime-type>
-
-    <mime-type type="application/x-axcrypt">
-        <_comment>AxCrypt</_comment>
-        <glob pattern="*.axx" />
-        <magic priority="60">
-            <!-- AxCrypt block header, skip length field, then Header of type Preamble -->
-            <match value="0xc0b9072e4f93f146a015792ca1d9e821" type="string" offset="0">
-                <match value="2" type="big32" offset="17" />
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-adobe-indesign">
-        <acronym>INDD</acronym>
-        <_comment>Adobe InDesign document</_comment>
-        <glob pattern="*.indd"/>
-        <magic priority="50">
-            <match value="0x0606edf5d81d46e5bd31efe7fe74b71d" type="string" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-adobe-indesign-interchange">
-        <acronym>INX</acronym>
-        <_comment>Adobe InDesign Interchange format</_comment>
-        <magic priority="50">
-            <match value="&lt;?aid" type="string" offset="0:100"/>
-        </magic>
-        <glob pattern="*.inx"/>
-        <sub-class-of type="application/xml"/>
-    </mime-type>
-
-    <mime-type type="application/x-apple-diskimage">
-        <glob pattern="*.dmg"/>
-        <!-- <glob pattern="*.img"/> too generic -->
-        <!-- <glob pattern="*.smi"/> conflicts with SMIL -->
-    </mime-type>
-
-    <mime-type type="application/x-appleworks">
-        <glob pattern="*.cwk"/>
-    </mime-type>
-
-    <mime-type type="application/x-archive">
-        <alias type="application/x-unix-archive"/>
-        <magic priority="50">
-            <match value="=&lt;ar&gt;" type="string" offset="0"/>
-            <match value="!&lt;arch&gt;\n" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.ar"/>
-        <glob pattern="*.a"/>
-    </mime-type>
-
-    <mime-type type="application/x-arj">
-        <alias type="application/x-arj-compressed"/>
-        <magic priority="50">
-            <match value="0x60ea" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.arj"/>
-    </mime-type>
-
-    <mime-type type="application/x-authorware-bin">
-        <glob pattern="*.aab"/>
-        <glob pattern="*.x32"/>
-        <glob pattern="*.u32"/>
-        <glob pattern="*.vox"/>
-    </mime-type>
-    <mime-type type="application/x-authorware-map">
-        <glob pattern="*.aam"/>
-    </mime-type>
-    <mime-type type="application/x-authorware-seg">
-        <glob pattern="*.aas"/>
-    </mime-type>
-
-    <mime-type type="application/x-bcpio">
-        <glob pattern="*.bcpio"/>
-    </mime-type>
-
-    <mime-type type="application/x-berkeley-db">
-        <magic priority="50">
-            <match value="0x00061561" type="big32" offset="0"/>
-            <match value="0x00061561" type="host32" offset="12"/>
-            <match value="0x00061561" type="big32" offset="12"/>
-            <match value="0x00061561" type="little32" offset="12"/>
-            <match value="0x00053162" type="host32" offset="12"/>
-            <match value="0x00053162" type="big32" offset="12"/>
-            <match value="0x00053162" type="little32" offset="12"/>
-            <match value="0x00042253" type="host32" offset="12"/>
-            <match value="0x00042253" type="big32" offset="12"/>
-            <match value="0x00042253" type="little32" offset="12"/>
-            <match value="0x00040988" type="host32" offset="12"/>
-            <match value="0x00040988" type="little32" offset="12"/>
-            <match value="0x00040988" type="big32" offset="12"/>
-            <match value="0x00053162" type="host32" offset="0"/>
-            <match value="0x00053162" type="big32" offset="0"/>
-            <match value="0x00053162" type="little32" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-bibtex-text-file">
-        <magic priority="50">
-            <match value="%\ BibTeX\ `" type="string" offset="0"/>
-            <match value="%%%\ \ " type="string" offset="73"/>
-            <match value="%\ BibTeX\ standard\ bibliography\ " type="string" offset="0"/>
-            <match value="%%%\ \ @BibTeX-style-file{" type="string" offset="73"/>
-            <match value="@article{" type="string" offset="0"/>
-            <match value="@book{" type="string" offset="0"/>
-            <match value="@inbook{" type="string" offset="0"/>
-            <match value="@incollection{" type="string" offset="0"/>
-            <match value="@inproceedings{" type="string" offset="0"/>
-            <match value="@manual{" type="string" offset="0"/>
-            <match value="@misc{" type="string" offset="0"/>
-            <match value="@preamble{" type="string" offset="0"/>
-            <match value="@phdthesis{" type="string" offset="0"/>
-            <match value="@techreport{" type="string" offset="0"/>
-            <match value="@unpublished{" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.bib"/>
-        <glob pattern="*.bibtex"/>
-    </mime-type>
-
-    <mime-type type="application/x-bittorrent">
-        <magic priority="50">
-            <match value="d8:announce" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.torrent"/>
-    </mime-type>
-
-    <mime-type type="application/x-bplist">
-        <!-- The priority is 60, as .webarchive files often contain
-         (X)HTML content. The bplist magic must trump the XHTML
-         magics further within the file. This must also be
-         independent of the internal ordering of patterns within
-         MimeTypes -->
-        <magic priority="60">
-            <match value="bplist" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-bzip">
-        <magic priority="40">
-            <match value="BZh" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.bz"/>
-        <glob pattern="*.tbz"/>
-    </mime-type>
-
-    <mime-type type="application/x-bzip2">
-        <sub-class-of type="application/x-bzip"/>
-        <_comment>Bzip 2 UNIX Compressed File</_comment>
-        <magic priority="40">
-            <match value="\x42\x5a\x68\x39\x31" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.bz2"/>
-        <glob pattern="*.tbz2"/>
-        <glob pattern="*.boz"/>
-    </mime-type>
-
-    <mime-type type="application/x-cdlink">
-        <_comment>Virtual CD-ROM CD Image File</_comment>
-        <glob pattern="*.vcd"/>
-    </mime-type>
-
-    <mime-type type="application/x-chat">
-        <glob pattern="*.chat"/>
-    </mime-type>
-
-    <mime-type type="application/x-chess-pgn">
-        <glob pattern="*.pgn"/>
-    </mime-type>
-
-    <mime-type type="application/x-chrome-package">
-        <acronym>CRX</acronym>
-        <_comment>Chrome Extension Package</_comment>
-        <tika:link>https://developer.chrome.com/extensions/crx</tika:link>
-        <magic priority="50">
-            <match value="Cr24" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.crx"/>
-    </mime-type>
-
-    <mime-type type="application/x-compress">
-        <magic priority="50">
-            <match value="\037\235" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.z"/>
-    </mime-type>
-
-    <mime-type type="application/x-corelpresentations">
-        <glob pattern="*.shw"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/x-cpio">
-        <_comment>UNIX CPIO Archive</_comment>
-        <magic priority="50">
-            <match value="070707" type="little16" offset="0"/>
-            <match value="070707" type="big16" offset="0"/>
-            <match value="070707" type="string" offset="0"/>
-            <match value="070701" type="string" offset="0"/>
-            <match value="070702" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.cpio"/>
-    </mime-type>
-
-    <mime-type type="application/x-csh">
-        <glob pattern="*.csh"/>
-        <glob pattern="*.tcsh"/>
-    </mime-type>
-
-    <mime-type type="application/x-debian-package">
-        <sub-class-of type="application/x-archive"/>
-        <magic priority="60">
-            <match value="!&lt;arch&gt;\ndebian-binary" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.deb"/>
-        <glob pattern="*.udeb"/>
-    </mime-type>
-
-    <mime-type type="application/x-dex">
-        <acronym>DEX</acronym>
-        <_comment>Dalvik Executable Format</_comment>
-        <tika:link>http://source.android.com/devices/tech/dalvik/dex-format.html</tika:link>
-        <magic priority="50">
-            <match value="dex\n" type="string" offset="0">
-                <match value="\0" type="string" offset="7"/>
-            </match>
-        </magic>
-        <glob pattern="*.dex"/>
-    </mime-type>
-
-    <mime-type type="application/x-director">
-        <_comment>Shockwave Movie</_comment>
-        <glob pattern="*.dir"/>
-        <glob pattern="*.dcr"/>
-        <glob pattern="*.dxr"/>
-        <glob pattern="*.cst"/>
-        <glob pattern="*.cct"/>
-        <glob pattern="*.cxt"/>
-        <glob pattern="*.w3d"/>
-        <glob pattern="*.fgd"/>
-        <glob pattern="*.swa"/>
-    </mime-type>
-
-    <mime-type type="application/x-doom">
-        <glob pattern="*.wad"/>
-    </mime-type>
-    <mime-type type="application/x-dtbncx+xml">
-        <glob pattern="*.ncx"/>
-    </mime-type>
-    <mime-type type="application/x-dtbook+xml">
-        <glob pattern="*.dtb"/>
-    </mime-type>
-    <mime-type type="application/x-dtbresource+xml">
-        <glob pattern="*.res"/>
-    </mime-type>
-
-    <mime-type type="application/x-dvi">
-        <_comment>TeX Device Independent Document</_comment>
-        <magic priority="50">
-            <match value="\367\002" type="string" offset="0"/>
-            <match value="0x02f7" type="little16" offset="0"/>
-            <match value="\x1b\x20\x54\x65\x58\x20\x6f\x75\x74\x70\x75\x74\x20"
-                   type="string" offset="14"/>
-        </magic>
-        <glob pattern="*.dvi"/>
-    </mime-type>
-
-    <mime-type type="application/x-elc">
-        <_comment>Emacs Lisp bytecode</_comment>
-        <magic priority="50">
-            <!-- Emacs 18 -->
-            <match value="\012(" type="string" offset="0" />
-            <!-- Emacs 19 -->
-            <match value=";ELC\023\000\000\000" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.elc"/>
-    </mime-type>
-
-    <mime-type type="application/x-elf">
-        <magic priority="50">
-            <match value="\177ELF" type="string" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="message/x-emlx">
-        <magic priority="70">
-            <match value="\nRelay-Version:" type="string" offset="2:9"/>
-            <match value="\n#!\ rnews" type="string" offset="2:9"/>
-            <match value="\nN#!\ rnews" type="string" offset="2:9"/>
-            <match value="\nForward\ to" type="string" offset="2:9"/>
-            <match value="\nPipe\ to" type="string" offset="2:9"/>
-            <match value="\nReturn-Path:" type="string" offset="2:9"/>
-            <match value="\nFrom:" type="string" offset="2:9"/>
-            <match value="\nReceived:" type="string" offset="2:9"/>
-            <match value="\nMessage-ID:" type="string" offset="2:9"/>
-            <match value="\nDate:" type="string" offset="2:9"/>
-        </magic>
-        <glob pattern="*.emlx"/>
-    </mime-type>
-
-    <mime-type type="application/x-killustrator">
-        <_comment>KIllustrator File</_comment>
-        <glob pattern="*.kil"/>
-    </mime-type>
-
-    <mime-type type="application/x-object">
-        <sub-class-of type="application/x-elf"/>
-        <magic priority="50">
-            <match value="\177ELF" type="string" offset="0">
-                <match value="0x0100" type="string" offset="16"/>
-                <match value="0x0001" type="string" offset="16"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-executable">
-        <sub-class-of type="application/x-elf"/>
-        <magic priority="50">
-            <match value="\177ELF" type="string" offset="0">
-                <match value="0x0200" type="string" offset="16"/>
-                <match value="0x0002" type="string" offset="16"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-sharedlib">
-        <sub-class-of type="application/x-elf"/>
-        <magic priority="50">
-            <match value="\177ELF" type="string" offset="0">
-                <match value="0x0300" type="string" offset="16"/>
-                <match value="0x0003" type="string" offset="16"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-coredump">
-        <sub-class-of type="application/x-elf"/>
-        <magic priority="50">
-            <match value="\177ELF" type="string" offset="0">
-                <match value="0x0400" type="string" offset="16"/>
-                <match value="0x0004" type="string" offset="16"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-dosexec">
-        <_comment>DOS/Windows executable (EXE)</_comment>
-        <sub-class-of type="application/x-msdownload"/>
-        <glob pattern="*.exe"/>
-    </mime-type>
-
-    <mime-type type="application/x-emf">
-        <acronym>EMF</acronym>
-        <_comment>Extended Metafile</_comment>
-        <glob pattern="*.emf"/>
-        <magic priority="50">
-            <match value="0x01000000" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-filemaker">
-        <acronym>FP7</acronym>
-        <_comment>FileMaker Pro 7</_comment>
-        <magic priority="50">
-            <match value="0xC04842414D37" type="string" offset="14" >
-                <match value="0x4842414D323130314F43543939C102480750726F20372E30C0C0" type="string" offset="525" />
-            </match>
-        </magic>
-        <glob pattern="*.fp7" />
-    </mime-type>
-
-    <mime-type type="application/x-font-bdf">
-        <glob pattern="*.bdf"/>
-    </mime-type>
-    <mime-type type="application/x-font-dos"/>
-    <mime-type type="application/x-font-framemaker"/>
-    <mime-type type="application/x-font-ghostscript">
-        <glob pattern="*.gsf"/>
-    </mime-type>
-    <mime-type type="application/x-font-libgrx"/>
-    <mime-type type="application/x-font-linux-psf">
-        <glob pattern="*.psf"/>
-    </mime-type>
-
-    <mime-type type="application/x-font-otf">
-        <acronym>OTF</acronym>
-        <_comment>OpenType Font</_comment>
-        <glob pattern="*.otf"/>
-    </mime-type>
-
-    <mime-type type="application/x-font-pcf">
-        <glob pattern="*.pcf"/>
-    </mime-type>
-    <mime-type type="application/x-font-snf">
-        <glob pattern="*.snf"/>
-    </mime-type>
-    <mime-type type="application/x-font-speedo"/>
-    <mime-type type="application/x-font-sunos-news"/>
-
-    <mime-type type="application/x-font-ttf">
-        <acronym>TTF</acronym>
-        <_comment>TrueType Font</_comment>
-        <glob pattern="*.ttf"/>
-        <glob pattern="*.ttc"/>
-        <magic priority="40">
-            <match value="0x00010000" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-font-type1">
-        <glob pattern="*.pfa"/>
-        <glob pattern="*.pfb"/>
-        <magic priority="60">
-            <!-- Match for PFB, the binary format -->
-            <match value="\x80\x01\xFF\xFF\x00\x00%!PS-AdobeFont" type="string"
-                   mask="0xFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" offset="0"/>
-            <!-- Match for PFA, the text format" -->
-            <match value="%!PS-AdobeFont-1.0" type="string" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-font-adobe-metric">
-        <_comment>Adobe Font Metric</_comment>
-        <glob pattern="*.afm"/>
-        <glob pattern="*.acfm"/>
-        <glob pattern="*.amfm"/>
-        <magic priority="40">
-            <match value="StartFontMetrics" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-font-printer-metric">
-        <_comment>Printer Font Metric</_comment>
-        <glob pattern="*.pfm"/>
-        <magic priority="40">
-            <match value="0x0001FFFF0000436f707972" type="string" offset="0"
-                   mask="0xFFFF0000FFFFFFFFFFFFFF" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-font-vfont"/>
-
-    <mime-type type="application/x-foxmail">
-        <_comment>Foxmail Email File</_comment>
-        <magic>
-            <match value="0x1010101010101011111111111153" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-futuresplash">
-        <_comment>Macromedia FutureSplash File</_comment>
-        <glob pattern="*.spl"/>
-    </mime-type>
-
-    <mime-type type="application/x-gnucash">
-        <glob pattern="*.gnucash" />
-    </mime-type>
-
-    <mime-type type="application/x-gnumeric">
-        <alias type="application/x-Gnumeric-spreadsheet"/>
-        <magic priority="50">
-            <match value="=&lt;gmr:Workbook" type="string" offset="39" />
-        </magic>
-        <glob pattern="*.gnumeric"/>
-    </mime-type>
-
-    <mime-type type="application/x-gtar">
-        <_comment>GNU tar Compressed File Archive (GNU Tape Archive)</_comment>
-        <magic priority="50">
-            <!-- GNU tar archive -->
-            <match value="ustar  \0" type="string" offset="257" />
-        </magic>
-        <glob pattern="*.gtar"/>
-        <sub-class-of type="application/x-tar"/>
-    </mime-type>
-
-    <mime-type type="application/gzip">
-        <_comment>Gzip Compressed Archive</_comment>
-        <alias type="application/x-gzip"/>
-        <alias type="application/x-gunzip"/>
-        <alias type="application/gzip-compressed"/>
-        <alias type="application/gzipped"/>
-        <alias type="application/gzip-compressed"/>
-        <alias type="application/x-gzip-compressed"/>
-        <alias type="gzip/document"/>
-        <magic priority="45">
-            <match value="\037\213" type="string" offset="0" />
-            <match value="\x1f\x8b" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.tgz" />
-        <glob pattern="*.gz" />
-        <glob pattern="*-gz" />
-        <glob pattern="*.emz" />
-    </mime-type>
-
-    <mime-type type="application/x-hdf">
-        <_comment>Hierarchical Data Format File</_comment>
-        <magic priority="50">
-            <!-- HDF4 -->
-            <match value="0x0e031301" type="big32" offset="0"/>
-            <!-- HDF5 -->
-            <match value="\211HDF\r\n\032" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.hdf"/>
-        <glob pattern="*.he5"/>
-        <glob pattern="*.h5"/>
-    </mime-type>
-
-    <mime-type type="application/x-hwp">
-        <magic priority="50">
-            <!--
-        TIKA-330: Detection pattern based on signature strings from
-        the hwpfilter/source/hwpfile.cpp file in OpenOffice.org.
-      -->
-            <match value="HWP Document File V" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-ibooks+zip">
-        <sub-class-of type="application/epub+zip" />
-        <acronym>iBooks</acronym>
-        <_comment>Apple iBooks Author publication format</_comment>
-        <magic priority="50">
-            <match value="PK\003\004" type="string" offset="0">
-                <match value="mimetypeapplication/x-ibooks+zip" type="string" offset="30"/>
-            </match>
-        </magic>
-        <glob pattern="*.ibooks"/>
-    </mime-type>
-
-    <mime-type type="application/x-iso9660-image">
-        <acronym>ISO</acronym>
-        <_comment>ISO 9660 CD-ROM filesystem data</_comment>
-        <magic priority="50">
-            <match value="CD001" type="string" offset="32769"/>
-            <match value="CD001" type="string" offset="34817"/>
-            <match value="CD001" type="string" offset="36865"/>
-        </magic>
-        <glob pattern="*.iso"/>
-    </mime-type>
-
-    <mime-type type="application/x-itunes-ipa">
-        <sub-class-of type="application/zip"/>
-        <_comment>Apple iOS IPA AppStore file</_comment>
-        <glob pattern="*.ipa"/>
-    </mime-type>
-
-    <mime-type type="application/x-java-jnlp-file">
-        <glob pattern="*.jnlp"/>
-    </mime-type>
-
-    <mime-type type="application/x-java-pack200">
-        <glob pattern="*.pack"/>
-    </mime-type>
-
-    <mime-type type="application/x-kdelnk">
-        <magic priority="50">
-            <match value="[KDE\ Desktop\ Entry]" type="string" offset="0"/>
-            <match value="#\ KDE\ Config\ File" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-latex">
-        <_comment>LaTeX Source Document</_comment>
-        <magic priority="50">
-            <match value="%\ -*-latex-*-" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.latex"/>
-        <sub-class-of type="application/x-tex"/>
-    </mime-type>
-
-    <mime-type type="application/x-lha">
-        <magic priority="50">
-            <match value="-lzs-" type="string" offset="2"/>
-            <match value="-lh\40-" type="string" offset="2"/>
-            <match value="-lhd-" type="string" offset="2"/>
-            <match value="-lh2-" type="string" offset="2"/>
-            <match value="-lh3-" type="string" offset="2"/>
-            <match value="-lh4-" type="string" offset="2"/>
-            <match value="-lh5-" type="string" offset="2"/>
-            <match value="-lh6-" type="string" offset="2"/>
-            <match value="-lh7-" type="string" offset="2"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-lharc">
-        <magic priority="50">
-            <match value="-lh0-" type="string" offset="2"/>
-            <match value="-lh1-" type="string" offset="2"/>
-            <match value="-lz4-" type="string" offset="2"/>
-            <match value="-lz5-" type="string" offset="2"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-mobipocket-ebook">
-        <glob pattern="*.prc"/>
-        <glob pattern="*.mobi"/>
-    </mime-type>
-    <mime-type type="application/x-ms-application">
-        <glob pattern="*.application"/>
-    </mime-type>
-    <mime-type type="application/x-ms-wmd">
-        <glob pattern="*.wmd"/>
-    </mime-type>
-    <mime-type type="application/x-ms-wmz">
-        <sub-class-of type="application/x-gzip"/>
-        <glob pattern="*.wmz"/>
-    </mime-type>
-    <mime-type type="application/x-ms-xbap">
-        <glob pattern="*.xbap"/>
-    </mime-type>
-    <mime-type type="application/x-msaccess">
-        <glob pattern="*.mdb"/>
-        <magic priority="60">
-            <match value="0x000100005374616e" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msbinder">
-        <glob pattern="*.obd"/>
-    </mime-type>
-    <mime-type type="application/x-mscardfile">
-        <glob pattern="*.crd"/>
-    </mime-type>
-    <mime-type type="application/x-msclip">
-        <glob pattern="*.clp"/>
-    </mime-type>
-
-    <mime-type type="application/x-msdownload">
-        <glob pattern="*.dll"/>
-        <glob pattern="*.com"/>
-        <glob pattern="*.bat"/>
-        <magic priority="50">
-            <match value="MZ" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-ms-installer">
-        <_comment>Microsoft Windows Installer</_comment>
-        <sub-class-of type="application/x-tika-msoffice"/>
-        <alias type="application/x-windows-installer"/>
-        <alias type="application/x-msi"/>
-        <glob pattern="*.msi"/>
-        <glob pattern="*.msp"/>
-        <glob pattern="*.mst"/>
-    </mime-type>
-
-    <mime-type type="application/x-msdownload;format=pe">
-        <sub-class-of type="application/x-msdownload"/>
-        <magic priority="55">
-            <!-- Technically the header offset is stored at 0x3c, and isn't a -->
-            <!-- constant, but it's almost always set to start at 0x80 or 0xf0 -->
-            <match value="PE\000\000" type="string" offset="128"/>
-            <match value="PE\000\000" type="string" offset="240"/>
-        </magic>
-    </mime-type>
-    <!-- the PE header should be PEx00x00 then a two byte machine type -->
-    <mime-type type="application/x-msdownload;format=pe32">
-        <sub-class-of type="application/x-msdownload;format=pe"/>
-        <magic priority="60">
-            <match value="PE\000\000" type="string" offset="128">
-                <match value="0x014c" type="little16" offset="132"/>
-            </match>
-            <match value="PE\000\000" type="string" offset="240">
-                <match value="0x014c" type="little16" offset="244"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msdownload;format=pe64">
-        <sub-class-of type="application/x-msdownload;format=pe"/>
-        <magic priority="60">
-            <match value="PE\000\000" type="string" offset="128">
-                <match value="0x8664" type="little16" offset="132"/>
-            </match>
-            <match value="PE\000\000" type="string" offset="240">
-                <match value="0x8664" type="little16" offset="244"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msdownload;format=pe-itanium">
-        <sub-class-of type="application/x-msdownload;format=pe"/>
-        <magic priority="60">
-            <match value="PE\000\000" type="string" offset="128">
-                <match value="0x0200" type="little16" offset="132"/>
-            </match>
-            <match value="PE\000\000" type="string" offset="240">
-                <match value="0x0200" type="little16" offset="244"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msdownload;format=pe-armLE">
-        <sub-class-of type="application/x-msdownload;format=pe"/>
-        <magic priority="60">
-            <match value="pe\000\000" type="string" offset="128">
-                <match value="0x01c0" type="little16" offset="132"/>
-            </match>
-            <match value="pe\000\000" type="string" offset="240">
-                <match value="0x01c0" type="little16" offset="244"/>
-            </match>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msdownload;format=pe-arm7">
-        <sub-class-of type="application/x-msdownload;format=pe"/>
-        <magic priority="60">
-            <match value="pe\000\000" type="string" offset="128">
-                <match value="0x01c4" type="little16" offset="132"/>
-            </match>
-            <match value="pe\000\000" type="string" offset="240">
-                <match value="0x01c4" type="little16" offset="244"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-msmediaview">
-        <glob pattern="*.mvb"/>
-        <glob pattern="*.m13"/>
-        <glob pattern="*.m14"/>
-    </mime-type>
-    <mime-type type="application/x-msmetafile">
-        <alias type="image/x-wmf"/>
-        <acronym>WMF</acronym>
-        <_comment>Windows Metafile</_comment>
-        <glob pattern="*.wmf"/>
-        <magic priority="50">
-            <match value="0xd7cdc69a0000" type="string" offset="0"/>
-            <match value="0x010009000003" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-msmoney">
-        <glob pattern="*.mny"/>
-        <magic priority="60">
-            <match value="0x000100004D534953414D204461746162617365" type="string" offset="0" />
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-mspublisher">
-        <glob pattern="*.pub"/>
-    </mime-type>
-    <mime-type type="application/x-msschedule">
-        <glob pattern="*.scd"/>
-    </mime-type>
-    <mime-type type="application/x-msterminal">
-        <glob pattern="*.trm"/>
-    </mime-type>
-    <mime-type type="application/x-mswrite">
-        <glob pattern="*.wri"/>
-    </mime-type>
-    <mime-type type="application/x-netcdf">
-        <glob pattern="*.nc"/>
-        <glob pattern="*.cdf"/>
-    </mime-type>
-    <mime-type type="application/x-pkcs12">
-        <glob pattern="*.p12"/>
-        <glob pattern="*.pfx"/>
-    </mime-type>
-    <mime-type type="application/x-pkcs7-certificates">
-        <glob pattern="*.p7b"/>
-        <glob pattern="*.spc"/>
-    </mime-type>
-    <mime-type type="application/x-pkcs7-certreqresp">
-        <glob pattern="*.p7r"/>
-    </mime-type>
-
-    <mime-type type="application/x-prt">
-        <glob pattern="*.prt"/>
-        <magic priority="50">
-            <match value="0M3C" type="string" offset="8" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-quattro-pro">
-        <glob pattern="*.qpw"/>
-        <glob pattern="*.wb1"/>
-        <glob pattern="*.wb2"/>
-        <glob pattern="*.wb3"/>
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/x-rar-compressed">
-        <_comment>RAR archive</_comment>
-        <alias type="application/x-rar"/>
-        <magic priority="50">
-            <match value="Rar!" type="string" offset="0"/>
-            <match value="\x52\x61\x72\x21\x1a" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.rar"/>
-    </mime-type>
-
-    <mime-type type="application/x-roxio-toast">
-        <glob pattern="*.toast"/>
-        <sub-class-of type="application/x-iso9660-image"/>
-    </mime-type>
-
-    <mime-type type="application/x-rpm">
-        <_comment>RedHat Package Manager</_comment>
-        <glob pattern="*.rpm"/>
-        <magic priority="50">
-            <match value="\xed\xab\xee\xdb" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-sas">
-        <_comment>SAS Program</_comment>
-        <glob pattern="*.sas"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-    <mime-type type="application/x-sas-program-data">
-        <_comment>SAS Stored Program (DATA Step)</_comment>
-        <glob pattern="*.ss7"/>
-        <glob pattern="*.sas7bpgm"/>
-    </mime-type>
-    <mime-type type="application/x-sas-audit">
-        <_comment>SAS Audit</_comment>
-        <glob pattern="*.st7"/>
-        <glob pattern="*.sas7baud"/>
-    </mime-type>
-    <mime-type type="application/x-sas-data">
-        <_comment>SAS Data Set</_comment>
-        <glob pattern="*.sd7"/>
-        <glob pattern="*.sas7bdat"/>
-        <magic priority="40">
-            <match value="SAS FILE" type="string" offset="84" />
-        </magic>
-    </mime-type>
-    <mime-type type="application/x-sas-view">
-        <_comment>SAS Data Set View</_comment>
-        <glob pattern="*.sv7"/>
-        <glob pattern="*.sas7bvew"/>
-    </mime-type>
-    <mime-type type="application/x-sas-data-index">
-        <_comment>SAS Data Set Index</_comment>
-        <glob pattern="*.si7"/>
-        <glob pattern="*.sas7bndx"/>
-    </mime-type>
-    <mime-type type="application/x-sas-catalog">
-        <_comment>SAS Catalog</_comment>
-        <glob pattern="*.sc7"/>
-        <glob pattern="*.sas7bcat"/>
-    </mime-type>
-    <mime-type type="application/x-sas-access">
-        <_comment>SAS Access Descriptor</_comment>
-        <glob pattern="*.sa7"/>
-        <glob pattern="*.sas7bacs"/>
-    </mime-type>
-    <mime-type type="application/x-sas-fdb">
-        <_comment>SAS FDB Consolidation Database File</_comment>
-        <glob pattern="*.sf7"/>
-        <glob pattern="*.sas7bfdb"/>
-    </mime-type>
-    <mime-type type="application/x-sas-mddb">
-        <_comment>SAS MDDB Multi-Dimensional Database File</_comment>
-        <glob pattern="*.sm7"/>
-        <glob pattern="*.sas7bmdb"/>
-    </mime-type>
-    <mime-type type="application/x-sas-dmdb">
-        <_comment>SAS DMDB Data Mining Database File</_comment>
-        <glob pattern="*.s7m"/>
-        <glob pattern="*.sas7bdmd"/>
-    </mime-type>
-    <mime-type type="application/x-sas-itemstor">
-        <_comment>SAS Item Store (ItemStor) File</_comment>
-        <glob pattern="*.sr7"/>
-        <glob pattern="*.sas7bitm"/>
-    </mime-type>
-    <mime-type type="application/x-sas-utility">
-        <_comment>SAS Utility</_comment>
-        <glob pattern="*.su7"/>
-        <glob pattern="*.sas7butl"/>
-    </mime-type>
-    <mime-type type="application/x-sas-putility">
-        <_comment>SAS Permanent Utility</_comment>
-        <glob pattern="*.sp7"/>
-        <glob pattern="*.sas7bput"/>
-    </mime-type>
-    <mime-type type="application/x-sas-transport">
-        <_comment>SAS Transport File</_comment>
-        <glob pattern="*.stx"/>
-    </mime-type>
-    <mime-type type="application/x-sas-backup">
-        <_comment>SAS Backup</_comment>
-        <glob pattern="*.sas7bbak"/>
-    </mime-type>
-
-    <mime-type type="application/x-sc">
-        <magic priority="50">
-            <match value="Spreadsheet" type="string" offset="38"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-sh">
-        <_comment>UNIX/LINUX Shell Script</_comment>
-        <magic priority="50">
-            <match value="#!/" type="string" offset="0"/>
-            <match value="#!\ /" type="string" offset="0"/>
-            <match value="#!\t/" type="string" offset="0"/>
-            <match value="eval &quot;exec" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.sh"/>
-        <glob pattern="*.bash"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="application/x-shar">
-        <glob pattern="*.shar"/>
-    </mime-type>
-
-    <mime-type type="application/x-shockwave-flash">
-        <acronym>Flash</acronym>
-        <_comment>Adobe Flash</_comment>
-        <magic priority="50">
-            <match value="FWS" type="string" offset="0"/> <!-- F = Uncompressed -->
-            <match value="CWS" type="string" offset="0"/> <!-- C = Compressed   -->
-        </magic>
-        <glob pattern="*.swf"/>
-    </mime-type>
-
-    <mime-type type="application/x-silverlight-app">
-        <glob pattern="*.xap"/>
-    </mime-type>
-
-    <mime-type type="application/x-stuffit">
-        <magic priority="50">
-            <match value="StuffIt" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.sit"/>
-    </mime-type>
-
-    <mime-type type="application/x-stuffitx">
-        <glob pattern="*.sitx"/>
-    </mime-type>
-    <mime-type type="application/x-sv4cpio">
-        <glob pattern="*.sv4cpio"/>
-    </mime-type>
-    <mime-type type="application/x-sv4crc">
-        <glob pattern="*.sv4crc"/>
-    </mime-type>
-
-    <mime-type type="application/x-tar">
-        <magic priority="40">
-            <!-- POSIX tar archive -->
-            <match value="ustar\0" type="string" offset="257" />
-        </magic>
-        <glob pattern="*.tar"/>
-    </mime-type>
-
-    <mime-type type="application/x-tex">
-        <_comment>TeX Source</_comment>
-        <alias type="text/x-tex"/>
-        <magic priority="50">
-            <match value="\\input" type="string" offset="0"/>
-            <match value="\\section" type="string" offset="0"/>
-            <match value="\\setlength" type="string" offset="0"/>
-            <match value="\\documentstyle" type="string" offset="0"/>
-            <match value="\\chapter" type="string" offset="0"/>
-            <match value="\\documentclass" type="string" offset="0"/>
-            <match value="\\relax" type="string" offset="0"/>
-            <match value="\\contentsline" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.tex"/>
-    </mime-type>
-
-    <mime-type type="application/x-tex-tfm">
-        <glob pattern="*.tfm"/>
-    </mime-type>
-
-    <mime-type type="application/x-texinfo">
-        <alias type="text/x-texinfo" />
-        <magic priority="50">
-            <match value="\\input\ texinfo" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.texinfo"/>
-        <glob pattern="*.texi"/>
-    </mime-type>
-
-    <!-- =================================================================== -->
-    <!-- Microsoft Office binary file formats                                -->
-    <!-- http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx      -->
-    <!-- =================================================================== -->
-    <mime-type type="application/x-tika-msoffice">
-        <magic priority="40">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-tika-msoffice-embedded">
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-    <mime-type type="application/x-tika-msoffice-embedded;format=ole10_native">
-        <sub-class-of type="application/x-tika-msoffice-embedded"/>
-        <_comment>OLE10 Native Embedded Document</_comment>
-    </mime-type>
-    <mime-type type="application/x-tika-msoffice-embedded;format=comp_obj">
-        <sub-class-of type="application/x-tika-msoffice-embedded"/>
-        <_comment>CompObj OLE2 Embedded Document</_comment>
-    </mime-type>
-
-    <mime-type type="application/x-tika-msworks-spreadsheet">
-        <glob pattern="*.xlr"/>
-        <sub-class-of type="application/vnd.ms-excel"/>
-        <!-- this has to be highter than the Excel match -->
-        <magic priority="60">
-            <match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
-                <match value="W\x00k\x00s\x00S\x00S\x00W\x00o\x00r\x00k\x00B\x00o\x00o\x00k" type="string" offset="1152:4096" />
-            </match>
-        </magic>
-    </mime-type>
-
-    <!-- =================================================================== -->
-    <!-- Office Open XML file formats                                        -->
-    <!-- http://www.ecma-international.org/publications/standards/Ecma-376.htm -->
-    <!-- =================================================================== -->
-    <mime-type type="application/x-tika-ooxml">
-        <sub-class-of type="application/zip"/>
-        <magic priority="50">
-            <match value="PK\003\004" type="string" offset="0">
-                <match value="[Content_Types].xml" type="string" offset="30"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <!-- Note - password protected OOXML files are actually stored in -->
-    <!--  an OLE2 (application/x-tika-msoffice) container -->
-    <mime-type type="application/x-tika-ooxml-protected">
-        <sub-class-of type="application/x-tika-ooxml"/>
-        <_comment>Password Protected OOXML File</_comment>
-    </mime-type>
-
-    <!-- Older StarOffice formats extend up the Microsoft OLE2 format -->
-    <mime-type type="application/x-tika-staroffice">
-        <sub-class-of type="application/x-tika-msoffice"/>
-    </mime-type>
-
-    <mime-type type="application/x-uc2-compressed">
-        <magic priority="50">
-            <match value="UC2\x1a" type="string" offset="0" />
-        </magic>
-        <glob pattern="*.uc2"/>
-    </mime-type>
-    <mime-type type="application/x-ustar">
-        <glob pattern="*.ustar"/>
-    </mime-type>
-
-    <mime-type type="application/x-vmdk">
-        <acronym>VMDK</acronym>
-        <_comment>Virtual Disk Format</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/VMDK</tika:link>
-        <glob pattern="*.vmdk"/>
-    </mime-type>
-
-    <mime-type type="application/x-wais-source">
-        <glob pattern="*.src"/>
-    </mime-type>
-    <mime-type type="application/x-webarchive">
-        <sub-class-of type="application/x-bplist"/>
-        <glob pattern="*.webarchive"/>
-    </mime-type>
-    <mime-type type="application/x-x509-ca-cert">
-        <glob pattern="*.der"/>
-        <glob pattern="*.crt"/>
-    </mime-type>
-    <mime-type type="application/x-xfig">
-        <glob pattern="*.fig"/>
-    </mime-type>
-    <mime-type type="application/x-xpinstall">
-        <glob pattern="*.xpi"/>
-    </mime-type>
-
-    <mime-type type="application/x-xmind">
-        <_comment>XMind Pro</_comment>
-        <sub-class-of type="application/zip"/>
-        <glob pattern="*.xmind"/>
-        <!-- .xmap is also used, but that extension is more common elsewhere -->
-        <!-- <glob pattern="*.xmap"/> -->
-    </mime-type>
-
-    <mime-type type="application/x-xz">
-        <glob pattern="*.xz"/>
-        <magic priority="50">
-            <match value="\3757zXZ\000" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="application/x-zoo">
-        <magic priority="50">
-            <match value="0xfdc4a7dc" type="little32" offset="20"/>
-        </magic>
-        <glob pattern="*.zoo"/>
-    </mime-type>
-
-    <mime-type type="application/x400-bp"/>
-    <mime-type type="application/xcap-att+xml"/>
-    <mime-type type="application/xcap-caps+xml"/>
-    <mime-type type="application/xcap-el+xml"/>
-    <mime-type type="application/xcap-error+xml"/>
-    <mime-type type="application/xcap-ns+xml"/>
-    <mime-type type="application/xcon-conference-info-diff+xml"/>
-    <mime-type type="application/xcon-conference-info+xml"/>
-    <mime-type type="application/xenc+xml">
-        <glob pattern="*.xenc"/>
-    </mime-type>
-
-    <mime-type type="application/xhtml+xml">
-        <magic priority="50">
-            <match value="&lt;html xmlns=" type="string" offset="0:8192"/>
-        </magic>
-        <root-XML namespaceURI="http://www.w3.org/1999/xhtml" localName="html"/>
-        <glob pattern="*.xhtml"/>
-        <glob pattern="*.xht"/>
-    </mime-type>
-
-    <mime-type type="application/xhtml-voice+xml"/>
-
-    <mime-type type="application/xml">
-        <acronym>XML</acronym>
-        <_comment>Extensible Markup Language</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/Xml</tika:link>
-        <tika:uti>public.xml</tika:uti>
-        <alias type="text/xml"/>
-        <alias type="application/x-xml"/>
-        <magic priority="50">
-            <match value="&lt;?xml" type="string" offset="0"/>
-            <match value="&lt;?XML" type="string" offset="0"/>
-            <match value="&lt;!--" type="string" offset="0"/>
-            <!-- UTF-8 BOM -->
-            <match value="0xEFBBBF3C3F786D6C" type="string" offset="0"/>
-            <!-- UTF-16 LE/BE -->
-            <match value="0xFFFE3C003F0078006D006C00" type="string" offset="0"/>
-            <match value="0xFEFF003C003F0078006D006C" type="string" offset="0"/>
-            <!-- TODO: Add matches for the other possible XML encoding schemes -->
-        </magic>
-        <glob pattern="*.xml"/>
-        <glob pattern="*.xsl"/>
-        <glob pattern="*.xsd"/>
-        <sub-class-of type="text/plain" />
-    </mime-type>
-
-    <mime-type type="application/xml-dtd">
-        <_comment>XML Document Type Definition</_comment>
-        <sub-class-of type="text/plain"/>
-        <alias type="text/x-dtd"/>
-        <glob pattern="*.dtd"/>
-    </mime-type>
-
-    <mime-type type="application/xml-external-parsed-entity">
-        <alias type="text/xml-external-parsed-entity"/>
-    </mime-type>
-
-    <mime-type type="application/xmpp+xml"/>
-    <mime-type type="application/xop+xml">
-        <glob pattern="*.xop"/>
-    </mime-type>
-
-    <mime-type type="application/xslfo+xml">
-        <alias type="text/xsl"/>
-        <acronym>XSLFO</acronym>
-        <_comment>XSL Format</_comment>
-        <root-XML localName="root"
-                  namespaceURI="http://www.w3.org/1999/XSL/Format"/>
-        <glob pattern="*.xslfo"/>
-        <glob pattern="*.fo"/>
-    </mime-type>
-
-    <mime-type type="application/xslt+xml">
-        <alias type="text/xsl"/>
-        <acronym>XSLT</acronym>
-        <_comment>XSL Transformations</_comment>
-        <root-XML localName="stylesheet"
-                  namespaceURI="http://www.w3.org/1999/XSL/Transform"/>
-        <glob pattern="*.xslt"/>
-    </mime-type>
-
-    <mime-type type="application/xspf+xml">
-        <acronym>XSPF</acronym>
-        <_comment>XML Shareable Playlist Format</_comment>
-        <root-XML localName="playlist"
-                  namespaceURI="http://xspf.org/ns/0/"/>
-        <glob pattern="*.xspf"/>
-    </mime-type>
-
-    <mime-type type="application/xv+xml">
-        <glob pattern="*.mxml"/>
-        <glob pattern="*.xhvml"/>
-        <glob pattern="*.xvml"/>
-        <glob pattern="*.xvm"/>
-    </mime-type>
-
-    <mime-type type="application/zip">
-        <_comment>Compressed Archive File</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/ZIP_(file_format)</tika:link>
-        <tika:uti>com.pkware.zip-archive</tika:uti>
-        <alias type="application/x-zip-compressed"/>
-        <magic priority="50">
-            <match value="PK\003\004" type="string" offset="0"/>
-            <match value="PK\005\006" type="string" offset="0"/>
-            <match value="PK\x07\x08" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.zip"/>
-    </mime-type>
-
-    <mime-type type="application/x-7z-compressed">
-        <acronym>7zip</acronym>
-        <_comment>7-zip archive</_comment>
-        <magic priority="50">
-            <!-- Magic: '7', 'z', 0xBC, 0xAF, 0x27, 0x1C -->
-            <match value="7z" type="string" offset="0:1" >
-                <match value="0xBCAF271C" type="string" offset="2:5" />
-            </match>
-        </magic>
-        <glob pattern="*.7z" />
-    </mime-type>
-
-    <mime-type type="audio/32kadpcm"/>
-    <mime-type type="audio/3gpp"/>
-    <mime-type type="audio/3gpp2"/>
-    <mime-type type="audio/ac3"/>
-    <mime-type type="audio/adpcm">
-        <glob pattern="*.adp"/>
-    </mime-type>
-
-    <mime-type type="audio/amr">
-        <glob pattern="*.amr"/>
-        <magic priority="40">
-            <!-- Specific match for the original AMR format -->
-            <match value="#!AMR\n" type="string" offset="0"/>
-            <!-- General match for AMR subtypes we don't have entries for -->
-            <match value="#!AMR" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="audio/amr-wb">
-        <sub-class-of type="audio/amr"/>
-        <magic priority="50">
-            <match value="#!AMR-WB\n" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="audio/amr-wb+">
-        <sub-class-of type="audio/amr"/>
-        <!-- TIKA-1156 sample needed - might be "#!AMR-WB+\n" ? -->
-    </mime-type>
-
-    <mime-type type="audio/asc"/>
-
-    <mime-type type="audio/basic">
-        <_comment>uLaw/AU Audio File</_comment>
-        <magic priority="20">
-            <match value=".snd" type="string" offset="0">
-                <match value="1" type="big32" offset="12"/>
-                <match value="2" type="big32" offset="12"/>
-                <match value="3" type="big32" offset="12"/>
-                <match value="4" type="big32" offset="12"/>
-                <match value="5" type="big32" offset="12"/>
-                <match value="6" type="big32" offset="12"/>
-                <match value="7" type="big32" offset="12"/>
-            </match>
-            <match offset="0" type="string" value="\x2e\x73\x6e\x64\x00\x00\x00"/>
-        </magic>
-        <glob pattern="*.au"/>
-        <glob pattern="*.snd"/>
-    </mime-type>
-
-    <mime-type type="audio/bv16"/>
-    <mime-type type="audio/bv32"/>
-    <mime-type type="audio/clearmode"/>
-    <mime-type type="audio/cn"/>
-    <mime-type type="audio/dat12"/>
-    <mime-type type="audio/dls"/>
-    <mime-type type="audio/dsr-es201108"/>
-    <mime-type type="audio/dsr-es202050"/>
-    <mime-type type="audio/dsr-es202211"/>
-    <mime-type type="audio/dsr-es202212"/>
-    <mime-type type="audio/dvi4"/>
-    <mime-type type="audio/eac3"/>
-    <mime-type type="audio/evrc"/>
-    <mime-type type="audio/evrc-qcp"/>
-    <mime-type type="audio/evrc0"/>
-    <mime-type type="audio/evrc1"/>
-    <mime-type type="audio/evrcb"/>
-    <mime-type type="audio/evrcb0"/>
-    <mime-type type="audio/evrcb1"/>
-    <mime-type type="audio/evrcwb"/>
-    <mime-type type="audio/evrcwb0"/>
-    <mime-type type="audio/evrcwb1"/>
-    <mime-type type="audio/example"/>
-    <mime-type type="audio/g719"/>
-    <mime-type type="audio/g722"/>
-    <mime-type type="audio/g7221"/>
-    <mime-type type="audio/g723"/>
-    <mime-type type="audio/g726-16"/>
-    <mime-type type="audio/g726-24"/>
-    <mime-type type="audio/g726-32"/>
-    <mime-type type="audio/g726-40"/>
-    <mime-type type="audio/g728"/>
-    <mime-type type="audio/g729"/>
-    <mime-type type="audio/g7291"/>
-    <mime-type type="audio/g729d"/>
-    <mime-type type="audio/g729e"/>
-    <mime-type type="audio/gsm"/>
-    <mime-type type="audio/gsm-efr"/>
-    <mime-type type="audio/ilbc"/>
-    <mime-type type="audio/l16"/>
-    <mime-type type="audio/l20"/>
-    <mime-type type="audio/l24"/>
-    <mime-type type="audio/l8"/>
-    <mime-type type="audio/lpc"/>
-
-    <mime-type type="audio/midi">
-        <acronym>MIDI</acronym>
-        <_comment>Musical Instrument Digital Interface</_comment>
-        <magic priority ="20">
-            <match type="string" value="MThd" offset="0"/>
-        </magic>
-        <glob pattern="*.mid"/>
-        <glob pattern="*.midi"/>
-        <glob pattern="*.kar"/>
-        <glob pattern="*.rmi"/>
-    </mime-type>
-
-    <mime-type type="audio/mobile-xmf"/>
-    <mime-type type="audio/mp4">
-        <alias type="audio/x-m4a"/>
-        <alias type="audio/x-mp4a"/>
-        <magic priority="60">
-            <match value="ftypM4A " type="string" offset="4"/>
-            <match value="ftypM4B " type="string" offset="4"/>
-            <match value="ftypF4A " type="string" offset="4"/>
-            <match value="ftypF4B " type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.mp4a"/>
-        <glob pattern="*.m4a"/>
-        <glob pattern="*.m4b"/>
-    </mime-type>
-    <mime-type type="audio/mp4a-latm"/>
-    <mime-type type="audio/mpa"/>
-    <mime-type type="audio/mpa-robust"/>
-
-    <mime-type type="audio/mpeg">
-        <alias type="audio/x-mpeg"/>
-        <acronym>MP3</acronym>
-        <_comment>MPEG-1 Audio Layer 3</_comment>
-        <magic priority="20">
-            <!-- http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html -->
-            <!-- Bit pattern for first two bytes: 11111111 111VVLLC    -->
-            <!-- VV = MPEG Audio Version ID; 10 = V2, 11 = V1          -->
-            <!-- LL = Layer description; 01 = L3, 10 = L2, 11 = L1     -->
-            <!-- C = Protection bit; 0 = CRC, 1 = no CRC               -->
-            <match value="0xfff2" type="string" offset="0"/> <!-- V2, L3, CRC -->
-            <match value="0xfff3" type="string" offset="0"/> <!-- V2, L3      -->
-            <match value="0xfff4" type="string" offset="0"/> <!-- V2, L2, CRC -->
-            <match value="0xfff5" type="string" offset="0"/> <!-- V2, L2      -->
-            <match value="0xfff6" type="string" offset="0"/> <!-- V2, L1, CRC -->
-            <match value="0xfff7" type="string" offset="0"/> <!-- V2, L1      -->
-            <match value="0xfffa" type="string" offset="0"/> <!-- V1, L3, CRC -->
-            <match value="0xfffb" type="string" offset="0"/> <!-- V1, L3      -->
-            <match value="0xfffc" type="string" offset="0"/> <!-- V1, L2, CRC -->
-            <match value="0xfffd" type="string" offset="0"/> <!-- V1, L2      -->
-            <!-- TIKA-417: This is the UTF-16 LE byte order mark! -->
-            <!-- match value="0xfffe" type="string" offset="0"/ --> <!-- V1, L1, CRC -->
-            <match value="0xffff" type="string" offset="0"/> <!-- V1, L1      -->
-            <match value="ID3" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.mpga"/>
-        <glob pattern="*.mp2"/>
-        <glob pattern="*.mp2a"/>
-        <glob pattern="*.mp3"/>
-        <glob pattern="*.m2a"/>
-        <glob pattern="*.m3a"/>
-    </mime-type>
-
-    <mime-type type="audio/mpeg4-generic"/>
-
-    <mime-type type="audio/ogg">
-        <_comment>Ogg Vorbis Audio</_comment>
-        <glob pattern="*.oga"/>
-        <sub-class-of type="application/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/vorbis">
-        <_comment>Ogg Vorbis Codec Compressed WAV File</_comment>
-        <alias type="application/x-ogg"/>
-        <magic priority="60">
-            <!-- For a single stream file -->
-            <match value="OggS\000.......................\001vorbis" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <glob pattern="*.ogg"/>
-        <sub-class-of type="audio/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/x-oggflac">
-        <_comment>Ogg Packaged Free Lossless Audio Codec</_comment>
-        <alias type="audio/x-ogg-flac"/>
-        <magic priority="60">
-            <!-- For a single stream file -->
-            <match value="OggS\000.......................FLAC" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="audio/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/x-oggpcm">
-        <_comment>Ogg Packaged Unompressed WAV File</_comment>
-        <alias type="audio/x-ogg-pcm"/>
-        <magic priority="60">
-            <!-- For a single stream file -->
-            <match value="OggS\000.......................PCM     " type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="audio/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/opus">
-        <_comment>Ogg Opus Codec Compressed WAV File</_comment>
-        <magic priority="60">
-            <!-- For a single stream file -->
-            <match value="OggS\000.......................OpusHead" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <glob pattern="*.opus"/>
-        <sub-class-of type="audio/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/speex">
-        <_comment>Ogg Speex Codec Compressed WAV File</_comment>
-        <alias type="application/x-speex"/>
-        <magic priority="60">
-            <!-- For a single stream file -->
-            <match value="OggS\000.......................Speex   " type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <glob pattern="*.spx"/>
-        <sub-class-of type="audio/ogg"/>
-    </mime-type>
-
-    <mime-type type="audio/parityfec"/>
-    <mime-type type="audio/pcma"/>
-    <mime-type type="audio/pcma-wb"/>
-    <mime-type type="audio/pcmu-wb"/>
-    <mime-type type="audio/pcmu"/>
-
-    <mime-type type="audio/prs.sid">
-        <magic priority="50">
-            <match value="PSID" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="audio/qcelp"/>
-    <mime-type type="audio/red"/>
-    <mime-type type="audio/rtp-enc-aescm128"/>
-    <mime-type type="audio/rtp-midi"/>
-    <mime-type type="audio/rtx"/>
-    <mime-type type="audio/smv"/>
-    <mime-type type="audio/smv0"/>
-    <mime-type type="audio/smv-qcp"/>
-    <mime-type type="audio/sp-midi"/>
-    <mime-type type="audio/t140c"/>
-    <mime-type type="audio/t38"/>
-    <mime-type type="audio/telephone-event"/>
-    <mime-type type="audio/tone"/>
-    <mime-type type="audio/ulpfec"/>
-    <mime-type type="audio/vdvi"/>
-    <mime-type type="audio/vmr-wb"/>
-    <mime-type type="audio/vnd.3gpp.iufp"/>
-    <mime-type type="audio/vnd.4sb"/>
-    <mime-type type="audio/vnd.audiokoz"/>
-    <mime-type type="audio/vnd.adobe.soundbooth">
-        <glob pattern="*.asnd"/>
-    </mime-type>
-    <mime-type type="audio/vnd.celp"/>
-    <mime-type type="audio/vnd.cisco.nse"/>
-    <mime-type type="audio/vnd.cmles.radio-events"/>
-    <mime-type type="audio/vnd.cns.anp1"/>
-    <mime-type type="audio/vnd.cns.inf1"/>
-    <mime-type type="audio/vnd.digital-winds">
-        <glob pattern="*.eol"/>
-    </mime-type>
-    <mime-type type="audio/vnd.dlna.adts"/>
-    <mime-type type="audio/vnd.dolby.heaac.1"/>
-    <mime-type type="audio/vnd.dolby.heaac.2"/>
-    <mime-type type="audio/vnd.dolby.mlp"/>
-    <mime-type type="audio/vnd.dolby.mps"/>
-    <mime-type type="audio/vnd.dolby.pl2"/>
-    <mime-type type="audio/vnd.dolby.pl2x"/>
-    <mime-type type="audio/vnd.dolby.pl2z"/>
-    <mime-type type="audio/vnd.dts">
-        <glob pattern="*.dts"/>
-    </mime-type>
-    <mime-type type="audio/vnd.dts.hd">
-        <glob pattern="*.dtshd"/>
-    </mime-type>
-    <mime-type type="audio/vnd.everad.plj"/>
-    <mime-type type="audio/vnd.hns.audio"/>
-    <mime-type type="audio/vnd.lucent.voice">
-        <glob pattern="*.lvp"/>
-    </mime-type>
-    <mime-type type="audio/vnd.ms-playready.media.pya">
-        <glob pattern="*.pya"/>
-    </mime-type>
-    <mime-type type="audio/vnd.nokia.mobile-xmf"/>
-    <mime-type type="audio/vnd.nortel.vbk"/>
-    <mime-type type="audio/vnd.nuera.ecelp4800">
-        <glob pattern="*.ecelp4800"/>
-    </mime-type>
-    <mime-type type="audio/vnd.nuera.ecelp7470">
-        <glob pattern="*.ecelp7470"/>
-    </mime-type>
-    <mime-type type="audio/vnd.nuera.ecelp9600">
-        <glob pattern="*.ecelp9600"/>
-    </mime-type>
-    <mime-type type="audio/vnd.octel.sbc"/>
-    <mime-type type="audio/vnd.qcelp"/>
-    <mime-type type="audio/vnd.rhetorex.32kadpcm"/>
-    <mime-type type="audio/vnd.sealedmedia.softseal.mpeg"/>
-    <mime-type type="audio/vnd.vmx.cvsd"/>
-    <mime-type type="audio/vorbis-config"/>
-    <mime-type type="audio/x-aac">
-        <glob pattern="*.aac"/>
-    </mime-type>
-
-    <mime-type type="audio/x-adbcm">
-        <magic priority="20">
-            <match value=".snd" type="string" offset="0">
-                <match value="23" type="big32" offset="12"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="audio/x-aiff">
-        <alias type="audio/aiff"/>
-        <acronym>AIFF</acronym>
-        <_comment>Audio Interchange File Format</_comment>
-        <magic priority="20">
-            <match value="FORM....AIFF" type="string" offset="0"
-                   mask="0xFFFFFFFF00000000FFFFFFFF"/>
-            <match value="FORM....AIFC" type="string" offset="0"
-                   mask="0xFFFFFFFF00000000FFFFFFFF"/>
-            <!-- Amiga IFF sound sample, somewhat like the more modern AIFF -->
-            <match value="FORM....8SVX" type="string" offset="0"
-                   mask="0xFFFFFFFF00000000FFFFFFFF"/>
-            <match offset="0" type="string" value="\x46\x4f\x52\x4d\x00"/>
-        </magic>
-        <glob pattern="*.aif"/>
-        <glob pattern="*.aiff"/>
-        <glob pattern="*.aifc"/>
-    </mime-type>
-
-    <mime-type type="audio/x-dec-basic">
-        <magic priority="20">
-            <match value="0x0064732E" type="big32" offset="0">
-                <match value="1" type="big32" offset="12"/>
-                <match value="2" type="big32" offset="12"/>
-                <match value="3" type="big32" offset="12"/>
-                <match value="4" type="big32" offset="12"/>
-                <match value="5" type="big32" offset="12"/>
-                <match value="6" type="big32" offset="12"/>
-                <match value="7" type="big32" offset="12"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="audio/x-dec-adbcm">
-        <magic priority="20">
-            <match value="0x0064732E" type="big32" offset="0">
-                <match value="23" type="big32" offset="12"/>
-            </match>
-        </magic>
-    </mime-type>
-
-    <mime-type type="audio/x-flac">
-        <acronym>FLAC</acronym>
-        <_comment>Free Lossless Audio Codec</_comment>
-        <magic priority="50">
-            <match value="fLaC" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.flac"/>
-    </mime-type>
-
-    <mime-type type="audio/x-mod">
-        <acronym>MOD</acronym>
-        <magic priority="50">
-            <match value="Extended\ Module:" type="string" offset="0"/>
-            <match value="BMOD2STM" type="string" offset="21"/>
-            <match value="M.K." type="string" offset="1080"/>
-            <match value="M!K!" type="string" offset="1080"/>
-            <match value="FLT4" type="string" offset="1080"/>
-            <match value="FLT8" type="string" offset="1080"/>
-            <match value="4CHN" type="string" offset="1080"/>
-            <match value="6CHN" type="string" offset="1080"/>
-            <match value="8CHN" type="string" offset="1080"/>
-            <match value="CD81" type="string" offset="1080"/>
-            <match value="OKTA" type="string" offset="1080"/>
-            <match value="16CN" type="string" offset="1080"/>
-            <match value="32CN" type="string" offset="1080"/>
-            <match value="IMPM" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.mod"/>
-    </mime-type>
-
-    <mime-type type="audio/x-mpegurl">
-        <_comment>MP3 Playlist File</_comment>
-        <magic priority="50">
-            <match offset="0" type="string" value="\x23\x45\x58\x54\x4d\x33\x55\x0d\x0a"/>
-        </magic>
-        <glob pattern="*.m3u"/>
-    </mime-type>
-
-    <mime-type type="audio/x-ms-wax">
-        <glob pattern="*.wax"/>
-    </mime-type>
-    <mime-type type="audio/x-ms-wma">
-        <sub-class-of type="video/x-ms-asf" />
-        <glob pattern="*.wma"/>
-        <magic priority="50">
-            <match value="Windows Media Audio" type="unicodeLE" offset="0:8192" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="audio/x-pn-realaudio">
-        <_comment>Real Audio</_comment>
-        <alias type="audio/x-realaudio" />
-        <magic priority="50">
-            <match value="0x2e7261fd" type="big32" offset="0"/>
-        </magic>
-        <glob pattern="*.ram"/>
-        <glob pattern="*.ra"/>
-    </mime-type>
-
-    <mime-type type="audio/x-pn-realaudio-plugin">
-        <_comment>RealMedia Player Plug-in</_comment>
-        <glob pattern="*.rmp"/>
-        <!-- <glob pattern="*.rpm"/> - conflicts with application/x-rpm -->
-    </mime-type>
-
-    <mime-type type="audio/x-wav">
-        <acronym>WAV</acronym>
-        <magic priority="20">
-            <match value="RIFF....WAVE" type="string" offset="0"
-                   mask="0xFFFFFFFF00000000FFFFFFFF"/>
-        </magic>
-        <glob pattern="*.wav"/>
-    </mime-type>
-
-    <mime-type type="chemical/x-cdx">
-        <magic priority="50">
-            <match value="VjCD0100" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.cdx"/>
-    </mime-type>
-    <mime-type type="chemical/x-cif">
-        <glob pattern="*.cif"/>
-    </mime-type>
-    <mime-type type="chemical/x-cmdf">
-        <glob pattern="*.cmdf"/>
-    </mime-type>
-    <mime-type type="chemical/x-cml">
-        <glob pattern="*.cml"/>
-    </mime-type>
-    <mime-type type="chemical/x-csml">
-        <glob pattern="*.csml"/>
-    </mime-type>
-
-    <mime-type type="chemical/x-pdb">
-        <_comment>Brookhaven Protein Databank File</_comment>
-        <glob pattern="*.pdb"/>
-    </mime-type>
-
-    <mime-type type="chemical/x-xyz">
-        <glob pattern="*.xyz"/>
-    </mime-type>
-
-    <mime-type type="image/x-ms-bmp">
-        <alias type="image/bmp"/>
-        <acronym>BMP</acronym>
-        <_comment>Windows bitmap</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/BMP_file_format</tika:link>
-        <tika:uti>com.microsoft.bmp</tika:uti>
-        <magic priority="50">
-            <match value="BM" type="string" offset="0">
-                <match value="0x0100" type="string" offset="26">
-                    <match value="0x0000" type="string" offset="28"/>
-                    <match value="0x0100" type="string" offset="28"/>
-                    <match value="0x0400" type="string" offset="28"/>
-                    <match value="0x0800" type="string" offset="28"/>
-                    <match value="0x1000" type="string" offset="28"/>
-                    <match value="0x1800" type="string" offset="28"/>
-                    <match value="0x2000" type="string" offset="28"/>
-                </match>
-            </match>
-        </magic>
-        <glob pattern="*.bmp"/>
-        <glob pattern="*.dib"/>
-    </mime-type>
-
-    <mime-type type="image/cgm">
-        <acronym>CGM</acronym>
-        <_comment>Computer Graphics Metafile</_comment>
-        <magic priority="50">
-            <match value="BEGMF" type="string" offset="0"/>
-            <match value="0x0020" mask="0xffe0" type="string" offset="0">
-                <match value="0x10220001" type="string" offset="2:64"/>
-                <match value="0x10220002" type="string" offset="2:64"/>
-                <match value="0x10220003" type="string" offset="2:64"/>
-                <match value="0x10220004" type="string" offset="2:64"/>
-            </match>
-        </magic>
-        <glob pattern="*.cgm"/>
-    </mime-type>
-
-    <mime-type type="image/example"/>
-
-    <mime-type type="image/fits">
-        <sub-class-of type="application/fits"/>
-    </mime-type>
-
-    <mime-type type="image/g3fax">
-        <glob pattern="*.g3"/>
-    </mime-type>
-
-    <mime-type type="image/gif">
-        <acronym>GIF</acronym>
-        <_comment>Graphics Interchange Format</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/Gif</tika:link>
-        <tika:uti>com.compuserve.gif</tika:uti>
-        <magic priority="50">
-            <match value="GIF87a" type="string" offset="0"/>
-            <match value="GIF89a" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.gif"/>
-    </mime-type>
-
-    <mime-type type="image/ief">
-        <glob pattern="*.ief"/>
-    </mime-type>
-
-    <mime-type type="image/jp2">
-        <sub-class-of type="image/x-jp2-container" />
-        <acronym>JP2</acronym>
-        <_comment>JPEG 2000 Part 1 (JP2)</_comment>
-        <magic priority="50">
-            <match value="0x0000000C6A5020200D0A870A" type="string" offset="0">
-                <match value="0x6a703220" type="string" offset="20"/>
-            </match>
-        </magic>
-        <glob pattern="*.jp2"/>
-    </mime-type>
-
-    <mime-type type="image/jpeg">
-        <acronym>JPEG</acronym>
-        <_comment>Joint Photographic Experts Group</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/Jpeg</tika:link>
-        <tika:uti>public.jpeg</tika:uti>
-        <magic priority="50">
-            <!-- FFD8 is the SOI (Start Of Image) marker.              -->
-            <!-- It is followed by another marker that starts with FF. -->
-            <match value="0xffd8ff" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.jpg"/>
-        <glob pattern="*.jpeg"/>
-        <glob pattern="*.jpe"/>
-        <glob pattern="*.jif"/>
-        <glob pattern="*.jfif"/>
-        <glob pattern="*.jfi"/>
-    </mime-type>
-
-    <mime-type type="image/jpm">
-        <alias type="video/jpm"/>
-        <sub-class-of type="image/x-jp2-container" />
-        <acronym>JP2</acronym>
-        <_comment>JPEG 2000 Part 6 (JPM)</_comment>
-        <magic priority="50">
-            <match value="0x0000000C6A5020200D0A870A" type="string" offset="0">
-                <match value="0x6a706d20" type="string" offset="20"/>
-            </match>
-        </magic>
-        <glob pattern="*.jpm"/>
-        <glob pattern="*.jpgm"/>
-    </mime-type>
-
-    <mime-type type="image/jpx">
-        <sub-class-of type="image/x-jp2-container" />
-        <acronym>JP2</acronym>
-        <_comment>JPEG 2000 Part 2 (JPX)</_comment>
-        <magic priority="50">
-            <match value="0x0000000C6A5020200D0A870A" type="string" offset="0">
-                <match value="0x6a707820" type="string" offset="20"/>
-            </match>
-        </magic>
-        <glob pattern="*.jpf"/>
-    </mime-type>
-
-    <mime-type type="image/naplps"/>
-
-    <mime-type type="image/nitf">
-        <alias type="image/ntf"/>
-        <magic priority="50">
-            <match value="NITF01.10" type="string" offset="0"/>
-            <match value="NITF02.000" type="string" offset="0"/>
-            <match value="NITF02.100" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.ntf"/>
-        <glob pattern="*.nitf"/>
-    </mime-type>
-
-    <mime-type type="image/png">
-        <acronym>PNG</acronym>
-        <_comment>Portable Network Graphics</_comment>
-        <magic priority="50">
-            <match value="\x89PNG\x0d\x0a\x1a\x0a" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.png"/>
-    </mime-type>
-
-    <mime-type type="image/prs.btif">
-        <glob pattern="*.btif"/>
-    </mime-type>
-    <mime-type type="image/prs.pti"/>
-
-    <mime-type type="image/svg+xml">
-        <sub-class-of type="application/xml"/>
-        <acronym>SVG</acronym>
-        <_comment>Scalable Vector Graphics</_comment>
-        <root-XML localName="svg" namespaceURI="http://www.w3.org/2000/svg"/>
-        <glob pattern="*.svg"/>
-        <glob pattern="*.svgz"/>
-    </mime-type>
-
-    <mime-type type="image/t38"/>
-
-    <mime-type type="image/tiff">
-        <acronym>TIFF</acronym>
-        <_comment>Tagged Image File Format</_comment>
-        <magic priority="50">
-            <!-- MM.* = Big endian (M=Motorola) and 0x002a in big endian    -->
-            <match value="MM\x00\x2a" type="string" offset="0"/>
-            <!-- II*. = Little endian (I=Intel) and 0x002a in little endian -->
-            <match value="II\x2a\x00" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.tiff"/>
-        <glob pattern="*.tif"/>
-    </mime-type>
-
-    <mime-type type="image/tiff-fx"/>
-
-    <mime-type type="image/vnd.adobe.photoshop">
-        <acronym>PSD</acronym>
-        <_comment>Photoshop Image</_comment>
-        <alias type="image/x-psd"/>
-        <alias type="application/photoshop"/>
-        <magic priority="50">
-            <!-- Version of 0x0001 is PSD -->
-            <match value="8BPS\x00\x01" type="string" offset="0"/>
-            <!-- Version of 0x0002 is PSB -->
-            <match value="8BPS\x00\x02" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.psd"/>
-    </mime-type>
-
-    <mime-type type="image/vnd.adobe.premiere">
-        <glob pattern="*.ppj"/>
-        <root-XML localName="PremiereData"/>
-        <sub-class-of type="application/xml"/>
-    </mime-type>
-
-    <mime-type type="image/vnd.cns.inf2"/>
-    <mime-type type="image/vnd.djvu">
-        <glob pattern="*.djvu"/>
-        <glob pattern="*.djv"/>
-    </mime-type>
-
-    <mime-type type="image/vnd.dwg">
-        <acronym>DWG</acronym>
-        <_comment>AutoCad Drawing</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/.dwg</tika:link>
-        <alias type="image/x-dwg"/>
-        <alias type="application/acad"/>
-        <alias type="application/x-acad"/>
-        <alias type="application/autocad_dwg"/>
-        <alias type="application/dwg"/>
-        <alias type="application/x-dwg"/>
-        <alias type="application/x-autocad"/>
-        <alias type="image/vnd.dwg"/>
-        <alias type="drawing/dwg"/>
-        <glob pattern="*.dwg"/>
-        <magic priority="50">
-            <match value="MC0.0" type="string" offset="0"/>
-            <match value="AC1.2" type="string" offset="0"/>
-            <match value="AC1.40" type="string" offset="0"/>
-            <match value="AC1.50" type="string" offset="0"/>
-            <match value="AC2.10" type="string" offset="0"/>
-            <match value="AC2.21" type="string" offset="0"/>
-            <match value="AC2.22" type="string" offset="0"/>
-            <!-- "AC" followed by four numbers -->
-            <match value="AC0000" type="string" offset="0"
-                   mask="0xFFFFF0F0F0F0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="image/vnd.dxf">
-        <acronym>DXF</acronym>
-        <_comment>AutoCAD DXF</_comment>
-        <tika:link>http://en.wikipedia.org/wiki/AutoCAD_DXF</tika:link>
-        <glob pattern="*.dxf"/>
-    </mime-type>
-    <mime-type type="image/vnd.fastbidsheet">
-        <glob pattern="*.fbs"/>
-    </mime-type>
-    <mime-type type="image/vnd.fpx">
-        <glob pattern="*.fpx"/>
-    </mime-type>
-    <mime-type type="image/vnd.fst">
-        <glob pattern="*.fst"/>
-    </mime-type>
-    <mime-type type="image/vnd.fujixerox.edmics-mmr">
-        <glob pattern="*.mmr"/>
-    </mime-type>
-    <mime-type type="image/vnd.fujixerox.edmics-rlc">
-        <glob pattern="*.rlc"/>
-    </mime-type>
-    <mime-type type="image/vnd.globalgraphics.pgb"/>
-
-    <mime-type type="image/vnd.microsoft.icon">
-        <acronym>ICO</acronym>
-        <tika:link>http://en.wikipedia.org/wiki/.ico</tika:link>
-        <tika:uti>com.microsoft.ico</tika:uti>
-        <alias type="image/x-icon" />
-        <magic priority="50">
-            <match value="\102\101\050\000\000\000\056\000\000\000\000\000\000\000"
-                   type="string" offset="0"/>
-            <match value="\000\000\001\000" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.ico"/>
-    </mime-type>
-
-    <mime-type type="image/vnd.mix"/>
-    <mime-type type="image/vnd.ms-modi">
-        <glob pattern="*.mdi"/>
-        <_comment>Microsoft Document Imaging</_comment>
-        <magic priority="50">
-            <match value="0x45502A00" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="image/vnd.net-fpx">
-        <glob pattern="*.npx"/>
-    </mime-type>
-    <mime-type type="image/vnd.radiance"/>
-    <mime-type type="image/vnd.sealed.png"/>
-    <mime-type type="image/vnd.sealedmedia.softseal.gif"/>
-    <mime-type type="image/vnd.sealedmedia.softseal.jpg"/>
-    <mime-type type="image/vnd.svf"/>
-
-    <mime-type type="image/vnd.wap.wbmp">
-        <_comment>Wireless Bitmap File Format</_comment>
-        <glob pattern="*.wbmp"/>
-    </mime-type>
-
-    <mime-type type="image/vnd.xiff">
-        <glob pattern="*.xif"/>
-    </mime-type>
-    <mime-type type="image/x-cmu-raster">
-        <glob pattern="*.ras"/>
-    </mime-type>
-    <mime-type type="image/x-cmx">
-        <glob pattern="*.cmx"/>
-    </mime-type>
-
-    <mime-type type="image/x-freehand">
-        <_comment>FreeHand image</_comment>
-        <magic priority="50">
-            <match value="AGD2" type="string" offset="0"/>
-            <match value="AGD3" type="string" offset="0"/>
-            <match value="AGD4" type="string" offset="0"/>
-            <match value="FreeHand10" type="string" offset="0:24"/>
-            <match value="FreeHand11" type="string" offset="0:24"/>
-            <match value="FreeHand12" type="string" offset="0:24"/>
-        </magic>
-        <glob pattern="*.fh"/>
-        <glob pattern="*.fhc"/>
-        <glob pattern="*.fh4"/>
-        <glob pattern="*.fh40"/>
-        <glob pattern="*.fh5"/>
-        <glob pattern="*.fh50"/>
-        <glob pattern="*.fh7"/>
-        <glob pattern="*.fh8"/>
-        <glob pattern="*.fh9"/>
-        <glob pattern="*.fh10"/>
-        <glob pattern="*.fh11"/>
-        <glob pattern="*.fh12"/>
-        <glob pattern="*.ft7"/>
-        <glob pattern="*.ft8"/>
-        <glob pattern="*.ft9"/>
-        <glob pattern="*.ft10"/>
-        <glob pattern="*.ft11"/>
-        <glob pattern="*.ft12"/>
-    </mime-type>
-
-    <mime-type type="image/x-jp2-codestream">
-        <_comment>JPEG 2000 Codestream</_comment>
-        <magic priority="25">
-            <match value="0xff4fff51" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.j2c"/>
-    </mime-type>
-
-    <mime-type type="image/x-jp2-container">
-        <_comment>JPEG 2000 Container Format</_comment>
-        <magic priority="50">
-            <match value="0x0000000C6A5020200D0A870A" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="image/x-niff">
-        <_comment>Navy Interchange File Format</_comment>
-        <magic priority="50">
-            <match value="IIN1" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="image/x-pcx">
-        <glob pattern="*.pcx"/>
-    </mime-type>
-    <mime-type type="image/x-pict">
-        <_comment>Apple Macintosh QuickDraw/PICT Format</_comment>
-        <magic priority="50">
-            <match value="0x001102FF0C00" type="string" offset="522"/>
-        </magic>
-        <glob pattern="*.pic"/>
-        <glob pattern="*.pct"/>
-        <glob pattern="*.pict"/>
-    </mime-type>
-
-    <mime-type type="image/x-portable-anymap">
-        <acronym>PNM</acronym>
-        <_comment>Portable Any Map</_comment>
-        <glob pattern="*.pnm" />
-    </mime-type>
-
-    <mime-type type="image/x-portable-bitmap">
-        <sub-class-of type="image/x-portable-anymap"/>
-        <acronym>PBM</acronym>
-        <_comment>Portable Bit Map</_comment>
-        <magic priority="50">
-            <match value="P1" type="string" offset="0"/>
-            <match value="P4" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.pbm"/>
-    </mime-type>
-
-    <mime-type type="image/x-portable-graymap">
-        <sub-class-of type="image/x-portable-anymap"/>
-        <acronym>PGM</acronym>
-        <_comment>Portable Graymap Graphic</_comment>
-        <magic priority="50">
-            <match value="P2" type="string" offset="0"/>
-            <match value="P5" type="string" offset="0"/>
-            <match offset="0" type="string" value="\x50\x35\x0a"/>
-        </magic>
-        <glob pattern="*.pgm"/>
-    </mime-type>
-
-    <mime-type type="image/x-portable-pixmap">
-        <sub-class-of type="image/x-portable-anymap"/>
-        <acronym>PXM</acronym>
-        <_comment>UNIX Portable Bitmap Graphic</_comment>
-        <magic priority="50">
-            <match value="P3" type="string" offset="0"/>
-            <match value="P6" type="string" offset="0"/>
-            <match value="P7" type="string" offset="0"/>
-            <match offset="0" type="string" value="\x50\x34\x0a"/>
-        </magic>
-        <glob pattern="*.ppm"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-adobe">
-        <acronym>DNG</acronym>
-        <_comment>Adobe Digital Negative</_comment>
-        <glob pattern="*.dng"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-hasselblad">
-        <_comment>Hasselblad raw image</_comment>
-        <glob pattern="*.3fr"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-fuji">
-        <_comment>Fuji raw image</_comment>
-        <glob pattern="*.raf"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-canon">
-        <_comment>Canon raw image</_comment>
-        <glob pattern="*.crw"/>
-        <glob pattern="*.cr2"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-kodak">
-        <_comment>Kodak raw image</_comment>
-        <glob pattern="*.k25"/>
-        <glob pattern="*.kdc"/>
-        <glob pattern="*.dcs"/>
-        <glob pattern="*.drf"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-minolta">
-        <_comment>Minolta raw image</_comment>
-        <glob pattern="*.mrw"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-nikon">
-        <_comment>Nikon raw image</_comment>
-        <glob pattern="*.nef"/>
-        <glob pattern="*.nrw"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-olympus">
-        <_comment>Olympus raw image</_comment>
-        <glob pattern="*.orf"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-pentax">
-        <_comment>Pentax raw image</_comment>
-        <glob pattern="*.ptx"/>
-        <glob pattern="*.pef"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-sony">
-        <_comment>Sony raw image</_comment>
-        <glob pattern="*.arw"/>
-        <glob pattern="*.srf"/>
-        <glob pattern="*.sr2"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-sigma">
-        <_comment>Sigma raw image</_comment>
-        <glob pattern="*.x3f"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-epson">
-        <_comment>Epson raw image</_comment>
-        <glob pattern="*.erf"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-mamiya">
-        <_comment>Mamiya raw image</_comment>
-        <glob pattern="*.mef"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-leaf">
-        <_comment>Leaf raw image</_comment>
-        <glob pattern="*.mos"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-panasonic">
-        <_comment>Panasonic raw image</_comment>
-        <glob pattern="*.raw"/>
-        <glob pattern="*.rw2"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-phaseone">
-        <_comment>Phase One raw image</_comment>
-        <glob pattern="*.iiq"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-red">
-        <_comment>Red raw image</_comment>
-        <glob pattern="*.r3d"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-imacon">
-        <_comment>Imacon raw image</_comment>
-        <glob pattern="*.fff"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-logitech">
-        <_comment>Logitech raw image</_comment>
-        <glob pattern="*.pxn"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-casio">
-        <_comment>Casio raw image</_comment>
-        <glob pattern="*.bay"/>
-    </mime-type>
-
-    <mime-type type="image/x-raw-rawzor">
-        <_comment>Rawzor raw image</_comment>
-        <glob pattern="*.rwz"/>
-    </mime-type>
-
-    <mime-type type="image/x-rgb">
-        <_comment>Silicon Graphics RGB Bitmap</_comment>
-        <magic priority="50">
-            <match offset="0" type="string" value="\x01\xda\x01\x01\x00\x03"/>
-        </magic>
-        <glob pattern="*.rgb"/>
-    </mime-type>
-
-    <mime-type type="image/x-xbitmap">
-        <magic priority="50">
-            <match value="/* XPM" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.xbm"/>
-        <sub-class-of type="text/x-c"/>
-    </mime-type>
-
-    <mime-type type="image/x-xcf">
-        <_comment>GIMP Image File</_comment>
-        <alias type="image/xcf"/>
-        <magic priority="50">
-            <match type="string" value="gimp xcf " offset="0"/>
-        </magic>
-        <glob pattern="*.xcf"/>
-    </mime-type>
-
-    <mime-type type="image/x-xpixmap">
-        <glob pattern="*.xpm"/>
-    </mime-type>
-
-    <mime-type type="image/x-xwindowdump">
-        <_comment>X Windows Dump</_comment>
-        <glob pattern="*.xwd"/>
-    </mime-type>
-
-    <mime-type type="message/cpim"/>
-    <mime-type type="message/delivery-status"/>
-    <mime-type type="message/disposition-notification"/>
-    <mime-type type="message/example"/>
-    <mime-type type="message/external-body"/>
-    <mime-type type="message/global"/>
-    <mime-type type="message/global-delivery-status"/>
-    <mime-type type="message/global-disposition-notification"/>
-    <mime-type type="message/global-headers"/>
-    <mime-type type="message/http"/>
-    <mime-type type="message/imdn+xml"/>
-
-    <mime-type type="message/news">
-        <magic priority="50">
-            <match value="Path:" type="string" offset="0" />
-            <match value="Xref:" type="string" offset="0" />
-            <match value="Article" type="string" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="message/partial"/>
-
-    <mime-type type="message/rfc822">
-        <magic priority="50">
-            <match value="Relay-Version:" type="stringignorecase" offset="0"/>
-            <match value="#!\ rnews" type="string" offset="0"/>
-            <match value="N#!\ rnews" type="string" offset="0"/>
-            <match value="Forward\ to" type="string" offset="0"/>
-            <match value="Pipe\ to" type="string" offset="0"/>
-            <match value="Return-Path:" type="stringignorecase" offset="0"/>
-            <match value="From:" type="stringignorecase" offset="0"/>
-            <match value="Received:" type="stringignorecase" offset="0"/>
-            <match value="Message-ID:" type="stringignorecase" offset="0"/>
-            <match value="Date:" type="string" offset="0"/>
-            <match value="MIME-Version:" type="stringignorecase" offset="0"/>
-            <match value="X-Notes-Item:" type="string" offset="0">
-                <match value="Message-ID:" type="string" offset="0:8192"/>
-            </match>
-        </magic>
-        <glob pattern="*.eml"/>
-        <glob pattern="*.mime"/>
-        <glob pattern="*.mht"/>
-        <glob pattern="*.mhtml"/>
-    </mime-type>
-
-    <mime-type type="message/s-http"/>
-    <mime-type type="message/sip"/>
-    <mime-type type="message/sipfrag"/>
-    <mime-type type="message/tracking-status"/>
-    <mime-type type="message/vnd.si.simp"/>
-
-    <mime-type type="model/example"/>
-
-    <mime-type type="model/iges">
-        <_comment>Initial Graphics Exchange Specification Format</_comment>
-        <glob pattern="*.igs"/>
-        <glob pattern="*.iges"/>
-    </mime-type>
-
-    <mime-type type="model/mesh">
-        <glob pattern="*.msh"/>
-        <glob pattern="*.mesh"/>
-        <glob pattern="*.silo"/>
-    </mime-type>
-
-    <mime-type type="model/vnd.dwf">
-        <glob pattern="*.dwf"/>
-    </mime-type>
-    <mime-type type="model/vnd.dwfx+xps">
-        <_comment>AutoCAD Design Web Format</_comment>
-        <glob pattern="*.dwfx"/>
-        <sub-class-of type="application/x-tika-ooxml"/>
-    </mime-type>
-
-    <mime-type type="model/vnd.flatland.3dml"/>
-    <mime-type type="model/vnd.gdl">
-        <glob pattern="*.gdl"/>
-    </mime-type>
-    <mime-type type="model/vnd.gs-gdl"/>
-    <mime-type type="model/vnd.gs.gdl"/>
-    <mime-type type="model/vnd.gtw">
-        <glob pattern="*.gtw"/>
-    </mime-type>
-    <mime-type type="model/vnd.moml+xml"/>
-    <mime-type type="model/vnd.mts">
-        <glob pattern="*.mts"/>
-    </mime-type>
-    <mime-type type="model/vnd.parasolid.transmit.binary"/>
-    <mime-type type="model/vnd.parasolid.transmit.text"/>
-    <mime-type type="model/vnd.vtu">
-        <glob pattern="*.vtu"/>
-    </mime-type>
-
-    <mime-type type="model/vrml">
-        <glob pattern="*.wrl"/>
-        <glob pattern="*.vrml"/>
-    </mime-type>
-
-    <mime-type type="multipart/alternative"/>
-    <mime-type type="multipart/appledouble"/>
-    <mime-type type="multipart/byteranges"/>
-    <mime-type type="multipart/digest"/>
-    <mime-type type="multipart/encrypted"/>
-    <mime-type type="multipart/example"/>
-    <mime-type type="multipart/form-data"/>
-    <mime-type type="multipart/header-set"/>
-    <mime-type type="multipart/mixed"/>
-    <mime-type type="multipart/parallel"/>
-    <mime-type type="multipart/related"/>
-    <mime-type type="multipart/report"/>
-    <mime-type type="multipart/signed"/>
-    <mime-type type="multipart/voice-message"/>
-
-    <mime-type type="text/x-actionscript">
-        <_comment>ActionScript source code</_comment>
-        <glob pattern="*.as"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-ada">
-        <_comment>Ada source code</_comment>
-        <glob pattern="*.ada"/>
-        <glob pattern="*.adb"/>
-        <glob pattern="*.ads"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-applescript">
-        <_comment>AppleScript source code</_comment>
-        <glob pattern="*.applescript"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/asp">
-        <_comment>Active Server Page</_comment>
-        <glob pattern="*.asp"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/aspdotnet">
-        <_comment>ASP .NET</_comment>
-        <glob pattern="*.aspx"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-aspectj">
-        <_comment>AspectJ source code</_comment>
-        <glob pattern="*.aj"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-assembly">
-        <alias type="text/x-asm"/>
-        <_comment>Assembler source code</_comment>
-        <glob pattern="*.s"/>
-        <glob pattern="*.S"/>
-        <glob pattern="*.asm"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/calendar">
-        <glob pattern="*.ics"/>
-        <glob pattern="*.ifb"/>
-    </mime-type>
-
-    <mime-type type="text/css">
-        <_comment>Cascading Style Sheet</_comment>
-        <glob pattern="*.css"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/csv">
-        <glob pattern="*.csv"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/directory"/>
-    <mime-type type="text/dns"/>
-    <mime-type type="text/ecmascript"/>
-    <mime-type type="text/enriched"/>
-    <mime-type type="text/example"/>
-
-    <mime-type type="text/html">
-        <_comment>HyperText Markup Language</_comment>
-        <acronym>HTML</acronym>
-        <tika:uti>public.html</tika:uti>
-        <!-- TIKA-327: if you encounter tags in the HTML
-          with no declared namespace, it's not XHTML, it's just
-          bad HTML, unfortunately.
-     -->
-        <root-XML localName="html"/>
-        <root-XML localName="HTML"/>
-        <root-XML localName="link"/>
-        <root-XML localName="LINK"/>
-        <root-XML localName="body"/>
-        <root-XML localName="BODY"/>
-        <root-XML localName="p"/>
-        <root-XML localName="P"/>
-        <root-XML localName="script"/>
-        <root-XML localName="SCRIPT"/>
-        <root-XML localName="frameset"/>
-        <root-XML localName="FRAMESET"/>
-        <!-- The magic priority needs to be lower than that of -->
-        <!--  files which contain HTML within them, eg mime emails -->
-        <magic priority="40">
-            <match value="&lt;!DOCTYPE HTML" type="string" offset="0:64"/>
-            <match value="&lt;!doctype html" type="string" offset="0:64"/>
-            <match value="&lt;HEAD" type="string" offset="0:64"/>
-            <match value="&lt;head" type="string" offset="0:64"/>
-            <match value="&lt;TITLE" type="string" offset="0:64"/>
-            <match value="&lt;title" type="string" offset="0:64"/>
-            <!-- note on the offset value here: this can only be as big as
-           MimeTypes#getMinLength(). If you set the offset value to larger
-           than that size, the magic will only be compared to up to
-           MimeTypes#getMinLength() bytes.
-       -->
-            <match value="&lt;html" type="string" offset="0:8192"/>
-            <match value="&lt;HTML" type="string" offset="0:64"/>
-            <match value="&lt;BODY" type="string" offset="0"/>
-            <match value="&lt;body" type="string" offset="0"/>
-            <match value="&lt;DIV" type="string" offset="0"/>
-            <match value="&lt;div" type="string" offset="0"/>
-            <match value="&lt;TITLE" type="string" offset="0"/>
-            <match value="&lt;title" type="string" offset="0"/>
-            <match value="&lt;h1" type="string" offset="0"/>
-            <match value="&lt;H1" type="string" offset="0"/>
-            <match value="&lt;!doctype HTML" type="string" offset="0"/>
-            <match value="&lt;!DOCTYPE html" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.html"/>
-        <glob pattern="*.htm"/>
-    </mime-type>
-
-    <mime-type type="text/parityfec"/>
-
-    <mime-type type="text/plain">
-        <magic priority="20">
-            <match value="This is TeX," type="string" offset="0"/>
-            <match value="This is METAFONT," type="string" offset="0"/>
-            <match value="/*" type="string" offset="0"/>
-            <match value="//" type="string" offset="0"/>
-            <match value=";;" type="string" offset="0"/>
-            <!-- UTF-16BE BOM -->
-            <match value="0xfeff" type="string" offset="0"/>
-            <!-- UTF-16LE BOM -->
-            <match value="0xfffe" type="string" offset="0"/>
-            <!-- UTF-8 BOM -->
-            <match value="0xefbbbf" type="string" offset="0"/>
-        </magic>
-
-        <glob pattern="*.txt"/>
-        <glob pattern="*.text"/>
-        <glob pattern="*.conf"/>
-        <glob pattern="*.cfg"/>
-        <glob pattern="*.def"/>
-        <glob pattern="*.list"/>
-        <glob pattern="*.in"/>
-
-        <!-- TIKA-85: http://www.apache.org/dev/svn-eol-style.txt -->
-        <glob pattern="INSTALL"/>
-        <glob pattern="KEYS"/>
-        <glob pattern="Makefile"/>
-        <glob pattern="README"/>
-        <glob pattern="abs-linkmap"/>
-        <glob pattern="abs-menulinks"/>
-        <glob pattern="*.aart"/>
-        <glob pattern="*.ac"/>
-        <glob pattern="*.am"/>
-        <glob pattern="*.classpath"/>
-        <glob pattern="*.cmd"/>
-        <glob pattern="*.config"/>
-        <glob pattern="*.cwiki"/>
-        <glob pattern="*.data"/>
-        <glob pattern="*.dcl"/>
-        <glob pattern="*.egrm"/>
-        <glob pattern="*.ent"/>
-        <glob pattern="*.ft"/>
-        <glob pattern="*.fn"/>
-        <glob pattern="*.fv"/>
-        <glob pattern="*.grm"/>
-        <glob pattern="*.g"/>
-        <glob pattern=".htaccess"/>
-        <glob pattern="*.ihtml"/>
-        <glob pattern="*.jmx"/>
-        <glob pattern="*.junit"/>
-        <glob pattern="*.jx"/>
-        <glob pattern="*.manifest"/>
-        <glob pattern="*.m4"/>
-        <glob pattern="*.mf"/>
-        <glob pattern="*.MF"/>
-        <glob pattern="*.meta"/>
-        <glob pattern="*.n3"/>
-        <glob pattern="*.pen"/>
-        <glob pattern="*.pod"/>
-        <glob pattern="*.pom"/>
-        <glob pattern="*.project"/>
-        <glob pattern="*.properties"/>
-        <glob pattern="*.rng"/>
-        <glob pattern="*.rnx"/>
-        <glob pattern="*.roles"/>
-        <glob pattern="*.tld"/>
-        <glob pattern="*.types"/>
-        <glob pattern="*.vm"/>
-        <glob pattern="*.vsl"/>
-        <glob pattern="*.wsdd"/>
-        <glob pattern="*.xargs"/>
-        <glob pattern="*.xcat"/>
-        <glob pattern="*.xconf"/>
-        <glob pattern="*.xegrm"/>
-        <glob pattern="*.xgrm"/>
-        <glob pattern="*.xlex"/>
-        <glob pattern="*.xlog"/>
-        <glob pattern="*.xmap"/>
-        <glob pattern="*.xroles"/>
-        <glob pattern="*.xsamples"/>
-        <glob pattern="*.xsp"/>
-        <glob pattern="*.xweb"/>
-        <glob pattern="*.xwelcome"/>
-    </mime-type>
-
-    <mime-type type="text/prs.fallenstein.rst"/>
-    <mime-type type="text/prs.lines.tag">
-        <glob pattern="*.dsc"/>
-    </mime-type>
-    <mime-type type="text/red"/>
-    <mime-type type="text/rfc822-headers"/>
-    <mime-type type="text/richtext">
-        <glob pattern="*.rtx"/>
-    </mime-type>
-
-    <mime-type type="text/rtp-enc-aescm128"/>
-    <mime-type type="text/rtx"/>
-    <mime-type type="text/sgml">
-        <glob pattern="*.sgml"/>
-        <glob pattern="*.sgm"/>
-    </mime-type>
-    <mime-type type="text/t140"/>
-    <mime-type type="text/tab-separated-values">
-        <glob pattern="*.tsv"/>
-    </mime-type>
-
-    <mime-type type="text/troff">
-        <_comment>Roff/nroff/troff/groff Unformatted Manual Page (UNIX)</_comment>
-        <alias type="application/x-troff"/>
-        <alias type="application/x-troff-man"/>
-        <alias type="application/x-troff-me"/>
-        <alias type="application/x-troff-ms"/>
-        <magic priority="50">
-            <match value=".\\&quot;" type="string" offset="0"/>
-            <match value="'\\&quot;" type="string" offset="0"/>
-            <match value="'.\\&quot;" type="string" offset="0"/>
-            <match value="\\&quot;" type="string" offset="0"/>
-            <match value="'''" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.t"/>
-        <glob pattern="*.tr"/>
-        <glob pattern="*.roff"/>
-        <glob pattern="*.man"/>
-        <glob pattern="*.me"/>
-        <glob pattern="*.ms"/>
-    </mime-type>
-
-    <mime-type type="text/ulpfec"/>
-    <mime-type type="text/uri-list">
-        <glob pattern="*.uri"/>
-        <glob pattern="*.uris"/>
-        <glob pattern="*.urls"/>
-    </mime-type>
-    <mime-type type="text/vnd.abc"/>
-    <mime-type type="text/vnd.curl">
-        <glob pattern="*.curl"/>
-    </mime-type>
-    <mime-type type="text/vnd.curl.dcurl">
-        <glob pattern="*.dcurl"/>
-    </mime-type>
-    <mime-type type="text/vnd.curl.scurl">
-        <glob pattern="*.scurl"/>
-    </mime-type>
-    <mime-type type="text/vnd.curl.mcurl">
-        <glob pattern="*.mcurl"/>
-    </mime-type>
-    <mime-type type="text/vnd.dmclientscript"/>
-    <mime-type type="text/vnd.esmertec.theme-descriptor"/>
-    <mime-type type="text/vnd.fly">
-        <glob pattern="*.fly"/>
-    </mime-type>
-    <mime-type type="text/vnd.fmi.flexstor">
-        <glob pattern="*.flx"/>
-    </mime-type>
-    <mime-type type="text/vnd.graphviz">
-        <glob pattern="*.gv"/>
-    </mime-type>
-    <mime-type type="text/vnd.in3d.3dml">
-        <glob pattern="*.3dml"/>
-    </mime-type>
-    <mime-type type="text/vnd.in3d.spot">
-        <glob pattern="*.spot"/>
-    </mime-type>
-    <mime-type type="text/vnd.iptc.anpa">
-        <acronym>ANPA</acronym>
-        <_comment>American Newspaper Publishers Association Wire Feeds</_comment>
-        <glob pattern="*.anpa"/>
-        <magic priority="50">
-            <match value="\x16\x16\x01" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-    <mime-type type="text/vnd.iptc.newsml"/>
-    <mime-type type="text/vnd.iptc.nitf"/>
-    <mime-type type="text/vnd.latex-z"/>
-    <mime-type type="text/vnd.motorola.reflex"/>
-    <mime-type type="text/vnd.ms-mediapackage"/>
-    <mime-type type="text/vnd.net2phone.commcenter.command"/>
-    <mime-type type="text/vnd.si.uricatalogue"/>
-    <mime-type type="text/vnd.sun.j2me.app-descriptor">
-        <glob pattern="*.jad"/>
-    </mime-type>
-    <mime-type type="text/vnd.trolltech.linguist"/>
-    <mime-type type="text/vnd.wap.si"/>
-    <mime-type type="text/vnd.wap.sl"/>
-    <mime-type type="text/vnd.wap.wml">
-        <glob pattern="*.wml"/>
-    </mime-type>
-
-    <mime-type type="text/vnd.wap.wmlscript">
-        <_comment>WML Script</_comment>
-        <glob pattern="*.wmls"/>
-    </mime-type>
-
-    <mime-type type="text/x-awk">
-        <_comment>AWK script</_comment>
-        <magic priority="50">
-            <match value="#!/bin/gawk" type="string" offset="0"/>
-            <match value="#! /bin/gawk" type="string" offset="0"/>
-            <match value="#!/usr/bin/gawk" type="string" offset="0"/>
-            <match value="#! /usr/bin/gawk" type="string" offset="0"/>
-            <match value="#!/usr/local/bin/gawk" type="string" offset="0"/>
-            <match value="#! /usr/local/bin/gawk" type="string" offset="0"/>
-            <match value="#!/bin/awk" type="string" offset="0"/>
-            <match value="#! /bin/awk" type="string" offset="0"/>
-            <match value="#!/usr/bin/awk" type="string" offset="0"/>
-            <match value="#! /usr/bin/awk" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.awk"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-basic">
-        <_comment>Basic source code</_comment>
-        <glob pattern="*.bas"/>
-        <glob pattern="*.Bas"/>
-        <glob pattern="*.BAS"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-c++hdr">
-        <_comment>C++ source code header</_comment>
-        <glob pattern="*.hpp"/>
-        <glob pattern="*.hxx"/>
-        <glob pattern="*.hh"/>
-        <glob pattern="*.H"/>
-        <glob pattern="*.h++"/>
-        <glob pattern="*.hp"/>
-        <glob pattern="*.HPP"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-c++src">
-        <_comment>C++ source code</_comment>
-        <glob pattern="*.cpp"/>
-        <glob pattern="*.cxx"/>
-        <glob pattern="*.cc"/>
-        <glob pattern="*.C"/>
-        <glob pattern="*.c++"/>
-        <glob pattern="*.CPP"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-cgi">
-        <_comment>CGI script</_comment>
-        <glob pattern="*.cgi"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-chdr">
-        <_comment>C source code header</_comment>
-        <glob pattern="*.h"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-clojure">
-        <_comment>Clojure source code</_comment>
-        <glob pattern="*.clj"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-coffeescript">
-        <_comment>CoffeeScript source code</_comment>
-        <glob pattern="*.coffee"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-csrc">
-        <alias type="text/x-c"/>
-        <_comment>C source code</_comment>
-        <glob pattern="*.c"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-csharp">
-        <_comment>C# source code</_comment>
-        <glob pattern="*.cs"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-cobol">
-        <_comment>COBOL source code</_comment>
-        <glob pattern="*.cbl"/>
-        <glob pattern="*.Cbl"/>
-        <glob pattern="*.CBL"/>
-        <glob pattern="*.cob"/>
-        <glob pattern="*.Cob"/>
-        <glob pattern="*.COB"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-coldfusion">
-        <_comment>ColdFusion source code</_comment>
-        <glob pattern="*.cfm"/>
-        <glob pattern="*.cfml"/>
-        <glob pattern="*.cfc"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-common-lisp">
-        <_comment>Common Lisp source code</_comment>
-        <glob pattern="*.cl"/>
-        <glob pattern="*.jl"/>
-        <glob pattern="*.lisp"/>
-        <glob pattern="*.lsp"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-diff">
-        <magic priority="50">
-            <match value="diff\ " type="string" offset="0"/>
-            <match value="***\ " type="string" offset="0"/>
-            <match value="Only\ in\ " type="string" offset="0"/>
-            <match value="Common\ subdirectories:\ " type="string" offset="0"/>
-            <match value="Index:" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.diff"/>
-        <glob pattern="*.patch"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-eiffel">
-        <_comment>Eiffel source code</_comment>
-        <glob pattern="*.e"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-emacs-lisp">
-        <_comment>Emacs Lisp source code</_comment>
-        <glob pattern="*.el"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-erlang">
-        <_comment>Erlang source code</_comment>
-        <glob pattern="*.erl"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-expect">
-        <_comment>Expect Script</_comment>
-        <glob pattern="*.exp"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-forth">
-        <_comment>Forth source code</_comment>
-        <glob pattern="*.4th"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-fortran">
-        <_comment>Fortran source code</_comment>
-        <glob pattern="*.f"/>
-        <glob pattern="*.F"/>
-        <glob pattern="*.for"/>
-        <glob pattern="*.f77"/>
-        <glob pattern="*.f90"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-go">
-        <_comment>Go source code</_comment>
-        <glob pattern="*.go"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-groovy">
-        <_comment>Groovy source code</_comment>
-        <glob pattern="*.groovy"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-haskell">
-        <_comment>Haskell source code</_comment>
-        <glob pattern="*.hs"/>
-        <glob pattern="*.lhs"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-idl">
-        <_comment>Inteface Definition Language</_comment>
-        <glob pattern="*.idl"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-ini">
-        <_comment>Configuration file</_comment>
-        <glob pattern="*.ini"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-java-source">
-        <_comment>Java source code</_comment>
-        <alias type="text/x-java" />
-        <glob pattern="*.java"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-jsp">
-        <_comment>Java Server Page</_comment>
-        <alias type="application/x-httpd-jsp"/>
-        <sub-class-of type="text/plain"/>
-        <magic priority="50">
-            <match value="&lt;%@" type="string" offset="0"/>
-            <match value="&lt;%--" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.jsp"/>
-    </mime-type>
-
-    <mime-type type="text/x-less">
-        <_comment>LESS source code</_comment>
-        <glob pattern="*.less"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-lex">
-        <_comment>Lex/Flex source code</_comment>
-        <glob pattern="*.l"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-log">
-        <_comment>application log</_comment>
-        <glob pattern="*.log"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-lua">
-        <_comment>Lua source code</_comment>
-        <glob pattern="*.lua"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-ml">
-        <_comment>ML source code</_comment>
-        <glob pattern="*.ml"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-matlab">
-        <_comment>Matlab source code</_comment>
-        <magic priority="50">
-            <match value="function [" type="string" offset="0"/>
-        </magic>
-        <!-- <glob pattern="*.m"/> - conflicts with text/x-objcsrc -->
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="application/x-matlab-data">
-        <comment>MATLAB data file</comment>
-        <alias type="application/matlab-mat"/>
-        <magic priority="50">
-            <match value="MATLAB" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.mat"/>
-    </mime-type>
-
-    <mime-type type="text/x-modula">
-        <_comment>Modula source code</_comment>
-        <glob pattern="*.m3"/>
-        <glob pattern="*.i3"/>
-        <glob pattern="*.mg"/>
-        <glob pattern="*.ig"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-objcsrc">
-        <_comment>Objective-C source code</_comment>
-        <glob pattern="*.m"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-ocaml">
-        <_comment>Ocaml source code</_comment>
-        <glob pattern="*.ocaml"/>
-        <glob pattern="*.mli"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-pascal">
-        <_comment>Pascal source code</_comment>
-        <glob pattern="*.p"/>
-        <glob pattern="*.pp"/>
-        <glob pattern="*.pas"/>
-        <glob pattern="*.PAS"/>
-        <glob pattern="*.dpr"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-perl">
-        <_comment>Perl script</_comment>
-        <magic priority="50">
-            <match value="eval \&quot;exec /usr/local/bin/perl" type="string" offset="0"/>
-            <match value="#!/bin/perl" type="string" offset="0"/>
-            <match value="#!/bin/env perl" type="string" offset="0"/>
-            <match value="#!/usr/bin/perl" type="string" offset="0"/>
-            <match value="#!/usr/local/bin/perl" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.pl"/>
-        <glob pattern="*.pm"/>
-        <glob pattern="*.al"/>
-        <glob pattern="*.perl"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-php">
-        <_comment>PHP script</_comment>
-        <magic priority="50">
-            <match value="&lt;?php" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.php"/>
-        <glob pattern="*.php3"/>
-        <glob pattern="*.php4"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-prolog">
-        <_comment>Prolog source code</_comment>
-        <glob pattern="*.pro"/>
-        <!-- <glob pattern="*.pl"/> - conflicts with text/x-perl -->
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-python">
-        <_comment>Python script</_comment>
-        <magic priority="50">
-            <match value="#!/bin/python" type="string" offset="0"/>
-            <match value="#! /bin/python" type="string" offset="0"/>
-            <match value="eval &quot;exec /bin/python" type="string" offset="0"/>
-            <match value="#!/usr/bin/python" type="string" offset="0"/>
-            <match value="#! /usr/bin/python" type="string" offset="0"/>
-            <match value="eval &quot;exec /usr/bin/python" type="string" offset="0"/>
-            <match value="#!/usr/local/bin/python" type="string" offset="0"/>
-            <match value="#! /usr/local/bin/python" type="string" offset="0"/>
-            <match value="eval &quot;exec /usr/local/bin/python" type="string" offset="0"/>
-            <match value="/bin/env python" type="string" offset="1"/>
-        </magic>
-        <glob pattern="*.py"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-rst">
-        <_comment>reStructuredText source code</_comment>
-        <glob pattern="*.rest"/>
-        <glob pattern="*.rst"/>
-        <glob pattern="*.restx"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-rexx">
-        <_comment>Rexx source code</_comment>
-        <glob pattern="*.rexx"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-ruby">
-        <_comment>Ruby source code</_comment>
-        <glob pattern="*.rb"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-scala">
-        <_comment>Scala source code</_comment>
-        <glob pattern="*.scala"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-scheme">
-        <_comment>Scheme source code</_comment>
-        <glob pattern="*.scm"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-sed">
-        <_comment>Sed code</_comment>
-        <glob pattern="*.sed"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-sql">
-        <_comment>SQL code</_comment>
-        <glob pattern="*.sql"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-setext">
-        <glob pattern="*.etx"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-stsrc">
-        <_comment>Smalltalk source code</_comment>
-        <glob pattern="*.st"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-tcl">
-        <alias type="application/x-tcl"/>
-        <_comment>Tcl script</_comment>
-        <glob pattern="*.itk"/>
-        <glob pattern="*.tcl"/>
-        <glob pattern="*.tk"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-uuencode">
-        <glob pattern="*.uu"/>
-    </mime-type>
-
-    <mime-type type="text/x-vbasic">
-        <_comment>Visual basic source code</_comment>
-        <glob pattern="*.cls"/>
-        <glob pattern="*.Cls"/>
-        <glob pattern="*.CLS"/>
-        <glob pattern="*.frm"/>
-        <glob pattern="*.Frm"/>
-        <glob pattern="*.FRM"/>
-        <sub-class-of type="text/x-basic"/>
-    </mime-type>
-
-    <mime-type type="text/x-vbdotnet">
-        <_comment>VB.NET source code</_comment>
-        <glob pattern="*.vb"/>
-        <sub-class-of type="text/x-vbasic"/>
-    </mime-type>
-
-    <mime-type type="text/x-vbscript">
-        <_comment>VBScript source code</_comment>
-        <glob pattern="*.vbs"/>
-        <sub-class-of type="text/x-vbasic"/>
-    </mime-type>
-
-    <mime-type type="text/x-vcalendar">
-        <glob pattern="*.vcs"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-vcard">
-        <glob pattern="*.vcf"/>
-        <sub-class-of type="text/plain"/>
-        <magic priority="50">
-            <match value="BEGIN:VCARD" type="string" offset="0"/>
-        </magic>
-    </mime-type>
-
-    <mime-type type="text/x-verilog">
-        <_comment>Verilog source code</_comment>
-        <glob pattern="*.v"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-vhdl">
-        <_comment>VHDL source code</_comment>
-        <glob pattern="*.vhd"/>
-        <glob pattern="*.vhdl"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-web-markdown">
-        <_comment>Markdown source code</_comment>
-        <glob pattern="*.md"/>
-        <glob pattern="*.mdtext"/>
-        <glob pattern="*.mkd"/>
-        <glob pattern="*.markdown"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-yacc">
-        <_comment>Yacc/Bison source code</_comment>
-        <glob pattern="*.y"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-yaml">
-        <_comment>YAML source code</_comment>
-        <glob pattern="*.yaml"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="video/3gpp">
-        <magic priority="60">
-            <match value="ftyp3ge6" type="string" offset="4"/>
-            <match value="ftyp3ge7" type="string" offset="4"/>
-            <match value="ftyp3gg6" type="string" offset="4"/>
-            <match value="ftyp3gp1" type="string" offset="4"/>
-            <match value="ftyp3gp2" type="string" offset="4"/>
-            <match value="ftyp3gp3" type="string" offset="4"/>
-            <match value="ftyp3gp4" type="string" offset="4"/>
-            <match value="ftyp3gp5" type="string" offset="4"/>
-            <match value="ftyp3gp6" type="string" offset="4"/>
-            <match value="ftyp3gs7" type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.3gp"/>
-    </mime-type>
-    <mime-type type="video/3gpp-tt"/>
-    <mime-type type="video/3gpp2">
-        <magic priority="60">
-            <match value="ftyp3g2a" type="string" offset="4"/>
-            <match value="ftyp3g2b" type="string" offset="4"/>
-            <match value="ftyp3g2c" type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.3g2"/>
-    </mime-type>
-    <mime-type type="video/bmpeg"/>
-    <mime-type type="video/bt656"/>
-    <mime-type type="video/celb"/>
-    <mime-type type="video/dv"/>
-    <mime-type type="video/example"/>
-    <mime-type type="video/h261">
-        <glob pattern="*.h261"/>
-    </mime-type>
-    <mime-type type="video/h263">
-        <glob pattern="*.h263"/>
-    </mime-type>
-    <mime-type type="video/h263-1998"/>
-    <mime-type type="video/h263-2000"/>
-    <mime-type type="video/h264">
-        <glob pattern="*.h264"/>
-    </mime-type>
-    <mime-type type="video/jpeg">
-        <glob pattern="*.jpgv"/>
-    </mime-type>
-    <mime-type type="video/jpeg2000"/>
-
-    <mime-type type="video/mj2">
-        <sub-class-of type="image/x-jp2-container" />
-        <acronym>MJ2</acronym>
-        <_comment>JPEG 2000 Part 3 (Motion JPEG, MJ2)</_comment>
-        <magic priority="50">
-            <match value="0x0000000C6A5020200D0A870A" type="string" offset="0">
-                <match value="0x6d6a7032" type="string" offset="20"/>
-            </match>
-        </magic>
-        <glob pattern="*.mj2"/>
-        <glob pattern="*.mjp2"/>
-    </mime-type>
-
-    <mime-type type="video/mp1s"/>
-    <mime-type type="video/mp2p"/>
-    <mime-type type="video/mp2t"/>
-
-    <mime-type type="video/mp4">
-        <magic priority="60">
-            <match value="ftypmp41" type="string" offset="4"/>
-            <match value="ftypmp42" type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.mp4"/>
-        <glob pattern="*.mp4v"/>
-        <glob pattern="*.mpg4"/>
-        <sub-class-of type="video/quicktime" />
-    </mime-type>
-    <mime-type type="video/mp4v-es"/>
-
-    <mime-type type="video/mpeg">
-        <_comment>MPEG Movie Clip</_comment>
-        <magic priority="50">
-            <match value="\000\000\001\263" type="string" offset="0"/>
-            <match value="\000\000\001\272" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.mpeg"/>
-        <glob pattern="*.mpg"/>
-        <glob pattern="*.mpe"/>
-        <glob pattern="*.m1v"/>
-        <glob pattern="*.m2v"/>
-    </mime-type>
-
-    <mime-type type="video/mpeg4-generic"/>
-    <mime-type type="video/mpv"/>
-    <mime-type type="video/nv"/>
-
-    <mime-type type="video/ogg">
-        <_comment>Ogg Vorbis Video</_comment>
-        <glob pattern="*.ogv"/>
-        <sub-class-of type="application/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/daala">
-        <_comment>Ogg Daala Video</_comment>
-        <alias type="video/x-daala"/>
-        <magic priority="60">
-            <!-- Assumes Video stream comes before Audio, may not always -->
-            <match value="OggS\000.......................\x80daala" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/theora">
-        <_comment>Ogg Theora Video</_comment>
-        <alias type="video/x-theora"/>
-        <magic priority="60">
-            <!-- Assumes Video stream comes before Audio, may not always -->
-            <match value="OggS\000.......................\x80theora" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/x-dirac">
-        <_comment>Ogg Packaged Dirac Video</_comment>
-        <magic priority="60">
-            <match value="OggS\000.......................BBCD" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <glob pattern="*.drc"/>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/x-ogm">
-        <_comment>Ogg Packaged OGM Video</_comment>
-        <magic priority="60">
-            <!-- Assumes Video stream comes before Audio, may not always -->
-            <match value="OggS\000.......................video" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <glob pattern="*.ogm"/>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/x-ogguvs">
-        <_comment>Ogg Packaged Raw UVS Video</_comment>
-        <alias type="video/x-ogg-uvs"/>
-        <magic priority="60">
-            <match value="OggS\000.......................UVS " type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/x-oggyuv">
-        <_comment>Ogg Packaged Raw YUV Video</_comment>
-        <alias type="video/x-ogg-yuv"/>
-        <magic priority="60">
-            <match value="OggS\000.......................\001YUV" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/x-oggrgb">
-        <_comment>Ogg Packaged Raw RGB Video</_comment>
-        <alias type="video/x-ogg-rgb"/>
-        <magic priority="60">
-            <match value="OggS\000.......................\001RGB" type="string"
-                   mask="0xFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFF"
-                   offset="0"/>
-        </magic>
-        <sub-class-of type="video/ogg"/>
-    </mime-type>
-
-    <mime-type type="video/parityfec"/>
-    <mime-type type="video/pointer"/>
-
-    <mime-type type="video/quicktime">
-        <magic priority="50">
-            <match value="moov" type="string" offset="4"/>
-            <match value="mdat" type="string" offset="4"/>
-            <!-- General match, specific ftypXXX ones present for subtypes -->
-            <match value="ftyp" type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.qt"/>
-        <glob pattern="*.mov"/>
-    </mime-type>
-
-    <mime-type type="video/raw"/>
-    <mime-type type="video/rtp-enc-aescm128"/>
-    <mime-type type="video/rtx"/>
-    <mime-type type="video/smpte292m"/>
-    <mime-type type="video/ulpfec"/>
-    <mime-type type="video/vc1"/>
-    <mime-type type="video/vnd.cctv"/>
-    <mime-type type="video/vnd.dlna.mpeg-tts"/>
-    <mime-type type="video/vnd.fvt">
-        <glob pattern="*.fvt"/>
-    </mime-type>
-    <mime-type type="video/vnd.hns.video"/>
-    <mime-type type="video/vnd.iptvforum.1dparityfec-1010"/>
-    <mime-type type="video/vnd.iptvforum.1dparityfec-2005"/>
-    <mime-type type="video/vnd.iptvforum.2dparityfec-1010"/>
-    <mime-type type="video/vnd.iptvforum.2dparityfec-2005"/>
-    <mime-type type="video/vnd.iptvforum.ttsavc"/>
-    <mime-type type="video/vnd.iptvforum.ttsmpeg2"/>
-    <mime-type type="video/vnd.motorola.video"/>
-    <mime-type type="video/vnd.motorola.videop"/>
-    <mime-type type="video/vnd.mpegurl">
-        <glob pattern="*.mxu"/>
-        <glob pattern="*.m4u"/>
-    </mime-type>
-    <mime-type type="video/vnd.ms-playready.media.pyv">
-        <glob pattern="*.pyv"/>
-    </mime-type>
-    <mime-type type="video/vnd.nokia.interleaved-multimedia"/>
-    <mime-type type="video/vnd.nokia.videovoip"/>
-    <mime-type type="video/vnd.objectvideo"/>
-    <mime-type type="video/vnd.sealed.mpeg1"/>
-    <mime-type type="video/vnd.sealed.mpeg4"/>
-    <mime-type type="video/vnd.sealed.swf"/>
-    <mime-type type="video/vnd.sealedmedia.softseal.mov"/>
-    <mime-type type="video/vnd.vivo">
-        <glob pattern="*.viv"/>
-    </mime-type>
-    <mime-type type="video/x-f4v">
-        <glob pattern="*.f4v"/>
-    </mime-type>
-
-    <mime-type type="video/x-flc">
-        <glob pattern="*.flc"/>
-    </mime-type>
-
-    <mime-type type="video/x-fli">
-        <glob pattern="*.fli"/>
-    </mime-type>
-
-    <mime-type type="video/x-flv">
-        <magic priority="50">
-            <match value="FLV" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.flv"/>
-    </mime-type>
-
-    <mime-type type="video/x-jng">
-        <magic priority="50">
-            <match value="\x8bJNG" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.jng"/>
-    </mime-type>
-
-    <mime-type type="video/x-m4v">
-        <magic priority="60">
-            <match value="ftypM4V " type="string" offset="4"/>
-            <match value="ftypM4VH" type="string" offset="4"/>
-            <match value="ftypM4VP" type="string" offset="4"/>
-        </magic>
-        <glob pattern="*.m4v"/>
-        <sub-class-of type="video/mp4" />
-    </mime-type>
-
-    <mime-type type="video/x-mng">
-        <magic priority="50">
-            <match value="\x8aMNG" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.mng"/>
-    </mime-type>
-
-    <mime-type type="video/x-ms-asf">
-        <glob pattern="*.asf"/>
-        <glob pattern="*.asx"/>
-        <magic>
-            <match value="0x3026b275" type="big32" offset="0" />
-        </magic>
-    </mime-type>
-    <mime-type type="video/x-ms-wm">
-        <glob pattern="*.wm"/>
-    </mime-type>
-    <mime-type type="video/x-ms-wmv">
-        <sub-class-of type="video/x-ms-asf" />
-        <glob pattern="*.wmv"/>
-        <magic priority="60">
-            <match value="Windows Media Video" type="unicodeLE" offset="0:8192" />
-            <match value="VC-1 Advanced Profile" type="unicodeLE" offset="0:8192" />
-        </magic>
-    </mime-type>
-    <mime-type type="video/x-ms-wmx">
-        <glob pattern="*.wmx"/>
-    </mime-type>
-    <mime-type type="video/x-ms-wvx">
-        <glob pattern="*.wvx"/>
-    </mime-type>
-
-    <mime-type type="video/x-msvideo">
-        <_comment>Audio Video Interleave File</_comment>
-        <alias type="video/avi"/>
-        <alias type="video/msvideo"/>
-        <magic priority="50">
-            <match value="RIFF....AVI " type="string" offset="0"
-                   mask="0xFFFFFFFF00000000FFFFFFFF"/>
-            <match offset="8" type="string" value="\x41\x56\x49\x20"/>
-        </magic>
-        <glob pattern="*.avi"/>
-    </mime-type>
-
-    <mime-type type="video/x-sgi-movie">
-        <magic priority="50">
-            <match value="MOVI" type="string" offset="0"/>
-        </magic>
-        <glob pattern="*.movie"/>
-    </mime-type>
-
-    <mime-type type="application/x-matroska">
-        <_comment>Matroska Media Container</_comment>
-        <!-- Common magic across all Matroska varients -->
-        <!-- For full detection, we need a custom Detector, see TIKA-1180 -->
-        <magic priority="40">
-            <match value="0x1A45DFA3" type="string" offset="0" />
-        </magic>
-    </mime-type>
-
-    <mime-type type="video/x-matroska">
-        <sub-class-of type="application/x-matroska"/>
-        <glob pattern="*.mkv" />
-        <!-- Note: The magic value below isn't present in all MKV files -->
-        <magic priority="50">
-            <match value="0x1A45DFA3934282886D6174726F736B61" type="string" offset="0" />
-        </magic>
-    </mime-type>
-    <mime-type type="audio/x-matroska">
-        <sub-class-of type="application/x-matroska"/>
-        <glob pattern="*.mka" />
-    </mime-type>
-
-    <mime-type type="video/webm">
-        <sub-class-of type="application/x-matroska"/>
-        <glob pattern="*.webm" />
-    </mime-type>
-
-    <mime-type type="x-conference/x-cooltalk">
-        <_comment>Cooltalk Audio</_comment>
-        <glob pattern="*.ice"/>
-    </mime-type>
-
-    <mime-type type="application/x-fictionbook+xml">
-        <_comment>FictionBook document</_comment>
-        <sub-class-of type="application/xml"/>
-        <root-XML namespaceURI="http://www.gribuser.ru/xml/fictionbook/2.0" localName="FictionBook"/>
-        <glob pattern="*.fb2"/>
-    </mime-type>
-
-    <mime-type type="text/x-asciidoc">
-        <_comment>Asciidoc source code</_comment>
-        <glob pattern="*.asciidoc"/>
-        <glob pattern="*.adoc"/>
-        <glob pattern="*.ad"/>
-        <glob pattern="*.ad.txt"/>
-        <glob pattern="*.adoc.txt"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-d">
-        <_comment>D source code</_comment>
-        <glob pattern="*.d"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-haml">
-        <_comment>HAML source code</_comment>
-        <glob pattern="*.haml"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-haxe">
-        <_comment>Haxe source code</_comment>
-        <glob pattern="*.hx"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="text/x-rsrc">
-        <_comment>R source code</_comment>
-        <glob pattern="*.r"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-    <mime-type type="application/xquery">
-        <_comment>XQuery source code</_comment>
-        <glob pattern="*.xq"/>
-        <glob pattern="*.xquery"/>
-        <sub-class-of type="text/plain"/>
-    </mime-type>
-
-</mime-info>
\ No newline at end of file
diff --git a/mvn/archetypes/radix/pom.xml b/mvn/archetypes/radix/pom.xml
index d38533f..7ca345f 100644
--- a/mvn/archetypes/radix/pom.xml
+++ b/mvn/archetypes/radix/pom.xml
@@ -35,7 +35,7 @@
       <plugins>
         <plugin>
           <artifactId>maven-archetype-plugin</artifactId>
-          <version>2.0-alpha-5</version>
+          <version>3.1.1</version>
           <extensions>true</extensions>
         </plugin>
       </plugins>
@@ -44,7 +44,7 @@
       <extension>
         <groupId>org.apache.maven.archetype</groupId>
         <artifactId>archetype-packaging</artifactId>
-        <version>2.0-alpha-5</version>
+        <version>3.1.1</version>
       </extension>
     </extensions>
   </build>
diff --git a/mvn/archetypes/radix/src/main/resources/META-INF/maven/archetype-metadata.xml b/mvn/archetypes/radix/src/main/resources/META-INF/maven/archetype-metadata.xml
index 02bbba3..4481d68 100644
--- a/mvn/archetypes/radix/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/mvn/archetypes/radix/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -20,16 +20,30 @@
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <requiredProperties>
     <requiredProperty key="oodt">
-      <defaultValue>0.7-SNAPSHOT</defaultValue>
+      <defaultValue>1.10-SNAPSHOT</defaultValue>
     </requiredProperty>
   </requiredProperties>
   <fileSets>
-    <fileSet filtered="true" packaged="false">
+    <fileSet filtered="true">
       <directory></directory>
       <includes>
         <include>README.txt</include>
+        <include>docker-compose.yml</include>
+        <include>.gitignore</include>
       </includes>
     </fileSet>
+    <fileSet filtered="true">
+      <directory>kubernetes</directory>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>temp</directory>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>logs</directory>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>data</directory>
+    </fileSet>
   </fileSets>
   <modules>
     <module id="extensions" dir="extensions" name="extensions">
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/.gitignore b/mvn/archetypes/radix/src/main/resources/archetype-resources/.gitignore
new file mode 100644
index 0000000..d0ed242
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/.gitignore
@@ -0,0 +1,131 @@
+#Java Ignores
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+
+#Maven Ignores
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
+
+*.iml
+
+## Directory-based project format:
+.idea/
+# if you remove the above rule, at least ignore the following:
+
+# User-specific stuff:
+# .idea/workspace.xml
+# .idea/tasks.xml
+# .idea/dictionaries
+# .idea/shelf
+
+# Sensitive or high-churn files:
+# .idea/dataSources.ids
+# .idea/dataSources.xml
+# .idea/sqlDataSources.xml
+# .idea/dynamic.xml
+# .idea/uiDesigner.xml
+
+# Gradle:
+# .idea/gradle.xml
+# .idea/libraries
+
+# Mongo Explorer plugin:
+# .idea/mongoSettings.xml
+
+## File-based project format:
+*.ipr
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+#Eclipse Ignore
+
+*.pydevproject
+.metadata
+.gradle
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+
+# Eclipse Core
+.project
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# CDT-specific
+.cproject
+
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# TeXlipse plugin
+.texlipse
+
+# test by-products
+*.log
+
+# Apple OS X folder attributes
+.DS_Store
+
+# node_modules
+/react-components/oodt_fm_plugin/node_modules
+
+# npm build/Tarball ignores
+/react-components/oodt_fm_plugin/dist
+
+# Runtime package.json ignores
+/react-components/oodt_fm_plugin/package-lock.json
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/README.txt b/mvn/archetypes/radix/src/main/resources/archetype-resources/README.txt
index 64ca256..054c44a 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/README.txt
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/README.txt
@@ -21,7 +21,7 @@
 #       data system deployment. Configurable OODT deployments
 #       are possible using Maven profiles (see below).
 #       
-#       OODT version 0.7-SNAPSHOT 
+#       OODT version ${oodt}
 ######################################################################################
 
 REQUIREMENTS:
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/Dockerfile
new file mode 100644
index 0000000..039fdba
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/Dockerfile
@@ -0,0 +1,27 @@
+FROM openjdk:8-jre-alpine
+
+# Environment Variables (should not be modified)
+ENV OODT_HOME="/oodt"
+ENV CRAWLER_HOME="/oodt/crawler"
+
+# Environment Variables (should be user specified)
+ENV FAILURE_DIR=""
+ENV BACKUP_DIR=""
+ENV WORKFLOW_URL=""
+ENV FILEMGR_URL=""
+ENV PUSHPULL_MET_FILE_EXT=""
+ENV RELATIVE_PRODUCT_PATH=""
+
+# Steps to Extract Source
+WORKDIR /oodt
+ARG SRC_FILE
+ADD target/${SRC_FILE} .
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/crawler/policy (Policy Files)
+# * /oodt/crawler/logs (Logs)
+# * /tmp (Temporary Files)
+
+# Start
+WORKDIR /oodt/crawler/bin
+CMD java -Djava.ext.dirs="../lib" -Djava.util.logging.config.file="../etc/logging.properties" -Dorg.apache.oodt.cas.crawl.bean.repo="../policy/crawler-config.xml" -Dorg.apache.oodt.cas.cli.action.spring.config="../policy/cmd-line-actions.xml" -Dorg.apache.oodt.cas.cli.option.spring.config="../policy/cmd-line-options.xml" org.apache.oodt.cas.crawl.CrawlerLauncher --operation --launchAutoCrawler --filemgrUrl $FILEMGR_URL --clientTransferer org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory --productPath /oodt/data/$RELATIVE_PRODUCT_PATH --mimeExtractorRepo "../policy/extractor/mime-extractor-map.xml"
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/pom.xml
index 99d2c4b..5c4cd6a 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/pom.xml
@@ -53,6 +53,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}-bin.tar.gz</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>${groupId}</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/etc/logging.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/etc/logging.properties
index cfbeaed..8dc90ea 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/etc/logging.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/etc/logging.properties
@@ -20,12 +20,12 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
-        
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
+
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
@@ -38,17 +38,17 @@
     
 # Set the default logging level for the subsystems
 
-org.apache.oodt.cas.crawl.level = DEBUG
+org.apache.oodt.cas.crawl.level = ALL
 
-org.apache.oodt.cas.crawl.action.level = DEBUG
+org.apache.oodt.cas.crawl.action.level = ALL
 
-org.apache.oodt.cas.crawl.typedetection.level = DEBUG
+org.apache.oodt.cas.crawl.typedetection.level = ALL
 
-org.apache.oodt.cas.crawl.util.level = DEBUG
+org.apache.oodt.cas.crawl.util.level = ALL
 
-org.apache.oodt.cas.crawl.config.level = DEBUG
+org.apache.oodt.cas.crawl.config.level = ALL
 
-# control the underlying commons-httpclient transport layer for xmlrpc 
+# control the underlying commons-httpclient transport layer for xmlrpc
 org.apache.commons.httpclient.level = INFO
 httpclient.wire.header.level = INFO
 httpclient.wire.level = INFO
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mime-extractor-map.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mime-extractor-map.xml
new file mode 100644
index 0000000..a9aa795
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mime-extractor-map.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements.  See the NOTICE.txt file distributed with this work for
+additional information regarding copyright ownership.  The ASF licenses this
+file to you under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License.  You may obtain a copy of
+the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+License for the specific language governing permissions and limitations under
+the License.
+-->
+<cas:mimetypemap xmlns:cas="http://oodt.jpl.nassa.gov/1.0/cas" magic="false" mimeRepo="/oodt/crawler/policy/extractor/mimetypes.xml">
+	<mime type="text/plain">
+		<extractor class="org.apache.oodt.cas.metadata.extractors.ExternMetExtractor">
+			<config file="/oodt/crawler/policy/extractor/tika.conf"/>
+			<preCondComparators>
+				<preCondComparator id="CheckThatDataFileSizeIsGreaterThanZero"/>
+			</preCondComparators>
+		</extractor>
+	</mime>
+</cas:mimetypemap>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mimetypes.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mimetypes.xml
new file mode 100644
index 0000000..eeda831
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/mimetypes.xml
@@ -0,0 +1,4119 @@
+<?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.
+-->
+<!--
+  Description: This xml file defines the valid mime types used by Tika.
+  The mime type data within this file is based on information from various
+  sources like Apache Nutch, Apache HTTP Server, the file(1) command, etc.
+-->
+<mime-info>
+
+	<mime-type type="application/activemessage"/>
+	<mime-type type="application/andrew-inset">
+		<glob pattern="*.ez"/>
+	</mime-type>
+	<mime-type type="application/applefile"/>
+	<mime-type type="application/applixware">
+		<glob pattern="*.aw"/>
+	</mime-type>
+
+	<mime-type type="application/atom+xml">
+		<root-XML localName="feed" namespaceURI="http://purl.org/atom/ns#"/>
+		<glob pattern="*.atom"/>
+	</mime-type>
+
+	<mime-type type="application/atomcat+xml">
+		<glob pattern="*.atomcat"/>
+	</mime-type>
+	<mime-type type="application/atomicmail"/>
+	<mime-type type="application/atomsvc+xml">
+		<glob pattern="*.atomsvc"/>
+	</mime-type>
+	<mime-type type="application/auth-policy+xml"/>
+	<mime-type type="application/batch-smtp"/>
+	<mime-type type="application/beep+xml"/>
+	<mime-type type="application/cals-1840"/>
+	<mime-type type="application/ccxml+xml">
+		<glob pattern="*.ccxml"/>
+	</mime-type>
+	<mime-type type="application/cea-2018+xml"/>
+	<mime-type type="application/cellml+xml"/>
+	<mime-type type="application/cnrp+xml"/>
+	<mime-type type="application/commonground"/>
+	<mime-type type="application/conference-info+xml"/>
+	<mime-type type="application/cpl+xml"/>
+	<mime-type type="application/csta+xml"/>
+	<mime-type type="application/cstadata+xml"/>
+	<mime-type type="application/cu-seeme">
+		<glob pattern="*.cu"/>
+	</mime-type>
+	<mime-type type="application/cybercash"/>
+	<mime-type type="application/davmount+xml">
+		<glob pattern="*.davmount"/>
+	</mime-type>
+	<mime-type type="application/dca-rft"/>
+	<mime-type type="application/dec-dx"/>
+	<mime-type type="application/dialog-info+xml"/>
+	<mime-type type="application/dicom"/>
+	<mime-type type="application/dns"/>
+	<mime-type type="application/dvcs"/>
+	<mime-type type="application/ecmascript">
+		<glob pattern="*.ecma"/>
+	</mime-type>
+	<mime-type type="application/edi-consent"/>
+	<mime-type type="application/edi-x12"/>
+	<mime-type type="application/edifact"/>
+	<mime-type type="application/emma+xml">
+		<glob pattern="*.emma"/>
+	</mime-type>
+	<mime-type type="application/epp+xml"/>
+
+	<mime-type type="application/epub+zip">
+		<acronym>EPUB</acronym>
+		<_comment>Electronic Publication</_comment>
+		<magic priority="50">
+			<match value="PK\003\004" type="string" offset="0">
+				<match value="mimetypeapplication/epub+zip" type="string" offset="30"/>
+			</match>
+		</magic>
+		<glob pattern="*.epub"/>
+	</mime-type>
+
+	<mime-type type="application/eshop"/>
+	<mime-type type="application/example"/>
+	<mime-type type="application/fastinfoset"/>
+	<mime-type type="application/fastsoap"/>
+	<mime-type type="application/fits"/>
+	<mime-type type="application/font-tdpfr">
+		<glob pattern="*.pfr"/>
+	</mime-type>
+	<mime-type type="application/h224"/>
+	<mime-type type="application/http"/>
+	<mime-type type="application/hyperstudio">
+		<glob pattern="*.stk"/>
+	</mime-type>
+	<mime-type type="application/ibe-key-request+xml"/>
+	<mime-type type="application/ibe-pkg-reply+xml"/>
+	<mime-type type="application/ibe-pp-data"/>
+	<mime-type type="application/iges"/>
+	<mime-type type="application/im-iscomposing+xml"/>
+	<mime-type type="application/index"/>
+	<mime-type type="application/index.cmd"/>
+	<mime-type type="application/index.obj"/>
+	<mime-type type="application/index.response"/>
+	<mime-type type="application/index.vnd"/>
+	<mime-type type="application/iotp"/>
+	<mime-type type="application/ipp"/>
+	<mime-type type="application/isup"/>
+
+	<mime-type type="application/java-archive">
+		<sub-class-of type="application/zip"/>
+		<glob pattern="*.jar"/>
+	</mime-type>
+
+	<mime-type type="application/java-serialized-object">
+		<glob pattern="*.ser"/>
+	</mime-type>
+
+	<mime-type type="application/javascript">
+		<sub-class-of type="text/plain"/>
+		<glob pattern="*.js"/>
+	</mime-type>
+
+	<mime-type type="application/json">
+		<sub-class-of type="application/javascript"/>
+		<glob pattern="*.json"/>
+	</mime-type>
+
+	<mime-type type="application/java-vm">
+		<magic priority="40">
+			<match value="0xcafebabe" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.class"/>
+	</mime-type>
+
+	<mime-type type="application/kpml-request+xml"/>
+	<mime-type type="application/kpml-response+xml"/>
+	<mime-type type="application/lost+xml">
+		<glob pattern="*.lostxml"/>
+	</mime-type>
+
+	<mime-type type="application/mac-binhex40">
+		<alias type="application/mac-binhex"/>
+		<alias type="application/binhex"/>
+		<magic priority="50">
+			<match value="must\ be\ converted\ with\ BinHex" type="string" offset="11"/>
+		</magic>
+		<glob pattern="*.hqx"/>
+	</mime-type>
+
+	<mime-type type="application/mac-compactpro">
+		<glob pattern="*.cpt"/>
+	</mime-type>
+
+	<mime-type type="application/macwriteii"/>
+	<mime-type type="application/marc">
+		<glob pattern="*.mrc"/>
+	</mime-type>
+	<mime-type type="application/mathematica">
+		<glob pattern="*.ma"/>
+		<glob pattern="*.nb"/>
+		<glob pattern="*.mb"/>
+	</mime-type>
+	<mime-type type="application/mathml+xml">
+		<glob pattern="*.mathml"/>
+	</mime-type>
+	<mime-type type="application/mbms-associated-procedure-description+xml"/>
+	<mime-type type="application/mbms-deregister+xml"/>
+	<mime-type type="application/mbms-envelope+xml"/>
+	<mime-type type="application/mbms-msk+xml"/>
+	<mime-type type="application/mbms-msk-response+xml"/>
+	<mime-type type="application/mbms-protection-description+xml"/>
+	<mime-type type="application/mbms-reception-report+xml"/>
+	<mime-type type="application/mbms-register+xml"/>
+	<mime-type type="application/mbms-register-response+xml"/>
+	<mime-type type="application/mbms-user-service-description+xml"/>
+	<mime-type type="application/mbox">
+		<sub-class-of type="text/plain"/>
+		<glob pattern="*.mbox"/>
+	</mime-type>
+	<mime-type type="application/media_control+xml"/>
+	<mime-type type="application/mediaservercontrol+xml">
+		<glob pattern="*.mscml"/>
+	</mime-type>
+	<mime-type type="application/mikey"/>
+	<mime-type type="application/moss-keys"/>
+	<mime-type type="application/moss-signature"/>
+	<mime-type type="application/mosskey-data"/>
+	<mime-type type="application/mosskey-request"/>
+	<mime-type type="application/mp4">
+		<glob pattern="*.mp4s"/>
+	</mime-type>
+	<mime-type type="application/mpeg4-generic"/>
+	<mime-type type="application/mpeg4-iod"/>
+	<mime-type type="application/mpeg4-iod-xmt"/>
+
+	<!-- http://www.iana.org/assignments/media-types/application/msword -->
+	<mime-type type="application/msword">
+		<!-- Use org.apache.tika.detect.ContainerAwareDetector for more reliable detection of OLE2 documents -->
+		<alias type="application/vnd.ms-word"/>
+		<_comment>Microsoft Word Document</_comment>
+		<magic priority="50">
+			<match value="Microsoft\ Word\ 6.0\ Document" type="string" offset="2080"/>
+			<match value="Documento\ Microsoft\ Word\ 6" type="string" offset="2080"/>
+			<match value="MSWordDoc" type="string" offset="2112"/>
+			<match value="0x31be0000" type="big32" offset="0"/>
+			<match value="PO^Q`" type="string" offset="0"/>
+			<match value="\376\067\0\043" type="string" offset="0"/>
+			<match value="\333\245-\0\0\0" type="string" offset="0"/>
+			<match value="\354\245\301" type="string" offset="512"/>
+			<match value="\320\317\021\340\241\261\032\341" type="string" offset="0"/>
+			<match value="\224\246\056" type="string" offset="0"/>
+			<match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+				<match value="W\x00o\x00r\x00d\x00D\x00o\x00c\x00u\x00m\x00e\x00n\x00t" type="string" offset="1152:4096" />
+			</match>
+		</magic>
+		<glob pattern="*.doc"/>
+		<glob pattern="*.dot"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/mxf">
+		<glob pattern="*.mxf"/>
+	</mime-type>
+	<mime-type type="application/nasdata"/>
+	<mime-type type="application/news-checkgroups"/>
+	<mime-type type="application/news-groupinfo"/>
+	<mime-type type="application/news-transmission"/>
+	<mime-type type="application/nss"/>
+	<mime-type type="application/ocsp-request"/>
+	<mime-type type="application/ocsp-response"/>
+
+	<mime-type type="application/octet-stream">
+		<magic priority="50">
+			<match value="#\ This\ is\ a\ shell\ archive" type="string" offset="10"/>
+			<match value="\037\036" type="string" offset="0"/>
+			<match value="017437" type="host16" offset="0"/>
+			<match value="0x1fff" type="host16" offset="0"/>
+			<match value="\377\037" type="string" offset="0"/>
+			<match value="0145405" type="host16" offset="0"/>
+		</magic>
+		<glob pattern="*.bin"/>
+		<glob pattern="*.dms"/>
+		<glob pattern="*.lha"/>
+		<glob pattern="*.lrf"/>
+		<glob pattern="*.lzh"/>
+		<glob pattern="*.so"/>
+		<glob pattern="*.iso"/>
+		<glob pattern="*.dmg"/>
+		<glob pattern="*.dist"/>
+		<glob pattern="*.distz"/>
+		<glob pattern="*.pkg"/>
+		<glob pattern="*.bpk"/>
+		<glob pattern="*.dump"/>
+		<glob pattern="*.elc"/>
+		<glob pattern="*.deploy"/>
+	</mime-type>
+
+	<mime-type type="application/oda">
+		<glob pattern="*.oda"/>
+	</mime-type>
+	<mime-type type="application/oebps-package+xml">
+		<glob pattern="*.opf"/>
+	</mime-type>
+
+	<mime-type type="application/ogg">
+		<alias type="application/x-ogg"/>
+		<magic priority="50">
+			<match value="OggS" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.ogx"/>
+	</mime-type>
+
+	<mime-type type="application/onenote">
+		<glob pattern="*.onetoc"/>
+		<glob pattern="*.onetoc2"/>
+		<glob pattern="*.onetmp"/>
+		<glob pattern="*.onepkg"/>
+	</mime-type>
+	<mime-type type="application/parityfec"/>
+	<mime-type type="application/patch-ops-error+xml">
+		<glob pattern="*.xer"/>
+	</mime-type>
+
+	<mime-type type="application/pdf">
+		<alias type="application/x-pdf"/>
+		<acronym>PDF</acronym>
+		<_comment>Portable Document Format</_comment>
+		<magic priority="50">
+			<match value="%PDF-" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.pdf"/>
+	</mime-type>
+
+	<mime-type type="application/pgp-encrypted">
+		<glob pattern="*.pgp"/>
+	</mime-type>
+	<mime-type type="application/pgp-keys"/>
+	<mime-type type="application/pgp-signature">
+		<glob pattern="*.asc"/>
+		<glob pattern="*.sig"/>
+	</mime-type>
+	<mime-type type="application/pics-rules">
+		<glob pattern="*.prf"/>
+	</mime-type>
+	<mime-type type="application/pidf+xml"/>
+	<mime-type type="application/pidf-diff+xml"/>
+	<mime-type type="application/pkcs10">
+		<glob pattern="*.p10"/>
+	</mime-type>
+	<mime-type type="application/pkcs7-mime">
+		<glob pattern="*.p7m"/>
+		<glob pattern="*.p7c"/>
+	</mime-type>
+	<mime-type type="application/pkcs7-signature">
+		<glob pattern="*.p7s"/>
+	</mime-type>
+	<mime-type type="application/pkix-cert">
+		<glob pattern="*.cer"/>
+	</mime-type>
+	<mime-type type="application/pkix-crl">
+		<glob pattern="*.crl"/>
+	</mime-type>
+	<mime-type type="application/pkix-pkipath">
+		<glob pattern="*.pkipath"/>
+	</mime-type>
+	<mime-type type="application/pkixcmp">
+		<glob pattern="*.pki"/>
+	</mime-type>
+	<mime-type type="application/pls+xml">
+		<glob pattern="*.pls"/>
+	</mime-type>
+	<mime-type type="application/poc-settings+xml"/>
+
+	<mime-type type="application/postscript">
+		<_comment>PostScript</_comment>
+		<magic priority="50">
+			<match value="%!" type="string" offset="0" />
+			<match value="\004%!" type="string" offset="0" />
+			<!-- Windows format EPS -->
+			<match value="0xc5d0d3c6" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.ai"/>
+		<glob pattern="*.ps"/>
+		<glob pattern="*.eps"/>
+		<glob pattern="*.epsf"/>
+		<glob pattern="*.epsi"/>
+	</mime-type>
+
+	<mime-type type="application/prs.alvestrand.titrax-sheet"/>
+	<mime-type type="application/prs.cww">
+		<glob pattern="*.cww"/>
+	</mime-type>
+	<mime-type type="application/prs.nprend"/>
+	<mime-type type="application/prs.plucker"/>
+	<mime-type type="application/qsig"/>
+
+	<mime-type type="application/rdf+xml">
+		<root-XML localName="RDF"/>
+		<root-XML localName="RDF" namespaceURI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+		<sub-class-of type="application/xml"/>
+		<acronym>RDF/XML</acronym>
+		<_comment>XML syntax for RDF graphs</_comment>
+		<glob pattern="*.rdf"/>
+		<glob pattern="*.owl"/>
+		<glob pattern="^rdf$" isregex="true"/>
+		<glob pattern="^owl$" isregex="true"/>
+	</mime-type>
+
+	<mime-type type="application/reginfo+xml">
+		<glob pattern="*.rif"/>
+	</mime-type>
+	<mime-type type="application/relax-ng-compact-syntax">
+		<sub-class-of type="text/plain"/>
+		<glob pattern="*.rnc"/>
+	</mime-type>
+	<mime-type type="application/remote-printing"/>
+	<mime-type type="application/resource-lists+xml">
+		<glob pattern="*.rl"/>
+	</mime-type>
+	<mime-type type="application/resource-lists-diff+xml">
+		<glob pattern="*.rld"/>
+	</mime-type>
+	<mime-type type="application/riscos"/>
+	<mime-type type="application/rlmi+xml"/>
+	<mime-type type="application/rls-services+xml">
+		<glob pattern="*.rs"/>
+	</mime-type>
+	<mime-type type="application/rsd+xml">
+		<glob pattern="*.rsd"/>
+	</mime-type>
+
+	<mime-type type="application/rss+xml">
+		<alias type="text/rss"/>
+		<root-XML localName="rss"/>
+		<root-XML namespaceURI="http://purl.org/rss/1.0/"/>
+		<glob pattern="*.rss"/>
+	</mime-type>
+
+	<mime-type type="application/rtf">
+		<alias type="text/rtf"/>
+		<magic priority="50">
+			<match value="{\\rtf" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.rtf"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="application/rtx"/>
+	<mime-type type="application/samlassertion+xml"/>
+	<mime-type type="application/samlmetadata+xml"/>
+	<mime-type type="application/sbml+xml">
+		<glob pattern="*.sbml"/>
+	</mime-type>
+	<mime-type type="application/scvp-cv-request">
+		<glob pattern="*.scq"/>
+	</mime-type>
+	<mime-type type="application/scvp-cv-response">
+		<glob pattern="*.scs"/>
+	</mime-type>
+	<mime-type type="application/scvp-vp-request">
+		<glob pattern="*.spq"/>
+	</mime-type>
+	<mime-type type="application/scvp-vp-response">
+		<glob pattern="*.spp"/>
+	</mime-type>
+	<mime-type type="application/sdp">
+		<glob pattern="*.sdp"/>
+	</mime-type>
+	<mime-type type="application/set-payment"/>
+	<mime-type type="application/set-payment-initiation">
+		<glob pattern="*.setpay"/>
+	</mime-type>
+	<mime-type type="application/set-registration"/>
+	<mime-type type="application/set-registration-initiation">
+		<glob pattern="*.setreg"/>
+	</mime-type>
+	<mime-type type="application/sgml"/>
+	<mime-type type="application/sgml-open-catalog"/>
+	<mime-type type="application/shf+xml">
+		<glob pattern="*.shf"/>
+	</mime-type>
+	<mime-type type="application/sieve"/>
+	<mime-type type="application/simple-filter+xml"/>
+	<mime-type type="application/simple-message-summary"/>
+	<mime-type type="application/simplesymbolcontainer"/>
+	<mime-type type="application/slate"/>
+	<mime-type type="application/smil"/>
+	<mime-type type="application/smil+xml">
+		<glob pattern="*.smi"/>
+		<glob pattern="*.smil"/>
+	</mime-type>
+	<mime-type type="application/soap+fastinfoset"/>
+	<mime-type type="application/soap+xml"/>
+	<mime-type type="application/sparql-query">
+		<glob pattern="*.rq"/>
+	</mime-type>
+	<mime-type type="application/sparql-results+xml">
+		<glob pattern="*.srx"/>
+	</mime-type>
+	<mime-type type="application/spirits-event+xml"/>
+	<mime-type type="application/srgs">
+		<glob pattern="*.gram"/>
+	</mime-type>
+	<mime-type type="application/srgs+xml">
+		<glob pattern="*.grxml"/>
+	</mime-type>
+	<mime-type type="application/ssml+xml">
+		<glob pattern="*.ssml"/>
+	</mime-type>
+	<mime-type type="application/timestamp-query"/>
+	<mime-type type="application/timestamp-reply"/>
+	<mime-type type="application/tve-trigger"/>
+	<mime-type type="application/ulpfec"/>
+	<mime-type type="application/vemmi"/>
+	<mime-type type="application/vividence.scriptfile"/>
+	<mime-type type="application/vnd.3gpp.bsf+xml"/>
+	<mime-type type="application/vnd.3gpp.pic-bw-large">
+		<glob pattern="*.plb"/>
+	</mime-type>
+	<mime-type type="application/vnd.3gpp.pic-bw-small">
+		<glob pattern="*.psb"/>
+	</mime-type>
+	<mime-type type="application/vnd.3gpp.pic-bw-var">
+		<glob pattern="*.pvb"/>
+	</mime-type>
+	<mime-type type="application/vnd.3gpp.sms"/>
+	<mime-type type="application/vnd.3gpp2.bcmcsinfo+xml"/>
+	<mime-type type="application/vnd.3gpp2.sms"/>
+	<mime-type type="application/vnd.3gpp2.tcap">
+		<glob pattern="*.tcap"/>
+	</mime-type>
+	<mime-type type="application/vnd.3m.post-it-notes">
+		<glob pattern="*.pwn"/>
+	</mime-type>
+	<mime-type type="application/vnd.accpac.simply.aso">
+		<glob pattern="*.aso"/>
+	</mime-type>
+	<mime-type type="application/vnd.accpac.simply.imp">
+		<glob pattern="*.imp"/>
+	</mime-type>
+	<mime-type type="application/vnd.acucobol">
+		<glob pattern="*.acu"/>
+	</mime-type>
+	<mime-type type="application/vnd.acucorp">
+		<glob pattern="*.atc"/>
+		<glob pattern="*.acutc"/>
+	</mime-type>
+	<mime-type type="application/vnd.adobe.air-application-installer-package+zip">
+		<glob pattern="*.air"/>
+	</mime-type>
+	<mime-type type="application/vnd.adobe.xdp+xml">
+		<glob pattern="*.xdp"/>
+	</mime-type>
+	<mime-type type="application/vnd.adobe.xfdf">
+		<glob pattern="*.xfdf"/>
+	</mime-type>
+	<mime-type type="application/vnd.aether.imp"/>
+	<mime-type type="application/vnd.airzip.filesecure.azf">
+		<glob pattern="*.azf"/>
+	</mime-type>
+	<mime-type type="application/vnd.airzip.filesecure.azs">
+		<glob pattern="*.azs"/>
+	</mime-type>
+	<mime-type type="application/vnd.amazon.ebook">
+		<glob pattern="*.azw"/>
+	</mime-type>
+	<mime-type type="application/vnd.americandynamics.acc">
+		<glob pattern="*.acc"/>
+	</mime-type>
+	<mime-type type="application/vnd.amiga.ami">
+		<glob pattern="*.ami"/>
+	</mime-type>
+	<mime-type type="application/vnd.android.package-archive">
+		<glob pattern="*.apk"/>
+	</mime-type>
+	<mime-type type="application/vnd.anser-web-certificate-issue-initiation">
+		<glob pattern="*.cii"/>
+	</mime-type>
+	<mime-type type="application/vnd.anser-web-funds-transfer-initiation">
+		<glob pattern="*.fti"/>
+	</mime-type>
+	<mime-type type="application/vnd.antix.game-component">
+		<glob pattern="*.atx"/>
+	</mime-type>
+	<mime-type type="application/vnd.apple.installer+xml">
+		<glob pattern="*.mpkg"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.apple.iwork">
+		<sub-class-of type="application/zip"/>
+		<glob pattern="*.key"/>
+		<glob pattern="*.pages"/>
+		<glob pattern="*.numbers"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.apple.keynote">
+		<root-XML localName="presentation" namespaceURI="http://developer.apple.com/namespaces/keynote2" />
+	</mime-type>
+	<mime-type type="application/vnd.apple.pages">
+		<root-XML localName="document" namespaceURI="http://developer.apple.com/namespaces/sl" />
+	</mime-type>
+	<mime-type type="application/vnd.apple.numbers">
+		<root-XML localName="document" namespaceURI="http://developer.apple.com/namespaces/ls" />
+	</mime-type>
+	<mime-type type="application/vnd.arastra.swi">
+		<glob pattern="*.swi"/>
+	</mime-type>
+	<mime-type type="application/vnd.audiograph">
+		<glob pattern="*.aep"/>
+	</mime-type>
+	<mime-type type="application/vnd.autopackage"/>
+	<mime-type type="application/vnd.avistar+xml"/>
+	<mime-type type="application/vnd.blueice.multipass">
+		<glob pattern="*.mpm"/>
+	</mime-type>
+	<mime-type type="application/vnd.bluetooth.ep.oob"/>
+	<mime-type type="application/vnd.bmi">
+		<glob pattern="*.bmi"/>
+	</mime-type>
+	<mime-type type="application/vnd.businessobjects">
+		<glob pattern="*.rep"/>
+	</mime-type>
+	<mime-type type="application/vnd.cab-jscript"/>
+	<mime-type type="application/vnd.canon-cpdl"/>
+	<mime-type type="application/vnd.canon-lips"/>
+	<mime-type type="application/vnd.cendio.thinlinc.clientconf"/>
+	<mime-type type="application/vnd.chemdraw+xml">
+		<glob pattern="*.cdxml"/>
+	</mime-type>
+	<mime-type type="application/vnd.chipnuts.karaoke-mmd">
+		<glob pattern="*.mmd"/>
+	</mime-type>
+	<mime-type type="application/vnd.cinderella">
+		<glob pattern="*.cdy"/>
+	</mime-type>
+	<mime-type type="application/vnd.cirpack.isdn-ext"/>
+	<mime-type type="application/vnd.claymore">
+		<glob pattern="*.cla"/>
+	</mime-type>
+	<mime-type type="application/vnd.clonk.c4group">
+		<glob pattern="*.c4g"/>
+		<glob pattern="*.c4d"/>
+		<glob pattern="*.c4f"/>
+		<glob pattern="*.c4p"/>
+		<glob pattern="*.c4u"/>
+	</mime-type>
+	<mime-type type="application/vnd.commerce-battelle"/>
+	<mime-type type="application/vnd.commonspace">
+		<glob pattern="*.csp"/>
+	</mime-type>
+	<mime-type type="application/vnd.contact.cmsg">
+		<glob pattern="*.cdbcmsg"/>
+	</mime-type>
+	<mime-type type="application/vnd.cosmocaller">
+		<glob pattern="*.cmc"/>
+	</mime-type>
+	<mime-type type="application/vnd.crick.clicker">
+		<glob pattern="*.clkx"/>
+	</mime-type>
+	<mime-type type="application/vnd.crick.clicker.keyboard">
+		<glob pattern="*.clkk"/>
+	</mime-type>
+	<mime-type type="application/vnd.crick.clicker.palette">
+		<glob pattern="*.clkp"/>
+	</mime-type>
+	<mime-type type="application/vnd.crick.clicker.template">
+		<glob pattern="*.clkt"/>
+	</mime-type>
+	<mime-type type="application/vnd.crick.clicker.wordbank">
+		<glob pattern="*.clkw"/>
+	</mime-type>
+	<mime-type type="application/vnd.criticaltools.wbs+xml">
+		<glob pattern="*.wbs"/>
+	</mime-type>
+	<mime-type type="application/vnd.ctc-posml">
+		<glob pattern="*.pml"/>
+	</mime-type>
+	<mime-type type="application/vnd.ctct.ws+xml"/>
+	<mime-type type="application/vnd.cups-pdf"/>
+	<mime-type type="application/vnd.cups-postscript"/>
+	<mime-type type="application/vnd.cups-ppd">
+		<glob pattern="*.ppd"/>
+	</mime-type>
+	<mime-type type="application/vnd.cups-raster"/>
+	<mime-type type="application/vnd.cups-raw"/>
+	<mime-type type="application/vnd.curl.car">
+		<glob pattern="*.car"/>
+	</mime-type>
+	<mime-type type="application/vnd.curl.pcurl">
+		<glob pattern="*.pcurl"/>
+	</mime-type>
+	<mime-type type="application/vnd.cybank"/>
+	<mime-type type="application/vnd.data-vision.rdz">
+		<glob pattern="*.rdz"/>
+	</mime-type>
+	<mime-type type="application/vnd.denovo.fcselayout-link">
+		<glob pattern="*.fe_launch"/>
+	</mime-type>
+	<mime-type type="application/vnd.dir-bi.plate-dl-nosuffix"/>
+	<mime-type type="application/vnd.dna">
+		<glob pattern="*.dna"/>
+	</mime-type>
+	<mime-type type="application/vnd.dolby.mlp">
+		<glob pattern="*.mlp"/>
+	</mime-type>
+	<mime-type type="application/vnd.dolby.mobile.1"/>
+	<mime-type type="application/vnd.dolby.mobile.2"/>
+	<mime-type type="application/vnd.dpgraph">
+		<glob pattern="*.dpg"/>
+	</mime-type>
+	<mime-type type="application/vnd.dreamfactory">
+		<glob pattern="*.dfac"/>
+	</mime-type>
+	<mime-type type="application/vnd.dvb.esgcontainer"/>
+	<mime-type type="application/vnd.dvb.ipdcdftnotifaccess"/>
+	<mime-type type="application/vnd.dvb.ipdcesgaccess"/>
+	<mime-type type="application/vnd.dvb.ipdcroaming"/>
+	<mime-type type="application/vnd.dvb.iptv.alfec-base"/>
+	<mime-type type="application/vnd.dvb.iptv.alfec-enhancement"/>
+	<mime-type type="application/vnd.dvb.notif-aggregate-root+xml"/>
+	<mime-type type="application/vnd.dvb.notif-container+xml"/>
+	<mime-type type="application/vnd.dvb.notif-generic+xml"/>
+	<mime-type type="application/vnd.dvb.notif-ia-msglist+xml"/>
+	<mime-type type="application/vnd.dvb.notif-ia-registration-request+xml"/>
+	<mime-type type="application/vnd.dvb.notif-ia-registration-response+xml"/>
+	<mime-type type="application/vnd.dvb.notif-init+xml"/>
+	<mime-type type="application/vnd.dxr"/>
+	<mime-type type="application/vnd.dynageo">
+		<glob pattern="*.geo"/>
+	</mime-type>
+	<mime-type type="application/vnd.ecdis-update"/>
+	<mime-type type="application/vnd.ecowin.chart">
+		<glob pattern="*.mag"/>
+	</mime-type>
+	<mime-type type="application/vnd.ecowin.filerequest"/>
+	<mime-type type="application/vnd.ecowin.fileupdate"/>
+	<mime-type type="application/vnd.ecowin.series"/>
+	<mime-type type="application/vnd.ecowin.seriesrequest"/>
+	<mime-type type="application/vnd.ecowin.seriesupdate"/>
+	<mime-type type="application/vnd.emclient.accessrequest+xml"/>
+	<mime-type type="application/vnd.enliven">
+		<glob pattern="*.nml"/>
+	</mime-type>
+	<mime-type type="application/vnd.epson.esf">
+		<glob pattern="*.esf"/>
+	</mime-type>
+	<mime-type type="application/vnd.epson.msf">
+		<glob pattern="*.msf"/>
+	</mime-type>
+	<mime-type type="application/vnd.epson.quickanime">
+		<glob pattern="*.qam"/>
+	</mime-type>
+	<mime-type type="application/vnd.epson.salt">
+		<glob pattern="*.slt"/>
+	</mime-type>
+	<mime-type type="application/vnd.epson.ssf">
+		<glob pattern="*.ssf"/>
+	</mime-type>
+	<mime-type type="application/vnd.ericsson.quickcall"/>
+	<mime-type type="application/vnd.eszigno3+xml">
+		<glob pattern="*.es3"/>
+		<glob pattern="*.et3"/>
+	</mime-type>
+	<mime-type type="application/vnd.etsi.aoc+xml"/>
+	<mime-type type="application/vnd.etsi.cug+xml"/>
+	<mime-type type="application/vnd.etsi.iptvcommand+xml"/>
+	<mime-type type="application/vnd.etsi.iptvdiscovery+xml"/>
+	<mime-type type="application/vnd.etsi.iptvprofile+xml"/>
+	<mime-type type="application/vnd.etsi.iptvsad-bc+xml"/>
+	<mime-type type="application/vnd.etsi.iptvsad-cod+xml"/>
+	<mime-type type="application/vnd.etsi.iptvsad-npvr+xml"/>
+	<mime-type type="application/vnd.etsi.iptvueprofile+xml"/>
+	<mime-type type="application/vnd.etsi.mcid+xml"/>
+	<mime-type type="application/vnd.etsi.sci+xml"/>
+	<mime-type type="application/vnd.etsi.simservs+xml"/>
+	<mime-type type="application/vnd.eudora.data"/>
+	<mime-type type="application/vnd.ezpix-album">
+		<glob pattern="*.ez2"/>
+	</mime-type>
+	<mime-type type="application/vnd.ezpix-package">
+		<glob pattern="*.ez3"/>
+	</mime-type>
+	<mime-type type="application/vnd.f-secure.mobile"/>
+	<mime-type type="application/vnd.fdf">
+		<glob pattern="*.fdf"/>
+	</mime-type>
+	<mime-type type="application/vnd.fdsn.mseed">
+		<glob pattern="*.mseed"/>
+	</mime-type>
+	<mime-type type="application/vnd.fdsn.seed">
+		<glob pattern="*.seed"/>
+		<glob pattern="*.dataless"/>
+	</mime-type>
+	<mime-type type="application/vnd.ffsns"/>
+	<mime-type type="application/vnd.fints"/>
+	<mime-type type="application/vnd.flographit">
+		<glob pattern="*.gph"/>
+	</mime-type>
+	<mime-type type="application/vnd.fluxtime.clip">
+		<glob pattern="*.ftc"/>
+	</mime-type>
+	<mime-type type="application/vnd.font-fontforge-sfd"/>
+	<mime-type type="application/vnd.framemaker">
+		<glob pattern="*.fm"/>
+		<glob pattern="*.frame"/>
+		<glob pattern="*.maker"/>
+		<glob pattern="*.book"/>
+	</mime-type>
+	<mime-type type="application/vnd.frogans.fnc">
+		<glob pattern="*.fnc"/>
+	</mime-type>
+	<mime-type type="application/vnd.frogans.ltf">
+		<glob pattern="*.ltf"/>
+	</mime-type>
+	<mime-type type="application/vnd.fsc.weblaunch">
+		<glob pattern="*.fsc"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujitsu.oasys">
+		<glob pattern="*.oas"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujitsu.oasys2">
+		<glob pattern="*.oa2"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujitsu.oasys3">
+		<glob pattern="*.oa3"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujitsu.oasysgp">
+		<glob pattern="*.fg5"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujitsu.oasysprs">
+		<glob pattern="*.bh2"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujixerox.art-ex"/>
+	<mime-type type="application/vnd.fujixerox.art4"/>
+	<mime-type type="application/vnd.fujixerox.hbpl"/>
+	<mime-type type="application/vnd.fujixerox.ddd">
+		<glob pattern="*.ddd"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujixerox.docuworks">
+		<glob pattern="*.xdw"/>
+	</mime-type>
+	<mime-type type="application/vnd.fujixerox.docuworks.binder">
+		<glob pattern="*.xbd"/>
+	</mime-type>
+	<mime-type type="application/vnd.fut-misnet"/>
+	<mime-type type="application/vnd.fuzzysheet">
+		<glob pattern="*.fzs"/>
+	</mime-type>
+	<mime-type type="application/vnd.genomatix.tuxedo">
+		<glob pattern="*.txd"/>
+	</mime-type>
+	<mime-type type="application/vnd.geogebra.file">
+		<glob pattern="*.ggb"/>
+	</mime-type>
+	<mime-type type="application/vnd.geogebra.tool">
+		<glob pattern="*.ggt"/>
+	</mime-type>
+	<mime-type type="application/vnd.geometry-explorer">
+		<glob pattern="*.gex"/>
+		<glob pattern="*.gre"/>
+	</mime-type>
+	<mime-type type="application/vnd.gmx">
+		<glob pattern="*.gmx"/>
+	</mime-type>
+	<mime-type type="application/vnd.google-earth.kml+xml">
+		<glob pattern="*.kml"/>
+	</mime-type>
+	<mime-type type="application/vnd.google-earth.kmz">
+		<glob pattern="*.kmz"/>
+	</mime-type>
+	<mime-type type="application/vnd.grafeq">
+		<glob pattern="*.gqf"/>
+		<glob pattern="*.gqs"/>
+	</mime-type>
+	<mime-type type="application/vnd.gridmp"/>
+	<mime-type type="application/vnd.groove-account">
+		<glob pattern="*.gac"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-help">
+		<glob pattern="*.ghf"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-identity-message">
+		<glob pattern="*.gim"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-injector">
+		<glob pattern="*.grv"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-tool-message">
+		<glob pattern="*.gtm"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-tool-template">
+		<glob pattern="*.tpl"/>
+	</mime-type>
+	<mime-type type="application/vnd.groove-vcard">
+		<glob pattern="*.vcg"/>
+	</mime-type>
+	<mime-type type="application/vnd.handheld-entertainment+xml">
+		<glob pattern="*.zmm"/>
+	</mime-type>
+	<mime-type type="application/vnd.hbci">
+		<glob pattern="*.hbci"/>
+	</mime-type>
+	<mime-type type="application/vnd.hcl-bireports"/>
+	<mime-type type="application/vnd.hhe.lesson-player">
+		<glob pattern="*.les"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-hpgl">
+		<glob pattern="*.hpgl"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-hpid">
+		<glob pattern="*.hpid"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-hps">
+		<glob pattern="*.hps"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-jlyt">
+		<glob pattern="*.jlt"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-pcl">
+		<glob pattern="*.pcl"/>
+	</mime-type>
+	<mime-type type="application/vnd.hp-pclxl">
+		<glob pattern="*.pclxl"/>
+	</mime-type>
+	<mime-type type="application/vnd.httphone"/>
+	<mime-type type="application/vnd.hydrostatix.sof-data">
+		<glob pattern="*.sfd-hdstx"/>
+	</mime-type>
+	<mime-type type="application/vnd.hzn-3d-crossword">
+		<glob pattern="*.x3d"/>
+	</mime-type>
+	<mime-type type="application/vnd.ibm.afplinedata"/>
+	<mime-type type="application/vnd.ibm.electronic-media"/>
+	<mime-type type="application/vnd.ibm.minipay">
+		<glob pattern="*.mpy"/>
+	</mime-type>
+	<mime-type type="application/vnd.ibm.modcap">
+		<glob pattern="*.afp"/>
+		<glob pattern="*.listafp"/>
+		<glob pattern="*.list3820"/>
+	</mime-type>
+	<mime-type type="application/vnd.ibm.rights-management">
+		<glob pattern="*.irm"/>
+	</mime-type>
+	<mime-type type="application/vnd.ibm.secure-container">
+		<glob pattern="*.sc"/>
+	</mime-type>
+	<mime-type type="application/vnd.iccprofile">
+		<glob pattern="*.icc"/>
+		<glob pattern="*.icm"/>
+	</mime-type>
+	<mime-type type="application/vnd.igloader">
+		<glob pattern="*.igl"/>
+	</mime-type>
+	<mime-type type="application/vnd.immervision-ivp">
+		<glob pattern="*.ivp"/>
+	</mime-type>
+	<mime-type type="application/vnd.immervision-ivu">
+		<glob pattern="*.ivu"/>
+	</mime-type>
+	<mime-type type="application/vnd.informedcontrol.rms+xml"/>
+	<mime-type type="application/vnd.informix-visionary"/>
+	<mime-type type="application/vnd.intercon.formnet">
+		<glob pattern="*.xpw"/>
+		<glob pattern="*.xpx"/>
+	</mime-type>
+	<mime-type type="application/vnd.intertrust.digibox"/>
+	<mime-type type="application/vnd.intertrust.nncp"/>
+	<mime-type type="application/vnd.intu.qbo">
+		<glob pattern="*.qbo"/>
+	</mime-type>
+	<mime-type type="application/vnd.intu.qfx">
+		<glob pattern="*.qfx"/>
+	</mime-type>
+	<mime-type type="application/vnd.iptc.g2.conceptitem+xml"/>
+	<mime-type type="application/vnd.iptc.g2.knowledgeitem+xml"/>
+	<mime-type type="application/vnd.iptc.g2.newsitem+xml"/>
+	<mime-type type="application/vnd.iptc.g2.packageitem+xml"/>
+	<mime-type type="application/vnd.ipunplugged.rcprofile">
+		<glob pattern="*.rcprofile"/>
+	</mime-type>
+	<mime-type type="application/vnd.irepository.package+xml">
+		<glob pattern="*.irp"/>
+	</mime-type>
+	<mime-type type="application/vnd.is-xpr">
+		<glob pattern="*.xpr"/>
+	</mime-type>
+	<mime-type type="application/vnd.jam">
+		<glob pattern="*.jam"/>
+	</mime-type>
+	<mime-type type="application/vnd.japannet-directory-service"/>
+	<mime-type type="application/vnd.japannet-jpnstore-wakeup"/>
+	<mime-type type="application/vnd.japannet-payment-wakeup"/>
+	<mime-type type="application/vnd.japannet-registration"/>
+	<mime-type type="application/vnd.japannet-registration-wakeup"/>
+	<mime-type type="application/vnd.japannet-setstore-wakeup"/>
+	<mime-type type="application/vnd.japannet-verification"/>
+	<mime-type type="application/vnd.japannet-verification-wakeup"/>
+	<mime-type type="application/vnd.jcp.javame.midlet-rms">
+		<glob pattern="*.rms"/>
+	</mime-type>
+	<mime-type type="application/vnd.jisp">
+		<glob pattern="*.jisp"/>
+	</mime-type>
+	<mime-type type="application/vnd.joost.joda-archive">
+		<glob pattern="*.joda"/>
+	</mime-type>
+	<mime-type type="application/vnd.kahootz">
+		<glob pattern="*.ktz"/>
+		<glob pattern="*.ktr"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.karbon">
+		<glob pattern="*.karbon"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kchart">
+		<glob pattern="*.chrt"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kformula">
+		<glob pattern="*.kfo"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kivio">
+		<glob pattern="*.flw"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kontour">
+		<glob pattern="*.kon"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kpresenter">
+		<glob pattern="*.kpr"/>
+		<glob pattern="*.kpt"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kspread">
+		<glob pattern="*.ksp"/>
+	</mime-type>
+	<mime-type type="application/vnd.kde.kword">
+		<glob pattern="*.kwd"/>
+		<glob pattern="*.kwt"/>
+	</mime-type>
+	<mime-type type="application/vnd.kenameaapp">
+		<glob pattern="*.htke"/>
+	</mime-type>
+	<mime-type type="application/vnd.kidspiration">
+		<glob pattern="*.kia"/>
+	</mime-type>
+	<mime-type type="application/vnd.kinar">
+		<glob pattern="*.kne"/>
+		<glob pattern="*.knp"/>
+	</mime-type>
+	<mime-type type="application/vnd.koan">
+		<alias type="application/x-koan"/>
+		<_comment>SSEYO Koan File</_comment>
+		<glob pattern="*.skp"/>
+		<glob pattern="*.skd"/>
+		<glob pattern="*.skt"/>
+		<glob pattern="*.skm"/>
+	</mime-type>
+	<mime-type type="application/vnd.kodak-descriptor">
+		<glob pattern="*.sse"/>
+	</mime-type>
+	<mime-type type="application/vnd.liberty-request+xml"/>
+	<mime-type type="application/vnd.llamagraphics.life-balance.desktop">
+		<glob pattern="*.lbd"/>
+	</mime-type>
+	<mime-type type="application/vnd.llamagraphics.life-balance.exchange+xml">
+		<glob pattern="*.lbe"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-1-2-3">
+		<glob pattern="*.123"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-approach">
+		<glob pattern="*.apr"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-freelance">
+		<glob pattern="*.pre"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-notes">
+		<glob pattern="*.nsf"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-organizer">
+		<glob pattern="*.org"/>
+	</mime-type>
+	<mime-type type="application/vnd.lotus-screencam">
+		<glob pattern="*.scm"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.lotus-wordpro">
+		<magic priority="50">
+			<match value="WordPro\0" type="string" offset="0" />
+			<match value="WordPro\r\373" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.lwp"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.macports.portpkg">
+		<glob pattern="*.portpkg"/>
+	</mime-type>
+	<mime-type type="application/vnd.marlin.drm.actiontoken+xml"/>
+	<mime-type type="application/vnd.marlin.drm.conftoken+xml"/>
+	<mime-type type="application/vnd.marlin.drm.license+xml"/>
+	<mime-type type="application/vnd.marlin.drm.mdcf"/>
+	<mime-type type="application/vnd.mcd">
+		<glob pattern="*.mcd"/>
+	</mime-type>
+	<mime-type type="application/vnd.medcalcdata">
+		<glob pattern="*.mc1"/>
+	</mime-type>
+	<mime-type type="application/vnd.mediastation.cdkey">
+		<glob pattern="*.cdkey"/>
+	</mime-type>
+	<mime-type type="application/vnd.meridian-slingshot"/>
+	<mime-type type="application/vnd.mfer">
+		<glob pattern="*.mwf"/>
+	</mime-type>
+	<mime-type type="application/vnd.mfmp">
+		<glob pattern="*.mfm"/>
+	</mime-type>
+	<mime-type type="application/vnd.micrografx.flo">
+		<glob pattern="*.flo"/>
+	</mime-type>
+	<mime-type type="application/vnd.micrografx.igx">
+		<glob pattern="*.igx"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.mif">
+		<_comment>FrameMaker MIF document</_comment>
+		<alias type="application/x-mif"/>
+		<alias type="application/x-frame"/>
+		<magic priority="50">
+			<match value="\&lt;MakerFile" type="string" offset="0" />
+			<match value="\&lt;MIFFile" type="string" offset="0" />
+			<match value="\&lt;MakerDictionary" type="string" offset="0" />
+			<match value="\&lt;MakerScreenFont" type="string" offset="0" />
+			<match value="\&lt;MML" type="string" offset="0" />
+			<match value="\&lt;Book" type="string" offset="0" />
+			<match value="\&lt;Maker" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.mif"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.minisoft-hp3000-save"/>
+	<mime-type type="application/vnd.mitsubishi.misty-guard.trustweb"/>
+	<mime-type type="application/vnd.mobius.daf">
+		<glob pattern="*.daf"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.dis">
+		<glob pattern="*.dis"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.mbk">
+		<glob pattern="*.mbk"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.mqy">
+		<glob pattern="*.mqy"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.msl">
+		<glob pattern="*.msl"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.plc">
+		<glob pattern="*.plc"/>
+	</mime-type>
+	<mime-type type="application/vnd.mobius.txf">
+		<glob pattern="*.txf"/>
+	</mime-type>
+	<mime-type type="application/vnd.mophun.application">
+		<glob pattern="*.mpn"/>
+	</mime-type>
+	<mime-type type="application/vnd.mophun.certificate">
+		<glob pattern="*.mpc"/>
+	</mime-type>
+	<mime-type type="application/vnd.motorola.flexsuite"/>
+	<mime-type type="application/vnd.motorola.flexsuite.adsi"/>
+	<mime-type type="application/vnd.motorola.flexsuite.fis"/>
+	<mime-type type="application/vnd.motorola.flexsuite.gotap"/>
+	<mime-type type="application/vnd.motorola.flexsuite.kmr"/>
+	<mime-type type="application/vnd.motorola.flexsuite.ttc"/>
+	<mime-type type="application/vnd.motorola.flexsuite.wem"/>
+	<mime-type type="application/vnd.motorola.iprm"/>
+	<mime-type type="application/vnd.mozilla.xul+xml">
+		<glob pattern="*.xul"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-artgalry">
+		<glob pattern="*.cil"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-asf"/>
+	<mime-type type="application/vnd.ms-cab-compressed">
+		<glob pattern="*.cab"/>
+	</mime-type>
+
+	<!-- http://www.iana.org/assignments/media-types/application/vnd.ms-excel -->
+	<mime-type type="application/vnd.ms-excel">
+		<!-- Use org.apache.tika.detect.ContainerAwareDetector for more reliable detection of OLE2 documents -->
+		<alias type="application/msexcel" />
+		<_comment>Microsoft Excel Spreadsheet</_comment>
+		<magic priority="50">
+			<match value="Microsoft\ Excel\ 5.0\ Worksheet" type="string" offset="2080"/>
+			<match value="Foglio\ di\ lavoro\ Microsoft\ Exce" type="string" offset="2080"/>
+			<match value="Biff5" type="string" offset="2114"/>
+			<match value="Biff5" type="string" offset="2121"/>
+			<match value="\x09\x04\x06\x00\x00\x00\x10\x00" type="string" offset="0"/>
+			<match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+				<match value="W\x00o\x00r\x00k\x00b\x00o\x00o\x00k" type="string" offset="1152:4096" />
+			</match>
+		</magic>
+		<glob pattern="*.xls"/>
+		<glob pattern="*.xlm"/>
+		<glob pattern="*.xla"/>
+		<glob pattern="*.xlc"/>
+		<glob pattern="*.xlt"/>
+		<glob pattern="*.xlw"/>
+		<glob pattern="*.xll"/>
+		<glob pattern="*.xld"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-excel.addin.macroenabled.12">
+		<_comment>Office Open XML Workbook Add-in (macro-enabled)</_comment>
+		<glob pattern="*.xlam"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-excel.sheet.macroenabled.12">
+		<_comment>Office Open XML Workbook (macro-enabled)</_comment>
+		<glob pattern="*.xlsm"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-excel.sheet.binary.macroenabled.12">
+		<_comment>Microsoft Excel 2007 Binary Spreadsheet</_comment>
+		<glob pattern="*.xlsb"/>
+		<sub-class-of type="application/vnd.ms-excel"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-excel.template.macroenabled.12">
+		<glob pattern="*.xltm"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-fontobject">
+		<glob pattern="*.eot"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-htmlhelp">
+		<glob pattern="*.chm"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-ims">
+		<glob pattern="*.ims"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-lrm">
+		<glob pattern="*.lrm"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-outlook">
+		<_comment>Microsoft Outlook Message</_comment>
+		<glob pattern="*.msg" />
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-pki.seccat">
+		<glob pattern="*.cat"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-pki.stl">
+		<glob pattern="*.stl"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-playready.initiator+xml"/>
+
+	<!-- http://www.iana.org/assignments/media-types/application/vnd.ms-powerpoint -->
+	<mime-type type="application/vnd.ms-powerpoint">
+		<!-- Use org.apache.tika.detect.ContainerAwareDetector for more reliable detection of OLE2 documents -->
+		<alias type="application/mspowerpoint"/>
+		<_comment>Microsoft Powerpoint Presentation</_comment>
+		<magic priority="50">
+			<match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8">
+				<match value="P\x00o\x00w\x00e\x00r\x00P\x00o\x00i\x00n\x00t\x00 D\x00o\x00c\x00u\x00m\x00e\x00n\x00t" type="string" offset="1152:4096" />
+			</match>
+		</magic>
+		<glob pattern="*.ppz"/>
+		<glob pattern="*.ppt"/>
+		<glob pattern="*.pps"/>
+		<glob pattern="*.pot"/>
+		<glob pattern="*.ppa"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-powerpoint.addin.macroenabled.12">
+		<_comment>Office Open XML Presentation Add-in (macro-enabled)</_comment>
+		<glob pattern="*.ppam"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-powerpoint.presentation.macroenabled.12">
+		<_comment>Office Open XML Presentation (macro-enabled)</_comment>
+		<glob pattern="*.pptm"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-powerpoint.slide.macroenabled.12">
+		<glob pattern="*.sldm"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-powerpoint.slideshow.macroenabled.12">
+		<_comment>Office Open XML Presentation Slideshow (macro-enabled)</_comment>
+		<glob pattern="*.ppsm"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-powerpoint.template.macroenabled.12">
+		<glob pattern="*.potm"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-project">
+		<glob pattern="*.mpp"/>
+		<glob pattern="*.mpt"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-tnef">
+		<alias type="application/ms-tnef" />
+		<magic priority="50">
+			<match value="0x223e9f78" type="little16" offset="0" />
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-wmdrm.lic-chlg-req"/>
+	<mime-type type="application/vnd.ms-wmdrm.lic-resp"/>
+	<mime-type type="application/vnd.ms-wmdrm.meter-chlg-req"/>
+	<mime-type type="application/vnd.ms-wmdrm.meter-resp"/>
+
+	<mime-type type="application/vnd.ms-word.document.macroenabled.12">
+		<_comment>Office Open XML Document (macro-enabled)</_comment>
+		<glob pattern="*.docm"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-word.template.macroenabled.12">
+		<_comment>Office Open XML Document Template (macro-enabled)</_comment>
+		<glob pattern="*.dotm"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-works">
+		<glob pattern="*.wps"/>
+		<glob pattern="*.wks"/>
+		<glob pattern="*.wcm"/>
+		<glob pattern="*.wdb"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-wpl">
+		<glob pattern="*.wpl"/>
+	</mime-type>
+	<mime-type type="application/vnd.ms-xpsdocument">
+		<glob pattern="*.xps"/>
+	</mime-type>
+	<mime-type type="application/vnd.mseq">
+		<glob pattern="*.mseq"/>
+	</mime-type>
+	<mime-type type="application/vnd.msign"/>
+	<mime-type type="application/vnd.multiad.creator"/>
+	<mime-type type="application/vnd.multiad.creator.cif"/>
+	<mime-type type="application/vnd.music-niff"/>
+	<mime-type type="application/vnd.musician">
+		<glob pattern="*.mus"/>
+	</mime-type>
+	<mime-type type="application/vnd.muvee.style">
+		<glob pattern="*.msty"/>
+	</mime-type>
+	<mime-type type="application/vnd.ncd.control"/>
+	<mime-type type="application/vnd.ncd.reference"/>
+	<mime-type type="application/vnd.nervana"/>
+	<mime-type type="application/vnd.netfpx"/>
+	<mime-type type="application/vnd.neurolanguage.nlu">
+		<glob pattern="*.nlu"/>
+	</mime-type>
+	<mime-type type="application/vnd.noblenet-directory">
+		<glob pattern="*.nnd"/>
+	</mime-type>
+	<mime-type type="application/vnd.noblenet-sealer">
+		<glob pattern="*.nns"/>
+	</mime-type>
+	<mime-type type="application/vnd.noblenet-web">
+		<glob pattern="*.nnw"/>
+	</mime-type>
+	<mime-type type="application/vnd.nokia.catalogs"/>
+	<mime-type type="application/vnd.nokia.conml+wbxml"/>
+	<mime-type type="application/vnd.nokia.conml+xml"/>
+	<mime-type type="application/vnd.nokia.isds-radio-presets"/>
+	<mime-type type="application/vnd.nokia.iptv.config+xml"/>
+	<mime-type type="application/vnd.nokia.landmark+wbxml"/>
+	<mime-type type="application/vnd.nokia.landmark+xml"/>
+	<mime-type type="application/vnd.nokia.landmarkcollection+xml"/>
+	<mime-type type="application/vnd.nokia.n-gage.ac+xml"/>
+	<mime-type type="application/vnd.nokia.n-gage.data">
+		<glob pattern="*.ngdat"/>
+	</mime-type>
+	<mime-type type="application/vnd.nokia.n-gage.symbian.install">
+		<glob pattern="*.n-gage"/>
+	</mime-type>
+	<mime-type type="application/vnd.nokia.ncd"/>
+	<mime-type type="application/vnd.nokia.pcd+wbxml"/>
+	<mime-type type="application/vnd.nokia.pcd+xml"/>
+	<mime-type type="application/vnd.nokia.radio-preset">
+		<glob pattern="*.rpst"/>
+	</mime-type>
+	<mime-type type="application/vnd.nokia.radio-presets">
+		<glob pattern="*.rpss"/>
+	</mime-type>
+	<mime-type type="application/vnd.novadigm.edm">
+		<glob pattern="*.edm"/>
+	</mime-type>
+	<mime-type type="application/vnd.novadigm.edx">
+		<glob pattern="*.edx"/>
+	</mime-type>
+	<mime-type type="application/vnd.novadigm.ext">
+		<glob pattern="*.ext"/>
+	</mime-type>
+
+	<!-- =================================================================== -->
+	<!-- Open Document Format for Office Applications (OpenDocument) v1.0 -->
+	<!-- http://www.oasis-open.org/specs/index.php#opendocumentv1.0 -->
+	<!-- =================================================================== -->
+
+	<mime-type type="application/vnd.oasis.opendocument.chart">
+		<alias type="application/x-vnd.oasis.opendocument.chart"/>
+		<_comment>OpenDocument v1.0: Chart document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.chart"/>
+			</match>
+		</magic>
+		<glob pattern="*.odc"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.chart-template">
+		<alias type="application/x-vnd.oasis.opendocument.chart-template"/>
+		<_comment>OpenDocument v1.0: Chart document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.chart-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.otc"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.database">
+		<glob pattern="*.odb"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.formula">
+		<alias type="application/x-vnd.oasis.opendocument.formula"/>
+		<_comment>OpenDocument v1.0: Formula document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.formula" />
+			</match>
+		</magic>
+		<glob pattern="*.odf"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.formula-template">
+		<alias type="application/x-vnd.oasis.opendocument.formula-template"/>
+		<_comment>OpenDocument v1.0: Formula document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.formula-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.odft"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.graphics">
+		<alias type="application/x-vnd.oasis.opendocument.graphics"/>
+		<_comment>OpenDocument v1.0: Graphics document (Drawing)</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.graphics"/>
+			</match>
+		</magic>
+		<glob pattern="*.odg"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.graphics-template">
+		<alias type="application/x-vnd.oasis.opendocument.graphics-template"/>
+		<_comment>OpenDocument v1.0: Graphics document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.graphics-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.otg"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.image">
+		<alias type="application/x-vnd.oasis.opendocument.image"/>
+		<_comment>OpenDocument v1.0: Image document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.image"/>
+			</match>
+		</magic>
+		<glob pattern="*.odi"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.image-template">
+		<alias type="application/x-vnd.oasis.opendocument.image-template"/>
+		<_comment>OpenDocument v1.0: Image document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.image-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.oti"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.presentation">
+		<alias type="application/x-vnd.oasis.opendocument.presentation"/>
+		<_comment>OpenDocument v1.0: Presentation document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.presentation"/>
+			</match>
+		</magic>
+		<glob pattern="*.odp"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.presentation-template">
+		<alias type="application/x-vnd.oasis.opendocument.presentation-template"/>
+		<_comment>OpenDocument v1.0: Presentation document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.presentation-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.otp"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.spreadsheet">
+		<alias type="application/x-vnd.oasis.opendocument.spreadsheet"/>
+		<_comment>OpenDocument v1.0: Spreadsheet document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.spreadsheet"/>
+			</match>
+		</magic>
+		<glob pattern="*.ods"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.spreadsheet-template">
+		<alias type="application/x-vnd.oasis.opendocument.spreadsheet-template"/>
+		<_comment>OpenDocument v1.0: Spreadsheet document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.spreadsheet-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.ots"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.text">
+		<alias type="application/x-vnd.oasis.opendocument.text"/>
+		<_comment>OpenDocument v1.0: Text document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.text"/>
+			</match>
+		</magic>
+		<glob pattern="*.odt"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.text-master">
+		<alias type="application/x-vnd.oasis.opendocument.text-master"/>
+		<_comment>OpenDocument v1.0: Global Text document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.text-master"/>
+			</match>
+		</magic>
+		<glob pattern="*.otm"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.text-template">
+		<alias type="application/x-vnd.oasis.opendocument.text-template"/>
+		<_comment>OpenDocument v1.0: Text document used as template</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.text-template"/>
+			</match>
+		</magic>
+		<glob pattern="*.ott"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.oasis.opendocument.text-web">
+		<alias type="application/x-vnd.oasis.opendocument.text-web"/>
+		<_comment>OpenDocument v1.0: Text document used as template for HTML documents</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.oasis.opendocument.text-web"/>
+			</match>
+		</magic>
+		<glob pattern="*.oth"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.obn"/>
+	<mime-type type="application/vnd.olpc-sugar">
+		<glob pattern="*.xo"/>
+	</mime-type>
+	<mime-type type="application/vnd.oma-scws-config"/>
+	<mime-type type="application/vnd.oma-scws-http-request"/>
+	<mime-type type="application/vnd.oma-scws-http-response"/>
+	<mime-type type="application/vnd.oma.bcast.associated-procedure-parameter+xml"/>
+	<mime-type type="application/vnd.oma.bcast.drm-trigger+xml"/>
+	<mime-type type="application/vnd.oma.bcast.imd+xml"/>
+	<mime-type type="application/vnd.oma.bcast.ltkm"/>
+	<mime-type type="application/vnd.oma.bcast.notification+xml"/>
+	<mime-type type="application/vnd.oma.bcast.provisioningtrigger"/>
+	<mime-type type="application/vnd.oma.bcast.sgboot"/>
+	<mime-type type="application/vnd.oma.bcast.sgdd+xml"/>
+	<mime-type type="application/vnd.oma.bcast.sgdu"/>
+	<mime-type type="application/vnd.oma.bcast.simple-symbol-container"/>
+	<mime-type type="application/vnd.oma.bcast.smartcard-trigger+xml"/>
+	<mime-type type="application/vnd.oma.bcast.sprov+xml"/>
+	<mime-type type="application/vnd.oma.bcast.stkm"/>
+	<mime-type type="application/vnd.oma.dcd"/>
+	<mime-type type="application/vnd.oma.dcdc"/>
+	<mime-type type="application/vnd.oma.dd2+xml">
+		<glob pattern="*.dd2"/>
+	</mime-type>
+	<mime-type type="application/vnd.oma.drm.risd+xml"/>
+	<mime-type type="application/vnd.oma.group-usage-list+xml"/>
+	<mime-type type="application/vnd.oma.poc.detailed-progress-report+xml"/>
+	<mime-type type="application/vnd.oma.poc.final-report+xml"/>
+	<mime-type type="application/vnd.oma.poc.groups+xml"/>
+	<mime-type type="application/vnd.oma.poc.invocation-descriptor+xml"/>
+	<mime-type type="application/vnd.oma.poc.optimized-progress-report+xml"/>
+	<mime-type type="application/vnd.oma.xcap-directory+xml"/>
+	<mime-type type="application/vnd.omads-email+xml"/>
+	<mime-type type="application/vnd.omads-file+xml"/>
+	<mime-type type="application/vnd.omads-folder+xml"/>
+	<mime-type type="application/vnd.omaloc-supl-init"/>
+
+	<mime-type type="application/vnd.openofficeorg.extension">
+		<glob pattern="*.oxt"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.presentationml.presentation">
+		<_comment>Office Open XML Presentation</_comment>
+		<glob pattern="*.pptx"/>
+		<glob pattern="*.thmx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slide">
+		<glob pattern="*.sldx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slideshow">
+		<glob pattern="*.ppsx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.presentationml.template">
+		<_comment>Office Open XML Presentation Template</_comment>
+		<glob pattern="*.potx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slideshow">
+		<_comment>Office Open XML Presentation Slideshow</_comment>
+		<glob pattern="*.ppsx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
+		<_comment>Office Open XML Workbook</_comment>
+		<glob pattern="*.xlsx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.template">
+		<_comment>Office Open XML Workbook Template</_comment>
+		<glob pattern="*.xltx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.ms-excel.template.macroenabled.12">
+		<_comment>Office Open XML Workbook Template (macro-enabled)</_comment>
+		<glob pattern="*.xltm"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.document">
+		<_comment>Office Open XML Document</_comment>
+		<glob pattern="*.docx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.template">
+		<_comment>Office Open XML Document Template</_comment>
+		<glob pattern="*.dotx"/>
+		<sub-class-of type="application/x-tika-ooxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.osa.netdeploy"/>
+	<mime-type type="application/vnd.osgi.bundle"/>
+	<mime-type type="application/vnd.osgi.dp">
+		<glob pattern="*.dp"/>
+	</mime-type>
+	<mime-type type="application/vnd.otps.ct-kip+xml"/>
+	<mime-type type="application/vnd.palm">
+		<glob pattern="*.pdb"/>
+		<glob pattern="*.pqa"/>
+		<glob pattern="*.oprc"/>
+	</mime-type>
+	<mime-type type="application/vnd.paos.xml"/>
+	<mime-type type="application/vnd.pg.format">
+		<glob pattern="*.str"/>
+	</mime-type>
+	<mime-type type="application/vnd.pg.osasli">
+		<glob pattern="*.ei6"/>
+	</mime-type>
+	<mime-type type="application/vnd.piaccess.application-licence"/>
+	<mime-type type="application/vnd.picsel">
+		<glob pattern="*.efif"/>
+	</mime-type>
+	<mime-type type="application/vnd.poc.group-advertisement+xml"/>
+	<mime-type type="application/vnd.pocketlearn">
+		<glob pattern="*.plf"/>
+	</mime-type>
+	<mime-type type="application/vnd.powerbuilder6">
+		<glob pattern="*.pbd"/>
+	</mime-type>
+	<mime-type type="application/vnd.powerbuilder6-s"/>
+	<mime-type type="application/vnd.powerbuilder7"/>
+	<mime-type type="application/vnd.powerbuilder7-s"/>
+	<mime-type type="application/vnd.powerbuilder75"/>
+	<mime-type type="application/vnd.powerbuilder75-s"/>
+	<mime-type type="application/vnd.preminet"/>
+	<mime-type type="application/vnd.previewsystems.box">
+		<glob pattern="*.box"/>
+	</mime-type>
+	<mime-type type="application/vnd.proteus.magazine">
+		<glob pattern="*.mgz"/>
+	</mime-type>
+	<mime-type type="application/vnd.publishare-delta-tree">
+		<glob pattern="*.qps"/>
+	</mime-type>
+	<mime-type type="application/vnd.pvi.ptid1">
+		<glob pattern="*.ptid"/>
+	</mime-type>
+	<mime-type type="application/vnd.pwg-multiplexed"/>
+	<mime-type type="application/vnd.pwg-xhtml-print+xml"/>
+	<mime-type type="application/vnd.qualcomm.brew-app-res"/>
+	<mime-type type="application/vnd.quark.quarkxpress">
+		<glob pattern="*.qxd"/>
+		<glob pattern="*.qxt"/>
+		<glob pattern="*.qwd"/>
+		<glob pattern="*.qwt"/>
+		<glob pattern="*.qxl"/>
+		<glob pattern="*.qxb"/>
+	</mime-type>
+	<mime-type type="application/vnd.rapid"/>
+	<mime-type type="application/vnd.recordare.musicxml">
+		<glob pattern="*.mxl"/>
+	</mime-type>
+	<mime-type type="application/vnd.recordare.musicxml+xml">
+		<glob pattern="*.musicxml"/>
+	</mime-type>
+	<mime-type type="application/vnd.renlearn.rlprint"/>
+	<mime-type type="application/vnd.rim.cod">
+		<glob pattern="*.cod"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.rn-realmedia">
+		<magic priority="50">
+			<match value=".RMF" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.rm"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.route66.link66+xml">
+		<glob pattern="*.link66"/>
+	</mime-type>
+	<mime-type type="application/vnd.ruckus.download"/>
+	<mime-type type="application/vnd.s3sms"/>
+	<mime-type type="application/vnd.sbm.cid"/>
+	<mime-type type="application/vnd.sbm.mid2"/>
+	<mime-type type="application/vnd.scribus"/>
+	<mime-type type="application/vnd.sealed.3df"/>
+	<mime-type type="application/vnd.sealed.csf"/>
+	<mime-type type="application/vnd.sealed.doc"/>
+	<mime-type type="application/vnd.sealed.eml"/>
+	<mime-type type="application/vnd.sealed.mht"/>
+	<mime-type type="application/vnd.sealed.net"/>
+	<mime-type type="application/vnd.sealed.ppt"/>
+	<mime-type type="application/vnd.sealed.tiff"/>
+	<mime-type type="application/vnd.sealed.xls"/>
+	<mime-type type="application/vnd.sealedmedia.softseal.html"/>
+	<mime-type type="application/vnd.sealedmedia.softseal.pdf"/>
+	<mime-type type="application/vnd.seemail">
+		<glob pattern="*.see"/>
+	</mime-type>
+	<mime-type type="application/vnd.sema">
+		<glob pattern="*.sema"/>
+	</mime-type>
+	<mime-type type="application/vnd.semd">
+		<glob pattern="*.semd"/>
+	</mime-type>
+	<mime-type type="application/vnd.semf">
+		<glob pattern="*.semf"/>
+	</mime-type>
+	<mime-type type="application/vnd.shana.informed.formdata">
+		<glob pattern="*.ifm"/>
+	</mime-type>
+	<mime-type type="application/vnd.shana.informed.formtemplate">
+		<glob pattern="*.itp"/>
+	</mime-type>
+	<mime-type type="application/vnd.shana.informed.interchange">
+		<glob pattern="*.iif"/>
+	</mime-type>
+	<mime-type type="application/vnd.shana.informed.package">
+		<glob pattern="*.ipk"/>
+	</mime-type>
+	<mime-type type="application/vnd.simtech-mindmapper">
+		<glob pattern="*.twd"/>
+		<glob pattern="*.twds"/>
+	</mime-type>
+	<mime-type type="application/vnd.smaf">
+		<glob pattern="*.mmf"/>
+	</mime-type>
+	<mime-type type="application/vnd.smart.teacher">
+		<glob pattern="*.teacher"/>
+	</mime-type>
+	<mime-type type="application/vnd.software602.filler.form+xml"/>
+	<mime-type type="application/vnd.software602.filler.form-xml-zip"/>
+	<mime-type type="application/vnd.solent.sdkm+xml">
+		<glob pattern="*.sdkm"/>
+		<glob pattern="*.sdkd"/>
+	</mime-type>
+	<mime-type type="application/vnd.spotfire.dxp">
+		<glob pattern="*.dxp"/>
+	</mime-type>
+	<mime-type type="application/vnd.spotfire.sfs">
+		<glob pattern="*.sfs"/>
+	</mime-type>
+	<mime-type type="application/vnd.sss-cod"/>
+	<mime-type type="application/vnd.sss-dtf"/>
+	<mime-type type="application/vnd.sss-ntf"/>
+	<mime-type type="application/vnd.stardivision.calc">
+		<glob pattern="*.sdc"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.draw">
+		<glob pattern="*.sda"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.impress">
+		<glob pattern="*.sdd"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.math">
+		<glob pattern="*.smf"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.writer">
+		<glob pattern="*.sdw"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.writer">
+		<glob pattern="*.vor"/>
+	</mime-type>
+	<mime-type type="application/vnd.stardivision.writer-global">
+		<glob pattern="*.sgl"/>
+	</mime-type>
+	<mime-type type="application/vnd.street-stream"/>
+	<mime-type type="application/vnd.sun.xml.calc">
+		<glob pattern="*.sxc"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.calc.template">
+		<glob pattern="*.stc"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.draw">
+		<glob pattern="*.sxd"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.draw.template">
+		<glob pattern="*.std"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.impress">
+		<glob pattern="*.sxi"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.impress.template">
+		<glob pattern="*.sti"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.math">
+		<glob pattern="*.sxm"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.sun.xml.writer">
+		<alias type="application/x-vnd.sun.xml.writer"/>
+		<_comment>OpenOffice v1.0: Writer Document</_comment>
+		<magic>
+			<match type="string" offset="0" value="PK">
+				<match type="string" offset="30"
+					   value="mimetypeapplication/vnd.sun.xml.writer"/>
+			</match>
+		</magic>
+		<glob pattern="*.sxw"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.sun.xml.writer.global">
+		<glob pattern="*.sxg"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.xml.writer.template">
+		<glob pattern="*.stw"/>
+	</mime-type>
+	<mime-type type="application/vnd.sun.wadl+xml"/>
+	<mime-type type="application/vnd.sus-calendar">
+		<glob pattern="*.sus"/>
+		<glob pattern="*.susp"/>
+	</mime-type>
+	<mime-type type="application/vnd.svd">
+		<glob pattern="*.svd"/>
+	</mime-type>
+	<mime-type type="application/vnd.swiftview-ics"/>
+
+	<mime-type type="application/vnd.symbian.install">
+		<magic priority="50">
+			<match value="0x10000419" type="little32" offset="8" />
+		</magic>
+		<glob pattern="*.sis"/>
+		<glob pattern="*.sisx"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.syncml+xml">
+		<glob pattern="*.xsm"/>
+	</mime-type>
+	<mime-type type="application/vnd.syncml.dm+wbxml">
+		<glob pattern="*.bdm"/>
+	</mime-type>
+	<mime-type type="application/vnd.syncml.dm+xml">
+		<glob pattern="*.xdm"/>
+	</mime-type>
+	<mime-type type="application/vnd.syncml.dm.notification"/>
+	<mime-type type="application/vnd.syncml.ds.notification"/>
+	<mime-type type="application/vnd.tao.intent-module-archive">
+		<glob pattern="*.tao"/>
+	</mime-type>
+	<mime-type type="application/vnd.tmobile-livetv">
+		<glob pattern="*.tmo"/>
+	</mime-type>
+	<mime-type type="application/vnd.trid.tpt">
+		<glob pattern="*.tpt"/>
+	</mime-type>
+	<mime-type type="application/vnd.triscape.mxs">
+		<glob pattern="*.mxs"/>
+	</mime-type>
+	<mime-type type="application/vnd.trueapp">
+		<glob pattern="*.tra"/>
+	</mime-type>
+	<mime-type type="application/vnd.truedoc"/>
+	<mime-type type="application/vnd.ufdl">
+		<glob pattern="*.ufd"/>
+		<glob pattern="*.ufdl"/>
+	</mime-type>
+	<mime-type type="application/vnd.uiq.theme">
+		<glob pattern="*.utz"/>
+	</mime-type>
+	<mime-type type="application/vnd.umajin">
+		<glob pattern="*.umj"/>
+	</mime-type>
+	<mime-type type="application/vnd.unity">
+		<glob pattern="*.unityweb"/>
+	</mime-type>
+	<mime-type type="application/vnd.uoml+xml">
+		<glob pattern="*.uoml"/>
+	</mime-type>
+	<mime-type type="application/vnd.uplanet.alert"/>
+	<mime-type type="application/vnd.uplanet.alert-wbxml"/>
+	<mime-type type="application/vnd.uplanet.bearer-choice"/>
+	<mime-type type="application/vnd.uplanet.bearer-choice-wbxml"/>
+	<mime-type type="application/vnd.uplanet.cacheop"/>
+	<mime-type type="application/vnd.uplanet.cacheop-wbxml"/>
+	<mime-type type="application/vnd.uplanet.channel"/>
+	<mime-type type="application/vnd.uplanet.channel-wbxml"/>
+	<mime-type type="application/vnd.uplanet.list"/>
+	<mime-type type="application/vnd.uplanet.list-wbxml"/>
+	<mime-type type="application/vnd.uplanet.listcmd"/>
+	<mime-type type="application/vnd.uplanet.listcmd-wbxml"/>
+	<mime-type type="application/vnd.uplanet.signal"/>
+	<mime-type type="application/vnd.vcx">
+		<glob pattern="*.vcx"/>
+	</mime-type>
+	<mime-type type="application/vnd.vd-study"/>
+	<mime-type type="application/vnd.vectorworks"/>
+	<mime-type type="application/vnd.vidsoft.vidconference"/>
+
+	<!-- http://www.iana.org/assignments/media-types/application/vnd.visio -->
+	<mime-type type="application/vnd.visio">
+		<_comment>Microsoft Visio Diagram</_comment>
+		<glob pattern="*.vsd"/>
+		<glob pattern="*.vst"/>
+		<glob pattern="*.vss"/>
+		<glob pattern="*.vsw"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.visionary">
+		<glob pattern="*.vis"/>
+	</mime-type>
+	<mime-type type="application/vnd.vividence.scriptfile"/>
+	<mime-type type="application/vnd.vsf">
+		<glob pattern="*.vsf"/>
+	</mime-type>
+	<mime-type type="application/vnd.wap.sic"/>
+	<mime-type type="application/vnd.wap.slc"/>
+
+	<mime-type type="application/vnd.wap.wbxml">
+		<glob pattern="*.wbxml"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.wap.wmlc">
+		<_comment>Compiled WML Document</_comment>
+		<glob pattern="*.wmlc"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.wap.wmlscriptc">
+		<_comment>Compiled WML Script</_comment>
+		<glob pattern="*.wmlsc"/>
+	</mime-type>
+
+	<mime-type type="application/vnd.webturbo">
+		<glob pattern="*.wtb"/>
+	</mime-type>
+	<mime-type type="application/vnd.wfa.wsc"/>
+	<mime-type type="application/vnd.wmc"/>
+	<mime-type type="application/vnd.wmf.bootstrap"/>
+	<mime-type type="application/vnd.wordperfect">
+		<glob pattern="*.wpd"/>
+	</mime-type>
+	<mime-type type="application/vnd.wqd">
+		<glob pattern="*.wqd"/>
+	</mime-type>
+	<mime-type type="application/vnd.wrq-hp3000-labelled"/>
+	<mime-type type="application/vnd.wt.stf">
+		<glob pattern="*.stf"/>
+	</mime-type>
+	<mime-type type="application/vnd.wv.csp+wbxml"/>
+	<mime-type type="application/vnd.wv.csp+xml"/>
+	<mime-type type="application/vnd.wv.ssp+xml"/>
+	<mime-type type="application/vnd.xara">
+		<glob pattern="*.xar"/>
+	</mime-type>
+	<mime-type type="application/vnd.xfdl">
+		<glob pattern="*.xfdl"/>
+	</mime-type>
+	<mime-type type="application/vnd.xfdl.webform"/>
+	<mime-type type="application/vnd.xmi+xml"/>
+	<mime-type type="application/vnd.xmpie.cpkg"/>
+	<mime-type type="application/vnd.xmpie.dpkg"/>
+	<mime-type type="application/vnd.xmpie.plan"/>
+	<mime-type type="application/vnd.xmpie.ppkg"/>
+	<mime-type type="application/vnd.xmpie.xlim"/>
+	<mime-type type="application/vnd.yamaha.hv-dic">
+		<glob pattern="*.hvd"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.hv-script">
+		<glob pattern="*.hvs"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.hv-voice">
+		<glob pattern="*.hvp"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.openscoreformat">
+		<glob pattern="*.osf"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.openscoreformat.osfpvg+xml">
+		<glob pattern="*.osfpvg"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.smaf-audio">
+		<glob pattern="*.saf"/>
+	</mime-type>
+	<mime-type type="application/vnd.yamaha.smaf-phrase">
+		<glob pattern="*.spf"/>
+	</mime-type>
+	<mime-type type="application/vnd.yellowriver-custom-menu">
+		<glob pattern="*.cmp"/>
+	</mime-type>
+	<mime-type type="application/vnd.zul">
+		<glob pattern="*.zir"/>
+		<glob pattern="*.zirz"/>
+	</mime-type>
+	<mime-type type="application/vnd.zzazz.deck+xml">
+		<glob pattern="*.zaz"/>
+	</mime-type>
+	<mime-type type="application/voicexml+xml">
+		<glob pattern="*.vxml"/>
+	</mime-type>
+	<mime-type type="application/watcherinfo+xml"/>
+	<mime-type type="application/whoispp-query"/>
+	<mime-type type="application/whoispp-response"/>
+	<mime-type type="application/winhlp">
+		<glob pattern="*.hlp"/>
+	</mime-type>
+	<mime-type type="application/wita"/>
+	<mime-type type="application/wordperfect5.1"/>
+	<mime-type type="application/wsdl+xml">
+		<glob pattern="*.wsdl"/>
+	</mime-type>
+	<mime-type type="application/wspolicy+xml">
+		<glob pattern="*.wspolicy"/>
+	</mime-type>
+
+	<mime-type type="application/x-123">
+		<magic priority="50">
+			<match value="0x00001a00" type="big32" offset="0" />
+			<match value="0x00000200" type="big32" offset="0" />
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-abiword">
+		<glob pattern="*.abw"/>
+	</mime-type>
+	<mime-type type="application/x-ace-compressed">
+		<glob pattern="*.ace"/>
+	</mime-type>
+
+	<mime-type type="application/x-adobe-indesign">
+		<acronym>INDD</acronym>
+		<_comment>Adobe InDesign document</_comment>
+		<glob pattern="*.indd"/>
+	</mime-type>
+
+	<mime-type type="application/x-adobe-indesign-interchange">
+		<acronym>INX</acronym>
+		<_comment>Adobe InDesign Interchange format</_comment>
+		<magic priority="50">
+			<match value="&lt;?aid" type="string" offset="0:100"/>
+		</magic>
+		<glob pattern="*.inx"/>
+		<sub-class-of type="application/xml"/>
+	</mime-type>
+
+	<mime-type type="application/x-archive">
+		<magic priority="50">
+			<match value="=&lt;ar&gt;" type="string" offset="0"/>
+			<match value="=!&lt;arch&gt;" type="string" offset="0"/>
+		</magic>
+		<glob patter="*.ar"/>
+	</mime-type>
+
+	<mime-type type="application/x-authorware-bin">
+		<glob pattern="*.aab"/>
+		<glob pattern="*.x32"/>
+		<glob pattern="*.u32"/>
+		<glob pattern="*.vox"/>
+	</mime-type>
+	<mime-type type="application/x-authorware-map">
+		<glob pattern="*.aam"/>
+	</mime-type>
+	<mime-type type="application/x-authorware-seg">
+		<glob pattern="*.aas"/>
+	</mime-type>
+	<mime-type type="application/x-bcpio">
+		<glob pattern="*.bcpio"/>
+	</mime-type>
+
+	<mime-type type="application/x-berkeley-db">
+		<magic priority="50">
+			<match value="0x00061561" type="big32" offset="0"/>
+			<match value="0x00061561" type="host32" offset="12"/>
+			<match value="0x00061561" type="big32" offset="12"/>
+			<match value="0x00061561" type="little32" offset="12"/>
+			<match value="0x00053162" type="host32" offset="12"/>
+			<match value="0x00053162" type="big32" offset="12"/>
+			<match value="0x00053162" type="little32" offset="12"/>
+			<match value="0x00042253" type="host32" offset="12"/>
+			<match value="0x00042253" type="big32" offset="12"/>
+			<match value="0x00042253" type="little32" offset="12"/>
+			<match value="0x00040988" type="host32" offset="12"/>
+			<match value="0x00040988" type="little32" offset="12"/>
+			<match value="0x00040988" type="big32" offset="12"/>
+			<match value="0x00053162" type="host32" offset="0"/>
+			<match value="0x00053162" type="big32" offset="0"/>
+			<match value="0x00053162" type="little32" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-bibtex-text-file">
+		<magic priority="50">
+			<match value="%\ BibTeX\ `" type="string" offset="0"/>
+			<match value="%%%\ \ " type="string" offset="73"/>
+			<match value="%\ BibTeX\ standard\ bibliography\ " type="string" offset="0"/>
+			<match value="%%%\ \ @BibTeX-style-file{" type="string" offset="73"/>
+			<match value="@article{" type="string" offset="0"/>
+			<match value="@book{" type="string" offset="0"/>
+			<match value="@inbook{" type="string" offset="0"/>
+			<match value="@incollection{" type="string" offset="0"/>
+			<match value="@inproceedings{" type="string" offset="0"/>
+			<match value="@manual{" type="string" offset="0"/>
+			<match value="@misc{" type="string" offset="0"/>
+			<match value="@preamble{" type="string" offset="0"/>
+			<match value="@phdthesis{" type="string" offset="0"/>
+			<match value="@techreport{" type="string" offset="0"/>
+			<match value="@unpublished{" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.bib"/>
+		<glob pattern="*.bibtex"/>
+	</mime-type>
+
+	<mime-type type="application/x-bittorrent">
+		<magic priority="50">
+			<match value="d8:announce" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.torrent"/>
+	</mime-type>
+
+	<mime-type type="application/x-bzip">
+		<magic priority="40">
+			<match value="BZh" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.bz"/>
+		<glob pattern="*.tbz"/>
+	</mime-type>
+
+	<mime-type type="application/x-bzip2">
+		<glob pattern="*.bz2"/>
+		<glob pattern="*.tbz2"/>
+		<glob pattern="*.boz"/>
+		<sub-class-of type="application/x-bzip"/>
+	</mime-type>
+
+	<mime-type type="application/x-cdlink">
+		<_comment>Virtual CD-ROM CD Image File</_comment>
+		<glob pattern="*.vcd"/>
+	</mime-type>
+
+	<mime-type type="application/x-chat">
+		<glob pattern="*.chat"/>
+	</mime-type>
+	<mime-type type="application/x-chess-pgn">
+		<glob pattern="*.pgn"/>
+	</mime-type>
+
+	<mime-type type="application/x-compress">
+		<magic priority="50">
+			<match value="\037\235" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.z"/>
+	</mime-type>
+
+	<mime-type type="application/x-corelpresentations">
+		<glob pattern="*.shw"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/x-cpio">
+		<magic priority="50">
+			<match value="070707" type="little16" offset="0"/>
+			<match value="070707" type="big16" offset="0"/>
+			<match value="070707" type="string" offset="0"/>
+			<match value="070701" type="string" offset="0"/>
+			<match value="070702" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.cpio"/>
+	</mime-type>
+
+	<mime-type type="application/x-csh">
+		<glob pattern="*.csh"/>
+	</mime-type>
+
+	<mime-type type="application/x-debian-package">
+		<glob pattern="*.deb"/>
+		<glob pattern="*.udeb"/>
+	</mime-type>
+
+	<mime-type type="application/x-director">
+		<_comment>Shockwave Movie</_comment>
+		<glob pattern="*.dir"/>
+		<glob pattern="*.dcr"/>
+		<glob pattern="*.dxr"/>
+		<glob pattern="*.cst"/>
+		<glob pattern="*.cct"/>
+		<glob pattern="*.cxt"/>
+		<glob pattern="*.w3d"/>
+		<glob pattern="*.fgd"/>
+		<glob pattern="*.swa"/>
+	</mime-type>
+
+	<mime-type type="application/x-doom">
+		<glob pattern="*.wad"/>
+	</mime-type>
+	<mime-type type="application/x-dtbncx+xml">
+		<glob pattern="*.ncx"/>
+	</mime-type>
+	<mime-type type="application/x-dtbook+xml">
+		<glob pattern="*.dtb"/>
+	</mime-type>
+	<mime-type type="application/x-dtbresource+xml">
+		<glob pattern="*.res"/>
+	</mime-type>
+
+	<mime-type type="application/x-dvi">
+		<magic priority="50">
+			<match value="\367\002" type="string" offset="0"/>
+			<match value="0x02f7" type="little16" offset="0"/>
+		</magic>
+		<glob pattern="*.dvi"/>
+	</mime-type>
+
+	<mime-type type="application/x-elc">
+		<_comment>Emacs Lisp bytecode</_comment>
+		<magic priority="50">
+			<!-- Emacs 18 -->
+			<match value="\012(" type="string" offset="0" />
+			<!-- Emacs 19 -->
+			<match value=";ELC\023\000\000\000" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.elc"/>
+	</mime-type>
+
+	<mime-type type="application/x-font-bdf">
+		<glob pattern="*.bdf"/>
+	</mime-type>
+	<mime-type type="application/x-font-dos"/>
+	<mime-type type="application/x-font-framemaker"/>
+	<mime-type type="application/x-font-ghostscript">
+		<glob pattern="*.gsf"/>
+	</mime-type>
+	<mime-type type="application/x-font-libgrx"/>
+	<mime-type type="application/x-font-linux-psf">
+		<glob pattern="*.psf"/>
+	</mime-type>
+
+	<mime-type type="application/x-font-otf">
+		<acronym>OTF</acronym>
+		<_comment>OpenType Font</_comment>
+		<glob pattern="*.otf"/>
+	</mime-type>
+
+	<mime-type type="application/x-font-pcf">
+		<glob pattern="*.pcf"/>
+	</mime-type>
+	<mime-type type="application/x-font-snf">
+		<glob pattern="*.snf"/>
+	</mime-type>
+	<mime-type type="application/x-font-speedo"/>
+	<mime-type type="application/x-font-sunos-news"/>
+
+	<mime-type type="application/x-font-ttf">
+		<acronym>TTF</acronym>
+		<_comment>TrueType Font</_comment>
+		<glob pattern="*.ttf"/>
+		<glob pattern="*.ttc"/>
+		<magic priority="40">
+			<match value="0x00010000" type="string" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-font-type1">
+		<glob pattern="*.pfa"/>
+		<glob pattern="*.pfb"/>
+		<glob pattern="*.pfm"/>
+		<glob pattern="*.afm"/>
+	</mime-type>
+	<mime-type type="application/x-font-vfont"/>
+
+	<mime-type type="application/x-futuresplash">
+		<_comment>Macromedia FutureSplash File</_comment>
+		<glob pattern="*.spl"/>
+	</mime-type>
+
+	<mime-type type="application/x-gnucash">
+		<glob pattern="*.gnucash" />
+	</mime-type>
+
+	<mime-type type="application/x-gnumeric">
+		<alias type="application/x-Gnumeric-spreadsheet"/>
+		<magic priority="50">
+			<match value="=&lt;gmr:Workbook" type="string" offset="39" />
+		</magic>
+		<glob pattern="*.gnumeric"/>
+	</mime-type>
+
+	<mime-type type="application/x-gtar">
+		<magic priority="40">
+			<!-- GNU tar archive -->
+			<match value="ustar \0" type="string" offset="257" />
+		</magic>
+		<glob pattern="*.gtar"/>
+		<sub-class-of type="application/x-tar"/>
+	</mime-type>
+
+	<mime-type type="application/x-gzip">
+		<magic priority="40">
+			<match value="\037\213" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.tgz" />
+		<glob pattern="*.gz" />
+		<glob pattern="*-gz" />
+		<glob pattern="*.emz" />
+	</mime-type>
+
+	<mime-type type="application/x-hdf">
+		<magic priority="50">
+			<match value="0x0e031301" type="big32" offset="0"/>
+			<match value="\211HDF\r\n\032" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.hdf"/>
+		<glob pattern="*.he5"/>
+	</mime-type>
+
+	<mime-type type="application/x-hwp">
+		<magic priority="50">
+			<!--
+        TIKA-330: Detection pattern based on signature strings from
+        the hwpfilter/source/hwpfile.cpp file in OpenOffice.org.
+      -->
+			<match value="HWP Document File V" type="string" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-iso9660-image">
+		<magic priority="50">
+			<match value="CD001" type="string" offset="37633"/>
+		</magic>
+		<glob pattern="*.iso" />
+	</mime-type>
+
+	<mime-type type="application/x-java-jnlp-file">
+		<glob pattern="*.jnlp"/>
+	</mime-type>
+
+	<mime-type type="application/x-kdelnk">
+		<magic priority="50">
+			<match value="[KDE\ Desktop\ Entry]" type="string" offset="0"/>
+			<match value="#\ KDE\ Config\ File" type="string" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-latex">
+		<_comment>LaTeX Source Document</_comment>
+		<magic priority="50">
+			<match value="%\ -*-latex-*-" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.latex"/>
+	</mime-type>
+
+	<mime-type type="application/x-lha">
+		<magic priority="50">
+			<match value="-lzs-" type="string" offset="2"/>
+			<match value="-lh\40-" type="string" offset="2"/>
+			<match value="-lhd-" type="string" offset="2"/>
+			<match value="-lh2-" type="string" offset="2"/>
+			<match value="-lh3-" type="string" offset="2"/>
+			<match value="-lh4-" type="string" offset="2"/>
+			<match value="-lh5-" type="string" offset="2"/>
+			<match value="-lh6-" type="string" offset="2"/>
+			<match value="-lh7-" type="string" offset="2"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-lharc">
+		<magic priority="50">
+			<match value="-lh0-" type="string" offset="2"/>
+			<match value="-lh1-" type="string" offset="2"/>
+			<match value="-lz4-" type="string" offset="2"/>
+			<match value="-lz5-" type="string" offset="2"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-mobipocket-ebook">
+		<glob pattern="*.prc"/>
+		<glob pattern="*.mobi"/>
+	</mime-type>
+	<mime-type type="application/x-ms-application">
+		<glob pattern="*.application"/>
+	</mime-type>
+	<mime-type type="application/x-ms-wmd">
+		<glob pattern="*.wmd"/>
+	</mime-type>
+	<mime-type type="application/x-ms-wmz">
+		<sub-class-of type="application/x-gzip"/>
+		<glob pattern="*.wmz"/>
+	</mime-type>
+	<mime-type type="application/x-ms-xbap">
+		<glob pattern="*.xbap"/>
+	</mime-type>
+	<mime-type type="application/x-msaccess">
+		<glob pattern="*.mdb"/>
+	</mime-type>
+	<mime-type type="application/x-msbinder">
+		<glob pattern="*.obd"/>
+	</mime-type>
+	<mime-type type="application/x-mscardfile">
+		<glob pattern="*.crd"/>
+	</mime-type>
+	<mime-type type="application/x-msclip">
+		<glob pattern="*.clp"/>
+	</mime-type>
+	<mime-type type="application/x-msdownload">
+		<glob pattern="*.exe"/>
+		<glob pattern="*.dll"/>
+		<glob pattern="*.com"/>
+		<glob pattern="*.bat"/>
+		<glob pattern="*.msi"/>
+	</mime-type>
+	<mime-type type="application/x-msmediaview">
+		<glob pattern="*.mvb"/>
+		<glob pattern="*.m13"/>
+		<glob pattern="*.m14"/>
+	</mime-type>
+	<mime-type type="application/x-msmetafile">
+		<alias type="image/x-emf"/>
+		<alias type="image/x-wmf"/>
+		<acronym>WMF</acronym>
+		<_comment>Windows Metafile</_comment>
+		<glob pattern="*.wmf"/>
+		<glob pattern="*.emf"/>
+	</mime-type>
+	<mime-type type="application/x-msmoney">
+		<glob pattern="*.mny"/>
+	</mime-type>
+	<mime-type type="application/x-mspublisher">
+		<glob pattern="*.pub"/>
+	</mime-type>
+	<mime-type type="application/x-msschedule">
+		<glob pattern="*.scd"/>
+	</mime-type>
+	<mime-type type="application/x-msterminal">
+		<glob pattern="*.trm"/>
+	</mime-type>
+	<mime-type type="application/x-mswrite">
+		<glob pattern="*.wri"/>
+	</mime-type>
+	<mime-type type="application/x-netcdf">
+		<glob pattern="*.nc"/>
+		<glob pattern="*.cdf"/>
+	</mime-type>
+	<mime-type type="application/x-pkcs12">
+		<glob pattern="*.p12"/>
+		<glob pattern="*.pfx"/>
+	</mime-type>
+	<mime-type type="application/x-pkcs7-certificates">
+		<glob pattern="*.p7b"/>
+		<glob pattern="*.spc"/>
+	</mime-type>
+	<mime-type type="application/x-pkcs7-certreqresp">
+		<glob pattern="*.p7r"/>
+	</mime-type>
+
+	<mime-type type="application/x-quattro-pro">
+		<glob pattern="*.qpw"/>
+		<glob pattern="*.wb1"/>
+		<glob pattern="*.wb2"/>
+		<glob pattern="*.wb3"/>
+		<sub-class-of type="application/x-tika-msoffice"/>
+	</mime-type>
+
+	<mime-type type="application/x-rar-compressed">
+		<alias type="application/x-rar"/>
+		<magic priority="50">
+			<match value="Rar!" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.rar"/>
+	</mime-type>
+
+	<mime-type type="application/x-rpm">
+		<glob pattern="*.rpm"/>
+	</mime-type>
+
+	<mime-type type="application/x-sc">
+		<magic priority="50">
+			<match value="Spreadsheet" type="string" offset="38"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-sh">
+		<magic priority="50">
+			<match value="#!/" type="string" offset="0"/>
+			<match value="#!\ /" type="string" offset="0"/>
+			<match value="#!\t/" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.sh"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="application/x-shar">
+		<glob pattern="*.shar"/>
+	</mime-type>
+
+	<mime-type type="application/x-shockwave-flash">
+		<acronym>Flash</acronym>
+		<_comment>Adobe Flash</_comment>
+		<magic priority="50">
+			<match value="FWS" type="string" offset="0"/> <!-- F = Uncompressed -->
+			<match value="CWS" type="string" offset="0"/> <!-- C = Compressed -->
+		</magic>
+		<glob pattern="*.swf"/>
+	</mime-type>
+
+	<mime-type type="application/x-silverlight-app">
+		<glob pattern="*.xap"/>
+	</mime-type>
+
+	<mime-type type="application/x-stuffit">
+		<magic priority="50">
+			<match value="StuffIt" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.sit"/>
+	</mime-type>
+
+	<mime-type type="application/x-stuffitx">
+		<glob pattern="*.sitx"/>
+	</mime-type>
+	<mime-type type="application/x-sv4cpio">
+		<glob pattern="*.sv4cpio"/>
+	</mime-type>
+	<mime-type type="application/x-sv4crc">
+		<glob pattern="*.sv4crc"/>
+	</mime-type>
+
+	<mime-type type="application/x-tar">
+		<magic priority="40">
+			<!-- POSIX tar archive -->
+			<match value="ustar\0" type="string" offset="257" />
+		</magic>
+		<glob pattern="*.tar"/>
+	</mime-type>
+
+	<mime-type type="application/x-tcl">
+		<alias type="text/x-tcl"/>
+		<glob pattern="*.tcl"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="application/x-tex">
+		<alias type="text/x-tex"/>
+		<magic priority="50">
+			<match value="\\input" type="string" offset="0"/>
+			<match value="\\section" type="string" offset="0"/>
+			<match value="\\setlength" type="string" offset="0"/>
+			<match value="\\documentstyle" type="string" offset="0"/>
+			<match value="\\chapter" type="string" offset="0"/>
+			<match value="\\documentclass" type="string" offset="0"/>
+			<match value="\\relax" type="string" offset="0"/>
+			<match value="\\contentsline" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.tex"/>
+	</mime-type>
+
+	<mime-type type="application/x-tex-tfm">
+		<glob pattern="*.tfm"/>
+	</mime-type>
+
+	<mime-type type="application/x-texinfo">
+		<alias type="text/x-texinfo" />
+		<magic priority="50">
+			<match value="\\input\ texinfo" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.texinfo"/>
+		<glob pattern="*.texi"/>
+	</mime-type>
+
+	<!-- =================================================================== -->
+	<!-- Microsoft Office binary file formats -->
+	<!-- http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx -->
+	<!-- =================================================================== -->
+	<mime-type type="application/x-tika-msoffice">
+		<magic>
+			<match value="0xd0cf11e0a1b11ae1" type="string" offset="0:8"/>
+		</magic>
+	</mime-type>
+
+	<!-- =================================================================== -->
+	<!-- Office Open XML file formats -->
+	<!-- http://www.ecma-international.org/publications/standards/Ecma-376.htm -->
+	<!-- =================================================================== -->
+	<mime-type type="application/x-tika-ooxml">
+		<sub-class-of type="application/zip"/>
+		<magic priority="50">
+			<match value="PK\003\004" type="string" offset="0">
+				<match value="[Content_Types].xml" type="string" offset="30"/>
+			</match>
+		</magic>
+	</mime-type>
+
+	<mime-type type="application/x-ustar">
+		<glob pattern="*.ustar"/>
+	</mime-type>
+	<mime-type type="application/x-wais-source">
+		<glob pattern="*.src"/>
+	</mime-type>
+	<mime-type type="application/x-x509-ca-cert">
+		<glob pattern="*.der"/>
+		<glob pattern="*.crt"/>
+	</mime-type>
+	<mime-type type="application/x-xfig">
+		<glob pattern="*.fig"/>
+	</mime-type>
+	<mime-type type="application/x-xpinstall">
+		<glob pattern="*.xpi"/>
+	</mime-type>
+
+	<mime-type type="application/x-zoo">
+		<magic priority="50">
+			<match value="0xfdc4a7dc" type="little32" offset="20"/>
+		</magic>
+		<glob pattern="*.zoo"/>
+	</mime-type>
+
+	<mime-type type="application/x400-bp"/>
+	<mime-type type="application/xcap-att+xml"/>
+	<mime-type type="application/xcap-caps+xml"/>
+	<mime-type type="application/xcap-el+xml"/>
+	<mime-type type="application/xcap-error+xml"/>
+	<mime-type type="application/xcap-ns+xml"/>
+	<mime-type type="application/xcon-conference-info-diff+xml"/>
+	<mime-type type="application/xcon-conference-info+xml"/>
+	<mime-type type="application/xenc+xml">
+		<glob pattern="*.xenc"/>
+	</mime-type>
+
+	<mime-type type="application/xhtml+xml">
+		<magic priority="50">
+			<match value="&lt;html xmlns=" type="string" offset="0:8192"/>
+		</magic>
+		<root-XML namespaceURI="http://www.w3.org/1999/xhtml" localName="html"/>
+		<glob pattern="*.xhtml"/>
+		<glob pattern="*.xht"/>
+	</mime-type>
+
+	<mime-type type="application/xhtml-voice+xml"/>
+
+	<mime-type type="application/xml">
+		<alias type="text/xml"/>
+		<magic priority="50">
+			<match value="&lt;?xml" type="string" offset="0"/>
+			<match value="&lt;?XML" type="string" offset="0"/>
+			<match value="&lt;!--" type="string" offset="0"/>
+			<match value="0xFFFE3C003F0078006D006C00" type="string" offset="0"/>
+			<match value="0xFEFF003C003F0078006D006C" type="string" offset="0"/>
+			<!-- TODO: Add matches for the other possible XML encoding schemes -->
+		</magic>
+		<glob pattern="*.xml"/>
+		<glob pattern="*.xsl"/>
+		<glob pattern="*.xsd"/>
+		<sub-class-of type="text/plain" />
+	</mime-type>
+
+	<mime-type type="application/xml-dtd">
+		<sub-class-of type="text/plain"/>
+		<glob pattern="*.dtd"/>
+	</mime-type>
+	<mime-type type="application/xml-external-parsed-entity"/>
+	<mime-type type="application/xmpp+xml"/>
+	<mime-type type="application/xop+xml">
+		<glob pattern="*.xop"/>
+	</mime-type>
+
+	<mime-type type="application/xslt+xml">
+		<alias type="text/xsl"/>
+		<acronym>XSLT</acronym>
+		<_comment>XSL Transformations</_comment>
+		<root-XML localName="stylesheet"
+				  namespaceURI="http://www.w3.org/1999/XSL/Transform"/>
+		<glob pattern="*.xslt"/>
+	</mime-type>
+
+	<mime-type type="application/xspf+xml">
+		<glob pattern="*.xspf"/>
+	</mime-type>
+	<mime-type type="application/xv+xml">
+		<glob pattern="*.mxml"/>
+		<glob pattern="*.xhvml"/>
+		<glob pattern="*.xvml"/>
+		<glob pattern="*.xvm"/>
+	</mime-type>
+
+	<mime-type type="application/zip">
+		<alias type="application/x-zip-compressed"/>
+		<magic priority="40">
+			<match value="PK\003\004" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.zip"/>
+	</mime-type>
+
+	<mime-type type="audio/32kadpcm"/>
+	<mime-type type="audio/3gpp"/>
+	<mime-type type="audio/3gpp2"/>
+	<mime-type type="audio/ac3"/>
+	<mime-type type="audio/adpcm">
+		<glob pattern="*.adp"/>
+	</mime-type>
+	<mime-type type="audio/amr"/>
+	<mime-type type="audio/amr-wb"/>
+	<mime-type type="audio/amr-wb+"/>
+	<mime-type type="audio/asc"/>
+
+	<mime-type type="audio/basic">
+		<magic priority="20">
+			<match value=".snd" type="string" offset="0">
+				<match value="1" type="big32" offset="12"/>
+				<match value="2" type="big32" offset="12"/>
+				<match value="3" type="big32" offset="12"/>
+				<match value="4" type="big32" offset="12"/>
+				<match value="5" type="big32" offset="12"/>
+				<match value="6" type="big32" offset="12"/>
+				<match value="7" type="big32" offset="12"/>
+			</match>
+		</magic>
+		<glob pattern="*.au"/>
+		<glob pattern="*.snd"/>
+	</mime-type>
+
+	<mime-type type="audio/bv16"/>
+	<mime-type type="audio/bv32"/>
+	<mime-type type="audio/clearmode"/>
+	<mime-type type="audio/cn"/>
+	<mime-type type="audio/dat12"/>
+	<mime-type type="audio/dls"/>
+	<mime-type type="audio/dsr-es201108"/>
+	<mime-type type="audio/dsr-es202050"/>
+	<mime-type type="audio/dsr-es202211"/>
+	<mime-type type="audio/dsr-es202212"/>
+	<mime-type type="audio/dvi4"/>
+	<mime-type type="audio/eac3"/>
+	<mime-type type="audio/evrc"/>
+	<mime-type type="audio/evrc-qcp"/>
+	<mime-type type="audio/evrc0"/>
+	<mime-type type="audio/evrc1"/>
+	<mime-type type="audio/evrcb"/>
+	<mime-type type="audio/evrcb0"/>
+	<mime-type type="audio/evrcb1"/>
+	<mime-type type="audio/evrcwb"/>
+	<mime-type type="audio/evrcwb0"/>
+	<mime-type type="audio/evrcwb1"/>
+	<mime-type type="audio/example"/>
+	<mime-type type="audio/g719"/>
+	<mime-type type="audio/g722"/>
+	<mime-type type="audio/g7221"/>
+	<mime-type type="audio/g723"/>
+	<mime-type type="audio/g726-16"/>
+	<mime-type type="audio/g726-24"/>
+	<mime-type type="audio/g726-32"/>
+	<mime-type type="audio/g726-40"/>
+	<mime-type type="audio/g728"/>
+	<mime-type type="audio/g729"/>
+	<mime-type type="audio/g7291"/>
+	<mime-type type="audio/g729d"/>
+	<mime-type type="audio/g729e"/>
+	<mime-type type="audio/gsm"/>
+	<mime-type type="audio/gsm-efr"/>
+	<mime-type type="audio/ilbc"/>
+	<mime-type type="audio/l16"/>
+	<mime-type type="audio/l20"/>
+	<mime-type type="audio/l24"/>
+	<mime-type type="audio/l8"/>
+	<mime-type type="audio/lpc"/>
+
+	<mime-type type="audio/midi">
+		<acronym>MIDI</acronym>
+		<_comment>Musical Instrument Digital Interface</_comment>
+		<magic priority ="20">
+			<match type="string" value="MThd" offset="0"/>
+		</magic>
+		<glob pattern="*.mid"/>
+		<glob pattern="*.midi"/>
+		<glob pattern="*.kar"/>
+		<glob pattern="*.rmi"/>
+	</mime-type>
+
+	<mime-type type="audio/mobile-xmf"/>
+	<mime-type type="audio/mp4">
+		<alias type="audio/x-mp4a"/>
+		<glob pattern="*.mp4a"/>
+	</mime-type>
+	<mime-type type="audio/mp4a-latm"/>
+	<mime-type type="audio/mpa"/>
+	<mime-type type="audio/mpa-robust"/>
+
+	<mime-type type="audio/mpeg">
+		<acronym>MP3</acronym>
+		<_comment>MPEG-1 Audio Layer 3</_comment>
+		<magic priority="20">
+			<!-- http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html -->
+			<!-- Bit pattern for first two bytes: 11111111 111VVLLC -->
+			<!-- VV = MPEG Audio Version ID; 10 = V2, 11 = V1 -->
+			<!-- LL = Layer description; 01 = L3, 10 = L2, 11 = L1 -->
+			<!-- C = Protection bit; 0 = CRC, 1 = no CRC -->
+			<match value="0xfff2" type="string" offset="0"/> <!-- V2, L3, CRC -->
+			<match value="0xfff3" type="string" offset="0"/> <!-- V2, L3 -->
+			<match value="0xfff4" type="string" offset="0"/> <!-- V2, L2, CRC -->
+			<match value="0xfff5" type="string" offset="0"/> <!-- V2, L2 -->
+			<match value="0xfff6" type="string" offset="0"/> <!-- V2, L1, CRC -->
+			<match value="0xfff7" type="string" offset="0"/> <!-- V2, L1 -->
+			<match value="0xfffa" type="string" offset="0"/> <!-- V1, L3, CRC -->
+			<match value="0xfffb" type="string" offset="0"/> <!-- V1, L3 -->
+			<match value="0xfffc" type="string" offset="0"/> <!-- V1, L2, CRC -->
+			<match value="0xfffd" type="string" offset="0"/> <!-- V1, L2 -->
+			<!-- TIKA-417: This is the UTF-16 LE byte order mark! -->
+			<!-- match value="0xfffe" type="string" offset="0"/ --> <!-- V1, L1, CRC -->
+			<match value="0xffff" type="string" offset="0"/> <!-- V1, L1 -->
+			<match value="ID3" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.mpga"/>
+		<glob pattern="*.mp2"/>
+		<glob pattern="*.mp2a"/>
+		<glob pattern="*.mp3"/>
+		<glob pattern="*.m2a"/>
+		<glob pattern="*.m3a"/>
+	</mime-type>
+
+	<mime-type type="audio/mpeg4-generic"/>
+
+	<mime-type type="audio/ogg">
+		<glob pattern="*.oga"/>
+		<glob pattern="*.ogg"/>
+		<glob pattern="*.spx"/>
+		<sub-class-of type="application/ogg"/>
+	</mime-type>
+
+	<mime-type type="audio/parityfec"/>
+	<mime-type type="audio/pcma"/>
+	<mime-type type="audio/pcma-wb"/>
+	<mime-type type="audio/pcmu-wb"/>
+	<mime-type type="audio/pcmu"/>
+
+	<mime-type type="audio/prs.sid">
+		<magic priority="50">
+			<match value="PSID" type="string" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="audio/qcelp"/>
+	<mime-type type="audio/red"/>
+	<mime-type type="audio/rtp-enc-aescm128"/>
+	<mime-type type="audio/rtp-midi"/>
+	<mime-type type="audio/rtx"/>
+	<mime-type type="audio/smv"/>
+	<mime-type type="audio/smv0"/>
+	<mime-type type="audio/smv-qcp"/>
+	<mime-type type="audio/sp-midi"/>
+	<mime-type type="audio/t140c"/>
+	<mime-type type="audio/t38"/>
+	<mime-type type="audio/telephone-event"/>
+	<mime-type type="audio/tone"/>
+	<mime-type type="audio/ulpfec"/>
+	<mime-type type="audio/vdvi"/>
+	<mime-type type="audio/vmr-wb"/>
+	<mime-type type="audio/vnd.3gpp.iufp"/>
+	<mime-type type="audio/vnd.4sb"/>
+	<mime-type type="audio/vnd.audiokoz"/>
+	<mime-type type="audio/vnd.celp"/>
+	<mime-type type="audio/vnd.cisco.nse"/>
+	<mime-type type="audio/vnd.cmles.radio-events"/>
+	<mime-type type="audio/vnd.cns.anp1"/>
+	<mime-type type="audio/vnd.cns.inf1"/>
+	<mime-type type="audio/vnd.digital-winds">
+		<glob pattern="*.eol"/>
+	</mime-type>
+	<mime-type type="audio/vnd.dlna.adts"/>
+	<mime-type type="audio/vnd.dolby.heaac.1"/>
+	<mime-type type="audio/vnd.dolby.heaac.2"/>
+	<mime-type type="audio/vnd.dolby.mlp"/>
+	<mime-type type="audio/vnd.dolby.mps"/>
+	<mime-type type="audio/vnd.dolby.pl2"/>
+	<mime-type type="audio/vnd.dolby.pl2x"/>
+	<mime-type type="audio/vnd.dolby.pl2z"/>
+	<mime-type type="audio/vnd.dts">
+		<glob pattern="*.dts"/>
+	</mime-type>
+	<mime-type type="audio/vnd.dts.hd">
+		<glob pattern="*.dtshd"/>
+	</mime-type>
+	<mime-type type="audio/vnd.everad.plj"/>
+	<mime-type type="audio/vnd.hns.audio"/>
+	<mime-type type="audio/vnd.lucent.voice">
+		<glob pattern="*.lvp"/>
+	</mime-type>
+	<mime-type type="audio/vnd.ms-playready.media.pya">
+		<glob pattern="*.pya"/>
+	</mime-type>
+	<mime-type type="audio/vnd.nokia.mobile-xmf"/>
+	<mime-type type="audio/vnd.nortel.vbk"/>
+	<mime-type type="audio/vnd.nuera.ecelp4800">
+		<glob pattern="*.ecelp4800"/>
+	</mime-type>
+	<mime-type type="audio/vnd.nuera.ecelp7470">
+		<glob pattern="*.ecelp7470"/>
+	</mime-type>
+	<mime-type type="audio/vnd.nuera.ecelp9600">
+		<glob pattern="*.ecelp9600"/>
+	</mime-type>
+	<mime-type type="audio/vnd.octel.sbc"/>
+	<mime-type type="audio/vnd.qcelp"/>
+	<mime-type type="audio/vnd.rhetorex.32kadpcm"/>
+	<mime-type type="audio/vnd.sealedmedia.softseal.mpeg"/>
+	<mime-type type="audio/vnd.vmx.cvsd"/>
+	<mime-type type="audio/vorbis"/>
+	<mime-type type="audio/vorbis-config"/>
+	<mime-type type="audio/x-aac">
+		<glob pattern="*.aac"/>
+	</mime-type>
+
+	<mime-type type="audio/x-adbcm">
+		<magic priority="20">
+			<match value=".snd" type="string" offset="0">
+				<match value="23" type="big32" offset="12"/>
+			</match>
+		</magic>
+	</mime-type>
+
+	<mime-type type="audio/x-aiff">
+		<alias type="audio/aiff"/>
+		<acronym>AIFF</acronym>
+		<_comment>Audio Interchange File Format</_comment>
+		<magic priority="20">
+			<match value="FORM....AIFF" type="string" offset="0"
+				   mask="0xFFFFFFFF00000000FFFFFFFF"/>
+			<match value="FORM....AIFC" type="string" offset="0"
+				   mask="0xFFFFFFFF00000000FFFFFFFF"/>
+			<!-- Amiga IFF sound sample, somewhat like the more modern AIFF -->
+			<match value="FORM....8SVX" type="string" offset="0"
+				   mask="0xFFFFFFFF00000000FFFFFFFF"/>
+		</magic>
+		<glob pattern="*.aif"/>
+		<glob pattern="*.aiff"/>
+		<glob pattern="*.aifc"/>
+	</mime-type>
+
+	<mime-type type="audio/x-dec-basic">
+		<magic priority="20">
+			<match value="0x0064732E" type="big32" offset="0">
+				<match value="1" type="big32" offset="12"/>
+				<match value="2" type="big32" offset="12"/>
+				<match value="3" type="big32" offset="12"/>
+				<match value="4" type="big32" offset="12"/>
+				<match value="5" type="big32" offset="12"/>
+				<match value="6" type="big32" offset="12"/>
+				<match value="7" type="big32" offset="12"/>
+			</match>
+		</magic>
+	</mime-type>
+
+	<mime-type type="audio/x-dec-adbcm">
+		<magic priority="20">
+			<match value="0x0064732E" type="big32" offset="0">
+				<match value="23" type="big32" offset="12"/>
+			</match>
+		</magic>
+	</mime-type>
+
+	<mime-type type="audio/x-flac">
+		<acronym>FLAC</acronym>
+		<_comment>Free Lossless Audio Codec</_comment>
+		<magic priority="50">
+			<match value="fLaC" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.flac"/>
+	</mime-type>
+
+	<mime-type type="audio/x-mod">
+		<acronym>MOD</acronym>
+		<magic priority="50">
+			<match value="Extended\ Module:" type="string" offset="0"/>
+			<match value="BMOD2STM" type="string" offset="21"/>
+			<match value="M.K." type="string" offset="1080"/>
+			<match value="M!K!" type="string" offset="1080"/>
+			<match value="FLT4" type="string" offset="1080"/>
+			<match value="FLT8" type="string" offset="1080"/>
+			<match value="4CHN" type="string" offset="1080"/>
+			<match value="6CHN" type="string" offset="1080"/>
+			<match value="8CHN" type="string" offset="1080"/>
+			<match value="CD81" type="string" offset="1080"/>
+			<match value="OKTA" type="string" offset="1080"/>
+			<match value="16CN" type="string" offset="1080"/>
+			<match value="32CN" type="string" offset="1080"/>
+			<match value="IMPM" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.mod"/>
+	</mime-type>
+
+	<mime-type type="audio/x-mpegurl">
+		<glob pattern="*.m3u"/>
+	</mime-type>
+	<mime-type type="audio/x-ms-wax">
+		<glob pattern="*.wax"/>
+	</mime-type>
+	<mime-type type="audio/x-ms-wma">
+		<glob pattern="*.wma"/>
+	</mime-type>
+
+	<mime-type type="audio/x-pn-realaudio">
+		<_comment>Real Audio</_comment>
+		<alias type="audio/x-realaudio" />
+		<magic priority="50">
+			<match value="0x2e7261fd" type="big32" offset="0"/>
+		</magic>
+		<glob pattern="*.ram"/>
+		<glob pattern="*.ra"/>
+	</mime-type>
+
+	<mime-type type="audio/x-pn-realaudio-plugin">
+		<glob pattern="*.rmp"/>
+	</mime-type>
+
+	<mime-type type="audio/x-wav">
+		<acronym>WAV</acronym>
+		<magic priority="20">
+			<match value="RIFF....WAVE" type="string" offset="0"
+				   mask="0xFFFFFFFF00000000FFFFFFFF"/>
+		</magic>
+		<glob pattern="*.wav"/>
+	</mime-type>
+
+	<mime-type type="chemical/x-cdx">
+		<glob pattern="*.cdx"/>
+	</mime-type>
+	<mime-type type="chemical/x-cif">
+		<glob pattern="*.cif"/>
+	</mime-type>
+	<mime-type type="chemical/x-cmdf">
+		<glob pattern="*.cmdf"/>
+	</mime-type>
+	<mime-type type="chemical/x-cml">
+		<glob pattern="*.cml"/>
+	</mime-type>
+	<mime-type type="chemical/x-csml">
+		<glob pattern="*.csml"/>
+	</mime-type>
+	<mime-type type="chemical/x-pdb"/>
+	<mime-type type="chemical/x-xyz">
+		<glob pattern="*.xyz"/>
+	</mime-type>
+
+	<mime-type type="image/bmp">
+		<alias type="image/x-ms-bmp"/>
+		<acronym>BMP</acronym>
+		<_comment>Windows bitmap</_comment>
+		<magic priority="50">
+			<match value="BM" type="string" offset="0" />
+		</magic>
+		<glob pattern="*.bmp"/>
+		<glob pattern="*.dib"/>
+	</mime-type>
+
+	<mime-type type="image/cgm">
+		<acronym>CGM</acronym>
+		<_comment>Computer Graphics Metafile</_comment>
+		<magic priority="50">
+			<match value="BEGMF" type="string" offset="0"/>
+			<match value="0x0020" mask="0xffe0" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.cgm"/>
+	</mime-type>
+
+	<mime-type type="image/example"/>
+	<mime-type type="image/fits"/>
+	<mime-type type="image/g3fax">
+		<glob pattern="*.g3"/>
+	</mime-type>
+
+	<mime-type type="image/gif">
+		<acronym>GIF</acronym>
+		<_comment>Graphics Interchange Format</_comment>
+		<magic priority="50">
+			<match value="GIF87a" type="string" offset="0"/>
+			<match value="GIF89a" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.gif"/>
+	</mime-type>
+
+	<mime-type type="image/ief">
+		<glob pattern="*.ief"/>
+	</mime-type>
+	<mime-type type="image/jp2"/>
+
+	<mime-type type="image/jpeg">
+		<acronym>JPEG</acronym>
+		<_comment>Joint Photographic Experts Group</_comment>
+		<magic priority="50">
+			<!-- FFD8 is the SOI (Start Of Image) marker. -->
+			<!-- It is followed by another marker that starts with FF. -->
+			<match value="0xffd8ff" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.jpg"/>
+		<glob pattern="*.jpeg"/>
+		<glob pattern="*.jpe"/>
+		<glob pattern="*.jif"/>
+		<glob pattern="*.jfif"/>
+		<glob pattern="*.jfi"/>
+	</mime-type>
+
+	<mime-type type="image/jpm"/>
+	<mime-type type="image/jpx"/>
+	<mime-type type="image/naplps"/>
+
+	<mime-type type="image/png">
+		<acronym>PNG</acronym>
+		<_comment>Portable Network Graphics</_comment>
+		<magic priority="50">
+			<match value="\x89PNG\x0d\x0a\x1a\x0a" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.png"/>
+	</mime-type>
+
+	<mime-type type="image/prs.btif">
+		<glob pattern="*.btif"/>
+	</mime-type>
+	<mime-type type="image/prs.pti"/>
+
+	<mime-type type="image/svg+xml">
+		<sub-class-of type="application/xml"/>
+		<acronym>SVG</acronym>
+		<_comment>Scalable Vector Graphics</_comment>
+		<root-XML localName="svg" namespaceURI="http://www.w3.org/2000/svg"/>
+		<glob pattern="*.svg"/>
+		<glob pattern="*.svgz"/>
+	</mime-type>
+
+	<mime-type type="image/t38"/>
+
+	<mime-type type="image/tiff">
+		<acronym>TIFF</acronym>
+		<_comment>Tagged Image File Format</_comment>
+		<magic priority="50">
+			<!-- MM.* = Big endian (M=Motorola) and 0x002a in big endian -->
+			<match value="MM\x00\x2a" type="string" offset="0"/>
+			<!-- II*. = Little endian (I=Intel) and 0x002a in little endian -->
+			<match value="II\x2a\x00" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.tiff"/>
+		<glob pattern="*.tif"/>
+	</mime-type>
+
+	<mime-type type="image/tiff-fx"/>
+
+	<mime-type type="image/vnd.adobe.photoshop">
+		<alias type="image/x-psd"/>
+		<glob pattern="*.psd"/>
+	</mime-type>
+
+	<mime-type type="image/vnd.cns.inf2"/>
+	<mime-type type="image/vnd.djvu">
+		<glob pattern="*.djvu"/>
+		<glob pattern="*.djv"/>
+	</mime-type>
+
+	<mime-type type="image/vnd.dwg">
+		<acronym>DWG</acronym>
+		<_comment>AutoCad Drawing</_comment>
+		<alias type="image/x-dwg"/>
+		<alias type="application/acad"/>
+		<alias type="application/x-acad"/>
+		<alias type="application/autocad_dwg"/>
+		<alias type="application/dwg"/>
+		<alias type="application/x-dwg"/>
+		<alias type="application/x-autocad"/>
+		<glob pattern="*.dwg"/>
+		<magic priority="50">
+			<!-- "AC" followed by four numbers -->
+			<match value="AC0000" type="string" offset="0"
+				   mask="0xFFFFF0F0F0F0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="image/vnd.dxf">
+		<glob pattern="*.dxf"/>
+	</mime-type>
+	<mime-type type="image/vnd.fastbidsheet">
+		<glob pattern="*.fbs"/>
+	</mime-type>
+	<mime-type type="image/vnd.fpx">
+		<glob pattern="*.fpx"/>
+	</mime-type>
+	<mime-type type="image/vnd.fst">
+		<glob pattern="*.fst"/>
+	</mime-type>
+	<mime-type type="image/vnd.fujixerox.edmics-mmr">
+		<glob pattern="*.mmr"/>
+	</mime-type>
+	<mime-type type="image/vnd.fujixerox.edmics-rlc">
+		<glob pattern="*.rlc"/>
+	</mime-type>
+	<mime-type type="image/vnd.globalgraphics.pgb"/>
+	<mime-type type="image/vnd.microsoft.icon"/>
+	<mime-type type="image/vnd.mix"/>
+	<mime-type type="image/vnd.ms-modi">
+		<glob pattern="*.mdi"/>
+	</mime-type>
+	<mime-type type="image/vnd.net-fpx">
+		<glob pattern="*.npx"/>
+	</mime-type>
+	<mime-type type="image/vnd.radiance"/>
+	<mime-type type="image/vnd.sealed.png"/>
+	<mime-type type="image/vnd.sealedmedia.softseal.gif"/>
+	<mime-type type="image/vnd.sealedmedia.softseal.jpg"/>
+	<mime-type type="image/vnd.svf"/>
+
+	<mime-type type="image/vnd.wap.wbmp">
+		<_comment>Wireless Bitmap File Format</_comment>
+		<glob pattern="*.wbmp"/>
+	</mime-type>
+
+	<mime-type type="image/vnd.xiff">
+		<glob pattern="*.xif"/>
+	</mime-type>
+	<mime-type type="image/x-cmu-raster">
+		<glob pattern="*.ras"/>
+	</mime-type>
+	<mime-type type="image/x-cmx">
+		<glob pattern="*.cmx"/>
+	</mime-type>
+	<mime-type type="image/x-freehand">
+		<glob pattern="*.fh"/>
+		<glob pattern="*.fhc"/>
+		<glob pattern="*.fh4"/>
+		<glob pattern="*.fh5"/>
+		<glob pattern="*.fh7"/>
+	</mime-type>
+
+	<mime-type type="image/x-icon">
+		<magic priority="50">
+			<match value="\102\101\050\000\000\000\056\000\000\000\000\000\000\000"
+				   type="string" offset="0"/>
+			<match value="\000\000\001\000" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.ico"/>
+	</mime-type>
+
+	<mime-type type="image/x-niff">
+		<_comment>Navy Interchange File Format</_comment>
+		<magic priority="50">
+			<match value="IIN1" type="string" offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="image/x-pcx">
+		<glob pattern="*.pcx"/>
+	</mime-type>
+	<mime-type type="image/x-pict">
+		<glob pattern="*.pic"/>
+		<glob pattern="*.pct"/>
+	</mime-type>
+
+	<mime-type type="image/x-portable-anymap">
+		<acronym>PNM</acronym>
+		<_comment>Portable Any Map</_comment>
+		<glob pattern="*.pnm" />
+	</mime-type>
+
+	<mime-type type="image/x-portable-bitmap">
+		<sub-class-of type="image/x-portable-anymap"/>
+		<acronym>PBM</acronym>
+		<_comment>Portable Bit Map</_comment>
+		<magic priority="50">
+			<match value="P1" type="string" offset="0"/>
+			<match value="P4" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.pbm"/>
+	</mime-type>
+
+	<mime-type type="image/x-portable-graymap">
+		<sub-class-of type="image/x-portable-anymap"/>
+		<acronym>PGM</acronym>
+		<_comment>Portable Gray Map</_comment>
+		<magic priority="50">
+			<match value="P2" type="string" offset="0"/>
+			<match value="P5" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.pgm"/>
+	</mime-type>
+
+	<mime-type type="image/x-portable-pixmap">
+		<sub-class-of type="image/x-portable-anymap"/>
+		<acronym>PXM</acronym>
+		<_comment>Portable Pixel Map</_comment>
+		<magic priority="50">
+			<match value="P3" type="string" offset="0"/>
+			<match value="P6" type="string" offset="0"/>
+			<match value="P7" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.ppm"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-adobe">
+		<acronym>DNG</acronym>
+		<_comment>Adobe Digital Negative</_comment>
+		<glob pattern="*.dng"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-hasselblad">
+		<_comment>Hasselblad raw image</_comment>
+		<glob pattern="*.3fr"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-fuji">
+		<_comment>Fuji raw image</_comment>
+		<glob pattern="*.raf"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-canon">
+		<_comment>Canon raw image</_comment>
+		<glob pattern="*.crw"/>
+		<glob pattern="*.cr2"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-kodak">
+		<_comment>Kodak raw image</_comment>
+		<glob pattern="*.k25"/>
+		<glob pattern="*.kdc"/>
+		<glob pattern="*.dcs"/>
+		<glob pattern="*.drf"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-minolta">
+		<_comment>Minolta raw image</_comment>
+		<glob pattern="*.mrw"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-nikon">
+		<_comment>Nikon raw image</_comment>
+		<glob pattern="*.nef"/>
+		<glob pattern="*.nrw"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-olympus">
+		<_comment>Olympus raw image</_comment>
+		<glob pattern="*.orf"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-pentax">
+		<_comment>Pentax raw image</_comment>
+		<glob pattern="*.ptx"/>
+		<glob pattern="*.pef"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-sony">
+		<_comment>Sony raw image</_comment>
+		<glob pattern="*.arw"/>
+		<glob pattern="*.srf"/>
+		<glob pattern="*.sr2"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-sigma">
+		<_comment>Sigma raw image</_comment>
+		<glob pattern="*.x3f"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-epson">
+		<_comment>Epson raw image</_comment>
+		<glob pattern="*.erf"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-mamiya">
+		<_comment>Mamiya raw image</_comment>
+		<glob pattern="*.mef"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-leaf">
+		<_comment>Leaf raw image</_comment>
+		<glob pattern="*.mos"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-panasonic">
+		<_comment>Panasonic raw image</_comment>
+		<glob pattern="*.raw"/>
+		<glob pattern="*.rw2"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-phaseone">
+		<_comment>Phase One raw image</_comment>
+		<glob pattern="*.cap"/>
+		<glob pattern="*.iiq"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-red">
+		<_comment>Red raw image</_comment>
+		<glob pattern="*.r3d"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-imacon">
+		<_comment>Imacon raw image</_comment>
+		<glob pattern="*.fff"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-logitech">
+		<_comment>Logitech raw image</_comment>
+		<glob pattern="*.pxn"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-casio">
+		<_comment>Casio raw image</_comment>
+		<glob pattern="*.bay"/>
+	</mime-type>
+
+	<mime-type type="image/x-raw-rawzor">
+		<_comment>Rawzor raw image</_comment>
+		<glob pattern="*.rwz"/>
+	</mime-type>
+
+	<mime-type type="image/x-rgb">
+		<glob pattern="*.rgb"/>
+	</mime-type>
+
+	<mime-type type="image/x-xbitmap">
+		<magic priority="50">
+			<match value="/* XPM" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.xbm"/>
+		<sub-class-of type="text/x-c"/>
+	</mime-type>
+
+	<mime-type type="image/x-xcf">
+		<alias type="image/xcf"/>
+		<magic priority="50">
+			<match type="string" value="gimp xcf " offset="0"/>
+		</magic>
+	</mime-type>
+
+	<mime-type type="image/x-xpixmap">
+		<glob pattern="*.xpm"/>
+	</mime-type>
+	<mime-type type="image/x-xwindowdump">
+		<glob pattern="*.xwd"/>
+	</mime-type>
+
+	<mime-type type="message/cpim"/>
+	<mime-type type="message/delivery-status"/>
+	<mime-type type="message/disposition-notification"/>
+	<mime-type type="message/example"/>
+	<mime-type type="message/external-body"/>
+	<mime-type type="message/global"/>
+	<mime-type type="message/global-delivery-status"/>
+	<mime-type type="message/global-disposition-notification"/>
+	<mime-type type="message/global-headers"/>
+	<mime-type type="message/http"/>
+	<mime-type type="message/imdn+xml"/>
+
+	<mime-type type="message/news">
+		<magic priority="50">
+			<match value="Path:" type="string" offset="0" />
+			<match value="Xref:" type="string" offset="0" />
+			<match value="Article" type="string" offset="0" />
+		</magic>
+	</mime-type>
+
+	<mime-type type="message/partial"/>
+
+	<mime-type type="message/rfc822">
+		<magic priority="50">
+			<match value="Relay-Version:" type="string" offset="0"/>
+			<match value="#!\ rnews" type="string" offset="0"/>
+			<match value="N#!\ rnews" type="string" offset="0"/>
+			<match value="Forward\ to" type="string" offset="0"/>
+			<match value="Pipe\ to" type="string" offset="0"/>
+			<match value="Return-Path:" type="string" offset="0"/>
+			<match value="From:" type="string" offset="0"/>
+			<match value="Received:" type="string" offset="0"/>
+			<match type="string" value="Message-ID:" offset="0"/>
+			<match type="string" value="Date:" offset="0"/>
+		</magic>
+		<glob pattern="*.eml"/>
+		<glob pattern="*.mime"/>
+	</mime-type>
+
+	<mime-type type="message/s-http"/>
+	<mime-type type="message/sip"/>
+	<mime-type type="message/sipfrag"/>
+	<mime-type type="message/tracking-status"/>
+	<mime-type type="message/vnd.si.simp"/>
+
+	<mime-type type="model/example"/>
+
+	<mime-type type="model/iges">
+		<_comment>Initial Graphics Exchange Specification Format</_comment>
+		<glob pattern="*.igs"/>
+		<glob pattern="*.iges"/>
+	</mime-type>
+
+	<mime-type type="model/mesh">
+		<glob pattern="*.msh"/>
+		<glob pattern="*.mesh"/>
+		<glob pattern="*.silo"/>
+	</mime-type>
+
+	<mime-type type="model/vnd.dwf">
+		<glob pattern="*.dwf"/>
+	</mime-type>
+	<mime-type type="model/vnd.flatland.3dml"/>
+	<mime-type type="model/vnd.gdl">
+		<glob pattern="*.gdl"/>
+	</mime-type>
+	<mime-type type="model/vnd.gs-gdl"/>
+	<mime-type type="model/vnd.gs.gdl"/>
+	<mime-type type="model/vnd.gtw">
+		<glob pattern="*.gtw"/>
+	</mime-type>
+	<mime-type type="model/vnd.moml+xml"/>
+	<mime-type type="model/vnd.mts">
+		<glob pattern="*.mts"/>
+	</mime-type>
+	<mime-type type="model/vnd.parasolid.transmit.binary"/>
+	<mime-type type="model/vnd.parasolid.transmit.text"/>
+	<mime-type type="model/vnd.vtu">
+		<glob pattern="*.vtu"/>
+	</mime-type>
+
+	<mime-type type="model/vrml">
+		<glob pattern="*.wrl"/>
+		<glob pattern="*.vrml"/>
+	</mime-type>
+
+	<mime-type type="multipart/alternative"/>
+	<mime-type type="multipart/appledouble"/>
+	<mime-type type="multipart/byteranges"/>
+	<mime-type type="multipart/digest"/>
+	<mime-type type="multipart/encrypted"/>
+	<mime-type type="multipart/example"/>
+	<mime-type type="multipart/form-data"/>
+	<mime-type type="multipart/header-set"/>
+	<mime-type type="multipart/mixed"/>
+	<mime-type type="multipart/parallel"/>
+	<mime-type type="multipart/related"/>
+	<mime-type type="multipart/report"/>
+	<mime-type type="multipart/signed"/>
+	<mime-type type="multipart/voice-message"/>
+	<mime-type type="text/calendar">
+		<glob pattern="*.ics"/>
+		<glob pattern="*.ifb"/>
+	</mime-type>
+
+	<mime-type type="text/css">
+		<_comment>Cascading Style Sheet</_comment>
+		<glob pattern="*.css"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="text/csv">
+		<glob pattern="*.csv"/>
+	</mime-type>
+	<mime-type type="text/directory"/>
+	<mime-type type="text/dns"/>
+	<mime-type type="text/ecmascript"/>
+	<mime-type type="text/enriched"/>
+	<mime-type type="text/example"/>
+
+	<mime-type type="text/html">
+		<!-- TIKA-327: if you encounter tags in the HTML
+          with no declared namespace, it's not XHTML, it's just
+          bad HTML, unfortunately.
+     -->
+		<root-XML localName="html"/>
+		<root-XML localName="HTML"/>
+		<root-XML localName="link"/>
+		<root-XML localName="LINK"/>
+		<root-XML localName="body"/>
+		<root-XML localName="BODY"/>
+		<root-XML localName="p"/>
+		<root-XML localName="P"/>
+		<root-XML localName="script"/>
+		<root-XML localName="SCRIPT"/>
+		<root-XML localName="frameset"/>
+		<root-XML localName="FRAMESET"/>
+		<magic priority="50">
+			<match value="&lt;!DOCTYPE HTML" type="string" offset="0:64"/>
+			<match value="&lt;!doctype html" type="string" offset="0:64"/>
+			<match value="&lt;HEAD" type="string" offset="0:64"/>
+			<match value="&lt;head" type="string" offset="0:64"/>
+			<match value="&lt;TITLE" type="string" offset="0:64"/>
+			<match value="&lt;title" type="string" offset="0:64"/>
+			<!-- note on the offset value here: this can only be as big as
+           MimeTypes#getMinLength(). If you set the offset value to larger
+           than that size, the magic will only be compared to up to
+           MimeTypes#getMinLength() bytes.
+       -->
+			<match value="&lt;html" type="string" offset="0:8192"/>
+			<match value="&lt;HTML" type="string" offset="0:64"/>
+			<match value="&lt;BODY" type="string" offset="0"/>
+			<match value="&lt;body" type="string" offset="0"/>
+			<match value="&lt;TITLE" type="string" offset="0"/>
+			<match value="&lt;title" type="string" offset="0"/>
+			<match value="&lt;h1" type="string" offset="0"/>
+			<match value="&lt;H1" type="string" offset="0"/>
+			<match value="&lt;!doctype HTML" type="string" offset="0"/>
+			<match value="&lt;!DOCTYPE html" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.html"/>
+		<glob pattern="*.htm"/>
+	</mime-type>
+
+	<mime-type type="text/javascript"/>
+	<mime-type type="text/parityfec"/>
+
+	<mime-type type="text/plain">
+		<magic priority="20">
+			<match value="This is TeX," type="string" offset="0"/>
+			<match value="This is METAFONT," type="string" offset="0"/>
+			<match value="/*" type="string" offset="0"/>
+			<match value="//" type="string" offset="0"/>
+			<match value=";;" type="string" offset="0"/>
+			<!-- UTF-16BE BOM -->
+			<match value="0xfeff" type="string" offset="0"/>
+			<!-- UTF-16LE BOM -->
+			<match value="0xfffe" type="string" offset="0"/>
+			<!-- UTF-8 BOM -->
+			<match value="0xefbbbf" type="string" offset="0"/>
+		</magic>
+
+		<glob pattern="*.txt"/>
+		<glob pattern="*.text"/>
+		<glob pattern="*.conf"/>
+		<glob pattern="*.def"/>
+		<glob pattern="*.list"/>
+		<glob pattern="*.log"/>
+		<glob pattern="*.in"/>
+
+		<!-- TIKA-85: http://www.apache.org/dev/svn-eol-style.txt -->
+		<glob pattern="INSTALL"/>
+		<glob pattern="KEYS"/>
+		<glob pattern="Makefile"/>
+		<glob pattern="README"/>
+		<glob pattern="abs-linkmap"/>
+		<glob pattern="abs-menulinks"/>
+		<glob pattern="*.aart"/>
+		<glob pattern="*.ac"/>
+		<glob pattern="*.am"/>
+		<glob pattern="*.cgi"/>
+		<glob pattern="*.classpath"/>
+		<glob pattern="*.cmd"/>
+		<glob pattern="*.config"/>
+		<glob pattern="*.cwiki"/>
+		<glob pattern="*.data"/>
+		<glob pattern="*.dcl"/>
+		<glob pattern="*.egrm"/>
+		<glob pattern="*.ent"/>
+		<glob pattern="*.ft"/>
+		<glob pattern="*.fn"/>
+		<glob pattern="*.fv"/>
+		<glob pattern="*.grm"/>
+		<glob pattern="*.g"/>
+		<glob pattern=".htaccess"/>
+		<glob pattern="*.ihtml"/>
+		<glob pattern="*.jmx"/>
+		<glob pattern="*.jsp"/>
+		<glob pattern="*.junit"/>
+		<glob pattern="*.jx"/>
+		<glob pattern="*.manifest"/>
+		<glob pattern="*.m4"/>
+		<glob pattern="*.mf"/>
+		<glob pattern="*.MF"/>
+		<glob pattern="*.meta"/>
+		<glob pattern="*.n3"/>
+		<glob pattern="*.pen"/>
+		<glob pattern="*.pl"/>
+		<glob pattern="*.pm"/>
+		<glob pattern="*.pod"/>
+		<glob pattern="*.pom"/>
+		<glob pattern="*.project"/>
+		<glob pattern="*.properties"/>
+		<glob pattern="*.py"/>
+		<glob pattern="*.rb"/>
+		<glob pattern="*.rng"/>
+		<glob pattern="*.rnx"/>
+		<glob pattern="*.roles"/>
+		<glob pattern="*.sql"/>
+		<glob pattern="*.tld"/>
+		<glob pattern="*.types"/>
+		<glob pattern="*.vm"/>
+		<glob pattern="*.vsl"/>
+		<glob pattern="*.wsdd"/>
+		<glob pattern="*.xargs"/>
+		<glob pattern="*.xcat"/>
+		<glob pattern="*.xconf"/>
+		<glob pattern="*.xegrm"/>
+		<glob pattern="*.xgrm"/>
+		<glob pattern="*.xlex"/>
+		<glob pattern="*.xlog"/>
+		<glob pattern="*.xmap"/>
+		<glob pattern="*.xroles"/>
+		<glob pattern="*.xsamples"/>
+		<glob pattern="*.xsp"/>
+		<glob pattern="*.xweb"/>
+		<glob pattern="*.xwelcome"/>
+	</mime-type>
+
+	<mime-type type="text/prs.fallenstein.rst"/>
+	<mime-type type="text/prs.lines.tag">
+		<glob pattern="*.dsc"/>
+	</mime-type>
+	<mime-type type="text/red"/>
+	<mime-type type="text/rfc822-headers"/>
+	<mime-type type="text/richtext">
+		<glob pattern="*.rtx"/>
+	</mime-type>
+	<mime-type type="text/rtf"/>
+	<mime-type type="text/rtp-enc-aescm128"/>
+	<mime-type type="text/rtx"/>
+	<mime-type type="text/sgml">
+		<glob pattern="*.sgml"/>
+		<glob pattern="*.sgm"/>
+	</mime-type>
+	<mime-type type="text/t140"/>
+	<mime-type type="text/tab-separated-values">
+		<glob pattern="*.tsv"/>
+	</mime-type>
+
+	<mime-type type="text/troff">
+		<alias type="application/x-troff"/>
+		<alias type="application/x-troff-man"/>
+		<alias type="application/x-troff-me"/>
+		<alias type="application/x-troff-ms"/>
+		<magic priority="50">
+			<match value=".\\&quot;" type="string" offset="0"/>
+			<match value="'\\&quot;" type="string" offset="0"/>
+			<match value="'.\\&quot;" type="string" offset="0"/>
+			<match value="\\&quot;" type="string" offset="0"/>
+			<match value="'''" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.t"/>
+		<glob pattern="*.tr"/>
+		<glob pattern="*.roff"/>
+		<glob pattern="*.man"/>
+		<glob pattern="*.me"/>
+		<glob pattern="*.ms"/>
+	</mime-type>
+
+	<mime-type type="text/ulpfec"/>
+	<mime-type type="text/uri-list">
+		<glob pattern="*.uri"/>
+		<glob pattern="*.uris"/>
+		<glob pattern="*.urls"/>
+	</mime-type>
+	<mime-type type="text/vnd.abc"/>
+	<mime-type type="text/vnd.curl">
+		<glob pattern="*.curl"/>
+	</mime-type>
+	<mime-type type="text/vnd.curl.dcurl">
+		<glob pattern="*.dcurl"/>
+	</mime-type>
+	<mime-type type="text/vnd.curl.scurl">
+		<glob pattern="*.scurl"/>
+	</mime-type>
+	<mime-type type="text/vnd.curl.mcurl">
+		<glob pattern="*.mcurl"/>
+	</mime-type>
+	<mime-type type="text/vnd.dmclientscript"/>
+	<mime-type type="text/vnd.esmertec.theme-descriptor"/>
+	<mime-type type="text/vnd.fly">
+		<glob pattern="*.fly"/>
+	</mime-type>
+	<mime-type type="text/vnd.fmi.flexstor">
+		<glob pattern="*.flx"/>
+	</mime-type>
+	<mime-type type="text/vnd.graphviz">
+		<glob pattern="*.gv"/>
+	</mime-type>
+	<mime-type type="text/vnd.in3d.3dml">
+		<glob pattern="*.3dml"/>
+	</mime-type>
+	<mime-type type="text/vnd.in3d.spot">
+		<glob pattern="*.spot"/>
+	</mime-type>
+	<mime-type type="text/vnd.iptc.newsml"/>
+	<mime-type type="text/vnd.iptc.nitf"/>
+	<mime-type type="text/vnd.latex-z"/>
+	<mime-type type="text/vnd.motorola.reflex"/>
+	<mime-type type="text/vnd.ms-mediapackage"/>
+	<mime-type type="text/vnd.net2phone.commcenter.command"/>
+	<mime-type type="text/vnd.si.uricatalogue"/>
+	<mime-type type="text/vnd.sun.j2me.app-descriptor">
+		<glob pattern="*.jad"/>
+	</mime-type>
+	<mime-type type="text/vnd.trolltech.linguist"/>
+	<mime-type type="text/vnd.wap.si"/>
+	<mime-type type="text/vnd.wap.sl"/>
+	<mime-type type="text/vnd.wap.wml">
+		<glob pattern="*.wml"/>
+	</mime-type>
+
+	<mime-type type="text/vnd.wap.wmlscript">
+		<_comment>WML Script</_comment>
+		<glob pattern="*.wmls"/>
+	</mime-type>
+
+	<mime-type type="text/x-asm">
+		<glob pattern="*.s"/>
+		<glob pattern="*.asm"/>
+	</mime-type>
+
+	<mime-type type="text/x-c">
+		<glob pattern="*.c"/>
+		<glob pattern="*.cc"/>
+		<glob pattern="*.cxx"/>
+		<glob pattern="*.cpp"/>
+		<glob pattern="*.h"/>
+		<glob pattern="*.hh"/>
+		<glob pattern="*.dic"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="text/x-diff">
+		<magic priority="50">
+			<match value="diff\ " type="string" offset="0"/>
+			<match value="***\ " type="string" offset="0"/>
+			<match value="Only\ in\ " type="string" offset="0"/>
+			<match value="Common\ subdirectories:\ " type="string" offset="0"/>
+			<match value="Index:" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.diff"/>
+		<glob pattern="*.patch"/>
+	</mime-type>
+
+	<mime-type type="text/x-fortran">
+		<glob pattern="*.f"/>
+		<glob pattern="*.for"/>
+		<glob pattern="*.f77"/>
+		<glob pattern="*.f90"/>
+	</mime-type>
+	<mime-type type="text/x-pascal">
+		<glob pattern="*.p"/>
+		<glob pattern="*.pas"/>
+	</mime-type>
+
+	<mime-type type="text/x-java-source">
+		<glob pattern="*.java"/>
+		<sub-class-of type="text/plain"/>
+	</mime-type>
+
+	<mime-type type="text/x-setext">
+		<glob pattern="*.etx"/>
+	</mime-type>
+
+	<mime-type type="text/x-uuencode">
+		<glob pattern="*.uu"/>
+	</mime-type>
+	<mime-type type="text/x-vcalendar">
+		<glob pattern="*.vcs"/>
+	</mime-type>
+	<mime-type type="text/x-vcard">
+		<glob pattern="*.vcf"/>
+	</mime-type>
+	<mime-type type="text/xml"/>
+	<mime-type type="text/xml-external-parsed-entity"/>
+	<mime-type type="video/3gpp">
+		<glob pattern="*.3gp"/>
+	</mime-type>
+	<mime-type type="video/3gpp-tt"/>
+	<mime-type type="video/3gpp2">
+		<glob pattern="*.3g2"/>
+	</mime-type>
+	<mime-type type="video/bmpeg"/>
+	<mime-type type="video/bt656"/>
+	<mime-type type="video/celb"/>
+	<mime-type type="video/dv"/>
+	<mime-type type="video/example"/>
+	<mime-type type="video/h261">
+		<glob pattern="*.h261"/>
+	</mime-type>
+	<mime-type type="video/h263">
+		<glob pattern="*.h263"/>
+	</mime-type>
+	<mime-type type="video/h263-1998"/>
+	<mime-type type="video/h263-2000"/>
+	<mime-type type="video/h264">
+		<glob pattern="*.h264"/>
+	</mime-type>
+	<mime-type type="video/jpeg">
+		<glob pattern="*.jpgv"/>
+	</mime-type>
+	<mime-type type="video/jpeg2000"/>
+	<mime-type type="video/jpm">
+		<glob pattern="*.jpm"/>
+		<glob pattern="*.jpgm"/>
+	</mime-type>
+	<mime-type type="video/mj2">
+		<glob pattern="*.mj2"/>
+		<glob pattern="*.mjp2"/>
+	</mime-type>
+	<mime-type type="video/mp1s"/>
+	<mime-type type="video/mp2p"/>
+	<mime-type type="video/mp2t"/>
+	<mime-type type="video/mp4">
+		<glob pattern="*.mp4"/>
+		<glob pattern="*.mp4v"/>
+		<glob pattern="*.mpg4"/>
+	</mime-type>
+	<mime-type type="video/mp4v-es"/>
+
+	<mime-type type="video/mpeg">
+		<magic priority="50">
+			<match value="\000\000\001\263" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.mpeg"/>
+		<glob pattern="*.mpg"/>
+		<glob pattern="*.mpe"/>
+		<glob pattern="*.m1v"/>
+		<glob pattern="*.m2v"/>
+	</mime-type>
+
+	<mime-type type="video/vnd.mpegurl">
+		<glob pattern="*.mxu"/>
+	</mime-type>
+
+	<mime-type type="video/mpeg4-generic"/>
+	<mime-type type="video/mpv"/>
+	<mime-type type="video/nv"/>
+
+	<mime-type type="video/ogg">
+		<glob pattern="*.ogv"/>
+		<sub-class-of type="application/ogg"/>
+	</mime-type>
+
+	<mime-type type="video/parityfec"/>
+	<mime-type type="video/pointer"/>
+
+	<mime-type type="video/quicktime">
+		<magic priority="50">
+			<match value="moov" type="string" offset="4"/>
+			<match value="mdat" type="string" offset="4"/>
+			<match value="ftyp" type="string" offset="4"/>
+		</magic>
+		<glob pattern="*.qt"/>
+		<glob pattern="*.mov"/>
+	</mime-type>
+
+	<mime-type type="video/raw"/>
+	<mime-type type="video/rtp-enc-aescm128"/>
+	<mime-type type="video/rtx"/>
+	<mime-type type="video/smpte292m"/>
+	<mime-type type="video/ulpfec"/>
+	<mime-type type="video/vc1"/>
+	<mime-type type="video/vnd.cctv"/>
+	<mime-type type="video/vnd.dlna.mpeg-tts"/>
+	<mime-type type="video/vnd.fvt">
+		<glob pattern="*.fvt"/>
+	</mime-type>
+	<mime-type type="video/vnd.hns.video"/>
+	<mime-type type="video/vnd.iptvforum.1dparityfec-1010"/>
+	<mime-type type="video/vnd.iptvforum.1dparityfec-2005"/>
+	<mime-type type="video/vnd.iptvforum.2dparityfec-1010"/>
+	<mime-type type="video/vnd.iptvforum.2dparityfec-2005"/>
+	<mime-type type="video/vnd.iptvforum.ttsavc"/>
+	<mime-type type="video/vnd.iptvforum.ttsmpeg2"/>
+	<mime-type type="video/vnd.motorola.video"/>
+	<mime-type type="video/vnd.motorola.videop"/>
+	<mime-type type="video/vnd.mpegurl">
+		<glob pattern="*.mxu"/>
+		<glob pattern="*.m4u"/>
+	</mime-type>
+	<mime-type type="video/vnd.ms-playready.media.pyv">
+		<glob pattern="*.pyv"/>
+	</mime-type>
+	<mime-type type="video/vnd.nokia.interleaved-multimedia"/>
+	<mime-type type="video/vnd.nokia.videovoip"/>
+	<mime-type type="video/vnd.objectvideo"/>
+	<mime-type type="video/vnd.sealed.mpeg1"/>
+	<mime-type type="video/vnd.sealed.mpeg4"/>
+	<mime-type type="video/vnd.sealed.swf"/>
+	<mime-type type="video/vnd.sealedmedia.softseal.mov"/>
+	<mime-type type="video/vnd.vivo">
+		<glob pattern="*.viv"/>
+	</mime-type>
+	<mime-type type="video/x-f4v">
+		<glob pattern="*.f4v"/>
+	</mime-type>
+
+	<mime-type type="video/x-flc">
+		<glob pattern="*.flc"/>
+	</mime-type>
+
+	<mime-type type="video/x-fli">
+		<glob pattern="*.fli"/>
+	</mime-type>
+
+	<mime-type type="video/x-flv">
+		<magic priority="50">
+			<match value="FLV" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.flv"/>
+	</mime-type>
+
+	<mime-type type="video/x-jng">
+		<magic priority="50">
+			<match value="\x8bJNG" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.jng"/>
+	</mime-type>
+
+	<mime-type type="video/x-m4v">
+		<glob pattern="*.m4v"/>
+	</mime-type>
+
+	<mime-type type="video/x-mng">
+		<magic priority="50">
+			<match value="\x8aMNG" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.mng"/>
+	</mime-type>
+
+	<mime-type type="video/x-ms-asf">
+		<glob pattern="*.asf"/>
+		<glob pattern="*.asx"/>
+	</mime-type>
+	<mime-type type="video/x-ms-wm">
+		<glob pattern="*.wm"/>
+	</mime-type>
+	<mime-type type="video/x-ms-wmv">
+		<glob pattern="*.wmv"/>
+	</mime-type>
+	<mime-type type="video/x-ms-wmx">
+		<glob pattern="*.wmx"/>
+	</mime-type>
+	<mime-type type="video/x-ms-wvx">
+		<glob pattern="*.wvx"/>
+	</mime-type>
+
+	<mime-type type="video/x-msvideo">
+		<alias type="video/avi"/>
+		<alias type="video/msvideo"/>
+		<magic priority="50">
+			<match value="RIFF....AVI " type="string" offset="0"
+				   mask="0xFFFFFFFF00000000FFFFFFFF"/>
+		</magic>
+		<glob pattern="*.avi"/>
+	</mime-type>
+
+	<mime-type type="video/x-sgi-movie">
+		<magic priority="50">
+			<match value="MOVI" type="string" offset="0"/>
+		</magic>
+		<glob pattern="*.movie"/>
+	</mime-type>
+
+	<mime-type type="x-conference/x-cooltalk">
+		<_comment>Cooltalk Audio</_comment>
+		<glob pattern="*.ice"/>
+	</mime-type>
+
+</mime-info>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/tika.conf b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/tika.conf
new file mode 100644
index 0000000..8e86e2d
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/crawler/src/main/resources/policy/extractor/tika.conf
@@ -0,0 +1 @@
+ProductType=GenericFile
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/docker-compose.yml b/mvn/archetypes/radix/src/main/resources/archetype-resources/docker-compose.yml
new file mode 100644
index 0000000..b4135c6
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/docker-compose.yml
@@ -0,0 +1,125 @@
+version: '3'
+
+services:
+
+  crawler:
+    image: ${artifactId}-crawler:${version}
+#    restart: always
+    environment:
+      - FAILURE_DIR=/tmp
+      - BACKUP_DIR=/tmp
+      - PUSHPULL_MET_FILE_EXT=met
+      - FILEMGR_URL=http://filemgr:9000
+      - WORKFLOW_URL=http://workflow:9002
+      - RELATIVE_PRODUCT_PATH=
+    volumes:
+      - ${artifactId}-crawler-policy:/oodt/crawler/policy
+      - ${artifactId}-logs:/oodt/crawler/logs
+      - ${artifactId}-data:/oodt/data
+      - ${artifactId}-temp:/tmp
+
+  filemgr:
+    image: ${artifactId}-filemgr:${version}
+    restart: always
+    ports:
+      - 9000:9000
+    environment:
+      - SOLR_URL=http://solr:8983
+    volumes:
+      - ${artifactId}-filemgr-policy:/oodt/filemgr/policy
+      - ${artifactId}-logs:/oodt/filemgr/logs
+      - ${artifactId}-data:/oodt/data
+      - ${artifactId}-temp:/tmp
+
+  resmgr:
+    image: ${artifactId}-resmgr:${version}
+    restart: always
+    ports:
+      - 9001:9001
+    volumes:
+      - ${artifactId}-resmgr-policy:/oodt/resmgr/policy
+      - ${artifactId}-data:/oodt/data
+      - ${artifactId}-logs:/oodt/resmgr/logs
+      - ${artifactId}-temp:/tmp
+
+  solr:
+    image: ${artifactId}-solr:${version}
+    restart: always
+    ports:
+      - 8983:8983
+
+  workflow:
+    image: ${artifactId}-workflow:${version}
+    restart: always
+    ports:
+      - 9002:9002
+    environment:
+      - RESMGR_URL=http://resmgr:9001
+    volumes:
+      - ${artifactId}-workflow-policy:/oodt/workflow/policy
+      - ${artifactId}-logs:/oodt/workflow/logs
+      - ${artifactId}-temp:/tmp
+
+  opsui:
+    image: ${artifactId}-opsui:${version}
+    restart: always
+    ports:
+      - 8080:8080
+    environment:
+      - FILEMGR_URL=http://filemgr:9000
+      - RESMGR_URL=http://resmgr:9001
+      - WORKFLOW_URL=http://workflow:9002
+      - GANGLIA_URL=
+    volumes:
+      - ${artifactId}-workflow-policy:/oodt/workflow/policy
+      - ${artifactId}-pcs-policy:/oodt/pcs/policy
+
+volumes:
+  ${artifactId}-crawler-policy:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/crawler/src/main/resources/policy
+  ${artifactId}-filemgr-policy:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/filemgr/src/main/resources/policy
+  ${artifactId}-resmgr-policy:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/resmgr/src/main/resources/policy
+  ${artifactId}-workflow-policy:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/workflow/src/main/resources/policy
+  ${artifactId}-pcs-policy:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/pcs/src/main/resources/policy
+  ${artifactId}-logs:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/logs
+  ${artifactId}-data:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/data
+  ${artifactId}-temp:
+    driver: local
+    driver_opts:
+      type: none
+      o: bind
+      device: $PWD/temp
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/Dockerfile
new file mode 100644
index 0000000..47ffa47
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/Dockerfile
@@ -0,0 +1,25 @@
+FROM openjdk:8-jre-alpine
+
+# Environment Variables (should not be modified)
+ENV OODT_HOME="/oodt"
+ENV FILEMGR_HOME="/oodt/filemgr"
+
+# Environment Variables (should be user specified)
+ENV SOLR_URL=""
+
+# Steps to Extract Source
+WORKDIR /oodt
+ARG SRC_FILE
+ADD target/${SRC_FILE} .
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/filemgr/policy (Policy Files)
+# * /oodt/data/catalog (Lucene Index Path)
+# * /oodt/data/archive (GenericFile Repository Path)
+# * /oodt/filemgr/logs (Logs)
+# * /tmp (Temporary Files)
+
+# Start
+WORKDIR /oodt/filemgr/bin
+EXPOSE 9000
+CMD java -Djava.ext.dirs="${FILEMGR_HOME}/lib" -Djava.util.logging.config.file="${FILEMGR_HOME}/etc/logging.properties" -Dorg.apache.oodt.cas.filemgr.properties="${FILEMGR_HOME}/etc/filemgr.properties" -Djava.io.tmpdir="/tmp" org.apache.oodt.cas.filemgr.system.FileManagerServerMain --portNum 9000
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/pom.xml
index d91098a..fdcbb47 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/pom.xml
@@ -67,7 +67,7 @@
                <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-assembly-plugin</artifactId>
-                  <version>2.2-beta-2</version>
+                  <version>2.6</version>
                   <configuration>
                      <descriptors>
                         <descriptor>src/main/assembly/assembly.fm-solr-catalog.xml</descriptor>
@@ -86,6 +86,39 @@
             </plugins>
          </build>
       </profile>
+      <profile>
+         <id>docker</id>
+         <activation>
+            <activeByDefault>false</activeByDefault>
+         </activation>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>com.spotify</groupId>
+                  <artifactId>dockerfile-maven-plugin</artifactId>
+                  <version>${dockerfile-maven-version}</version>
+                  <executions>
+                     <execution>
+                        <id>build-and-tag</id>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>build</goal>
+                           <goal>tag</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <repository>${project.artifactId}</repository>
+                     <dockerfile>Dockerfile</dockerfile>
+                     <tag>${project.version}</tag>
+                     <buildArgs>
+                        <SRC_FILE>${project.build.finalName}-bin.tar.gz</SRC_FILE>
+                     </buildArgs>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
    </profiles>
    <dependencies>
       <dependency>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr
index 76c24fb..d995ece 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr
@@ -55,6 +55,12 @@
   export FILEMGR_HOME
 fi
 
+# Only set SOLR_URL if not already set
+if [ -z "$SOLR_URL" ]; then
+  SOLR_URL="http://localhost:8080/solr/oodt-fm"
+  export SOLR_URL
+fi
+
 if [ -z "$FILEMGR_PID" ]; then
   FILEMGR_PID="$FILEMGR_HOME"/run/cas.filemgr.pid
 fi 
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr-client b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr-client
index 52d3efb..72e2ad1 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr-client
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/filemgr-client
@@ -55,6 +55,12 @@
   export FILEMGR_HOME
 fi
 
+# Only set SOLR_URL if not already set
+if [ -z "$SOLR_URL" ]; then
+  SOLR_URL="http://localhost:8080/solr/oodt-fm"
+  export SOLR_URL
+fi
+
 # For Cygwin, ensure paths are in UNIX format before anything is touched
 if $cygwin; then
   [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/query-tool b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/query-tool
index ce02792..2309e88 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/query-tool
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/bin/query-tool
@@ -55,6 +55,12 @@
   export FILEMGR_HOME
 fi
 
+# Only set SOLR_URL if not already set
+if [ -z "$SOLR_URL" ]; then
+  SOLR_URL="http://localhost:8080/solr/oodt-fm"
+  export SOLR_URL
+fi
+
 if [ -z "$FILEMGR_PID" ]; then
   FILEMGR_PID="$FILEMGR_HOME"/run/cas.filemgr.pid
 fi
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.fm-solr-catalog.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.fm-solr-catalog.properties
index 543ea34..7db0c3c 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.fm-solr-catalog.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.fm-solr-catalog.properties
@@ -20,7 +20,7 @@
 
 # Solr catalog factory
 filemgr.catalog.factory=org.apache.oodt.cas.filemgr.catalog.solr.SolrCatalogFactory
-org.apache.oodt.cas.filemgr.catalog.solr.url=http://localhost:8080/solr/oodt-fm
+org.apache.oodt.cas.filemgr.catalog.solr.url=[SOLR_URL]
 
 # data transfer factory
 filemgr.datatransfer.factory=org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.properties
index a48feef..60563a6 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/filemgr.properties
@@ -20,10 +20,10 @@
 
 # RPC implementation, options include the deprecated XMLRPC or the preferred AvroRPC
 # uncomment the Avro implementations to use AvroRPC
-filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerServerFactory
-filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerClientFactory
-#filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerServerFactory
-#filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerClientFactory
+#filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerServerFactory
+#filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.XmlRpcFileManagerClientFactory
+filemgr.server=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerServerFactory
+filemgr.client=org.apache.oodt.cas.filemgr.system.rpc.AvroFileManagerClientFactory
 
 # Lucene catalog factory
 filemgr.catalog.factory=org.apache.oodt.cas.filemgr.catalog.LuceneCatalogFactory
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/logging.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/logging.properties
index 108c44b..08d4368 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/logging.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/filemgr/src/main/resources/etc/logging.properties
@@ -19,12 +19,12 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
-        
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
+
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-crawler.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-crawler.yaml
new file mode 100644
index 0000000..2c8fd58
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-crawler.yaml
@@ -0,0 +1,60 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-crawler
+  name: ${artifactId}-crawler
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-crawler
+    spec:
+      containers:
+      - env:
+        - name: BACKUP_DIR
+          value: /tmp
+        - name: FAILURE_DIR
+          value: /tmp
+        - name: FILEMGR_URL
+          value: http://filemgr:9000
+        - name: PUSHPULL_MET_FILE_EXT
+          value: met
+        - name: RELATIVE_PRODUCT_PATH
+        - name: WORKFLOW_URL
+          value: http://workflow:9002
+        image: ${artifactId}-crawler:1.0-SNAPSHOT
+        name: ${artifactId}-crawler
+        resources: {}
+        volumeMounts:
+        - mountPath: /oodt/crawler/policy
+          name: ${artifactId}-crawler-policy
+        - mountPath: /oodt/crawler/logs
+          name: ${artifactId}-logs
+        - mountPath: /oodt/data
+          name: ${artifactId}-data
+        - mountPath: /tmp
+          name: ${artifactId}-temp
+      restartPolicy: Always
+      volumes:
+      - name: ${artifactId}-crawler-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-crawler-policy
+      - name: ${artifactId}-logs
+        persistentVolumeClaim:
+          claimName: ${artifactId}-logs
+      - name: ${artifactId}-data
+        persistentVolumeClaim:
+          claimName: ${artifactId}-data
+      - name: ${artifactId}-temp
+        persistentVolumeClaim:
+          claimName: ${artifactId}-temp
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-filemgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-filemgr.yaml
new file mode 100644
index 0000000..be49eb4
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-filemgr.yaml
@@ -0,0 +1,53 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-filemgr
+  name: ${artifactId}-filemgr
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-filemgr
+    spec:
+      containers:
+      - env:
+        - name: SOLR_URL
+          value: http://solr:8983
+        image: ${artifactId}-filemgr:1.0-SNAPSHOT
+        name: ${artifactId}-filemgr
+        ports:
+        - containerPort: 9000
+        resources: {}
+        volumeMounts:
+        - mountPath: /oodt/filemgr/policy
+          name: ${artifactId}-filemgr-policy
+        - mountPath: /oodt/filemgr/logs
+          name: ${artifactId}-logs
+        - mountPath: /oodt/data
+          name: ${artifactId}-data
+        - mountPath: /tmp
+          name: ${artifactId}-temp
+      restartPolicy: Always
+      volumes:
+      - name: ${artifactId}-filemgr-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-filemgr-policy
+      - name: ${artifactId}-logs
+        persistentVolumeClaim:
+          claimName: ${artifactId}-logs
+      - name: ${artifactId}-data
+        persistentVolumeClaim:
+          claimName: ${artifactId}-data
+      - name: ${artifactId}-temp
+        persistentVolumeClaim:
+          claimName: ${artifactId}-temp
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-opsui.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-opsui.yaml
new file mode 100644
index 0000000..8275eab
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-opsui.yaml
@@ -0,0 +1,48 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-opsui
+  name: ${artifactId}-opsui
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-opsui
+    spec:
+      containers:
+      - env:
+        - name: FILEMGR_URL
+          value: http://filemgr:9000
+        - name: GANGLIA_URL
+        - name: RESMGR_URL
+          value: http://resmgr:9001
+        - name: WORKFLOW_URL
+          value: http://workflow:9002
+        image: ${artifactId}-opsui:1.0-SNAPSHOT
+        name: ${artifactId}-opsui
+        ports:
+        - containerPort: 8080
+        resources: {}
+        volumeMounts:
+        - mountPath: /oodt/workflow/policy
+          name: ${artifactId}-workflow-policy
+        - mountPath: /oodt/pcs/policy
+          name: ${artifactId}-pcs-policy
+      restartPolicy: Always
+      volumes:
+      - name: ${artifactId}-workflow-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-workflow-policy
+      - name: ${artifactId}-pcs-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-pcs-policy
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-resmgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-resmgr.yaml
new file mode 100644
index 0000000..524a45f
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-resmgr.yaml
@@ -0,0 +1,50 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-resmgr
+  name: ${artifactId}-resmgr
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-resmgr
+    spec:
+      containers:
+      - image: ${artifactId}-resmgr:1.0-SNAPSHOT
+        name: ${artifactId}-resmgr
+        ports:
+        - containerPort: 9001
+        resources: {}
+        volumeMounts:
+        - mountPath: /oodt/resmgr/policy
+          name: ${artifactId}-resmgr-policy
+        - mountPath: /oodt/data
+          name: ${artifactId}-data
+        - mountPath: /oodt/resmgr/logs
+          name: ${artifactId}-logs
+        - mountPath: /tmp
+          name: ${artifactId}-temp
+      restartPolicy: Always
+      volumes:
+      - name: ${artifactId}-resmgr-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-resmgr-policy
+      - name: ${artifactId}-data
+        persistentVolumeClaim:
+          claimName: ${artifactId}-data
+      - name: ${artifactId}-logs
+        persistentVolumeClaim:
+          claimName: ${artifactId}-logs
+      - name: ${artifactId}-temp
+        persistentVolumeClaim:
+          claimName: ${artifactId}-temp
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-solr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-solr.yaml
new file mode 100644
index 0000000..f52dda0
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-solr.yaml
@@ -0,0 +1,27 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-solr
+  name: ${artifactId}-solr
+spec:
+  replicas: 1
+  strategy: {}
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-solr
+    spec:
+      containers:
+      - image: ${artifactId}-solr:1.0-SNAPSHOT
+        name: ${artifactId}-solr
+        ports:
+        - containerPort: 8983
+        resources: {}
+      restartPolicy: Always
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-workflow.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-workflow.yaml
new file mode 100644
index 0000000..4407224
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/deployment-workflow.yaml
@@ -0,0 +1,48 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-workflow
+  name: ${artifactId}-workflow
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        io.kompose.service: ${artifactId}-workflow
+    spec:
+      containers:
+      - env:
+        - name: RESMGR_URL
+          value: http://resmgr:9001
+        image: ${artifactId}-workflow:1.0-SNAPSHOT
+        name: ${artifactId}-workflow
+        ports:
+        - containerPort: 9002
+        resources: {}
+        volumeMounts:
+        - mountPath: /oodt/workflow/policy
+          name: ${artifactId}-workflow-policy
+        - mountPath: /oodt/workflow/logs
+          name: ${artifactId}-logs
+        - mountPath: /tmp
+          name: ${artifactId}-temp
+      restartPolicy: Always
+      volumes:
+      - name: ${artifactId}-workflow-policy
+        persistentVolumeClaim:
+          claimName: ${artifactId}-workflow-policy
+      - name: ${artifactId}-logs
+        persistentVolumeClaim:
+          claimName: ${artifactId}-logs
+      - name: ${artifactId}-temp
+        persistentVolumeClaim:
+          claimName: ${artifactId}-temp
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-filemgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-filemgr.yaml
new file mode 100644
index 0000000..f894f68
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-filemgr.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-filemgr
+  name: ${artifactId}-filemgr
+spec:
+  ports:
+  - name: "9000"
+    port: 9000
+    targetPort: 9000
+  selector:
+    io.kompose.service: ${artifactId}-filemgr
+status:
+  loadBalancer: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-opsui.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-opsui.yaml
new file mode 100644
index 0000000..b958795
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-opsui.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-opsui
+  name: ${artifactId}-opsui
+spec:
+  ports:
+  - name: "8080"
+    port: 8080
+    targetPort: 8080
+  selector:
+    io.kompose.service: ${artifactId}-opsui
+status:
+  loadBalancer: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-resmgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-resmgr.yaml
new file mode 100644
index 0000000..2159041
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-resmgr.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-resmgr
+  name: ${artifactId}-resmgr
+spec:
+  ports:
+  - name: "9001"
+    port: 9001
+    targetPort: 9001
+  selector:
+    io.kompose.service: ${artifactId}-resmgr
+status:
+  loadBalancer: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-solr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-solr.yaml
new file mode 100644
index 0000000..f6e8bdb
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-solr.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-solr
+  name: ${artifactId}-solr
+spec:
+  ports:
+  - name: "8983"
+    port: 8983
+    targetPort: 8983
+  selector:
+    io.kompose.service: ${artifactId}-solr
+status:
+  loadBalancer: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-workflow.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-workflow.yaml
new file mode 100644
index 0000000..bdcb391
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/service-workflow.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    kompose.cmd: kompose convert -f ../docker-compose.yml
+    kompose.version: 1.18.0 ()
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-workflow
+  name: ${artifactId}-workflow
+spec:
+  ports:
+  - name: "9002"
+    port: 9002
+    targetPort: 9002
+  selector:
+    io.kompose.service: ${artifactId}-workflow
+status:
+  loadBalancer: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-data.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-data.yaml
new file mode 100644
index 0000000..3b210a5
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-data.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-data
+  name: ${artifactId}-data
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-logs.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-logs.yaml
new file mode 100644
index 0000000..db9a000
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-logs.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-logs
+  name: ${artifactId}-logs
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-crawler.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-crawler.yaml
new file mode 100644
index 0000000..2d5d285
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-crawler.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-crawler-policy
+  name: ${artifactId}-crawler-policy
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-filemgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-filemgr.yaml
new file mode 100644
index 0000000..f50e94c
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-filemgr.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-filemgr-policy
+  name: ${artifactId}-filemgr-policy
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-pcs.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-pcs.yaml
new file mode 100644
index 0000000..7cff4bb
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-pcs.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-pcs-policy
+  name: ${artifactId}-pcs-policy
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-resmgr.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-resmgr.yaml
new file mode 100644
index 0000000..93b47d8
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-resmgr.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-resmgr-policy
+  name: ${artifactId}-resmgr-policy
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-workflow.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-workflow.yaml
new file mode 100644
index 0000000..d4c8a10
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-policy-workflow.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-workflow-policy
+  name: ${artifactId}-workflow-policy
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-temp.yaml b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-temp.yaml
new file mode 100644
index 0000000..b60e457
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/kubernetes/vol-temp.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  creationTimestamp: null
+  labels:
+    io.kompose.service: ${artifactId}-temp
+  name: ${artifactId}-temp
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Mi
+status: {}
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/pcs/src/main/resources/etc/logging.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/pcs/src/main/resources/etc/logging.properties
index 591f219..378a0bf 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/pcs/src/main/resources/etc/logging.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/pcs/src/main/resources/etc/logging.properties
@@ -19,10 +19,11 @@
 handlers = java.util.logging.ConsoleHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/pom.xml
index 9b4439c..2143086 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/pom.xml
@@ -1,129 +1,130 @@
-<?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/maven-v4_0_0.xsd">

-  <modelVersion>4.0.0</modelVersion>

-

-  <groupId>${groupId}</groupId>

-  <artifactId>${artifactId}</artifactId>

-  <name>Data Management System</name>

-  <packaging>pom</packaging>

-  <description>Data Management System Powered by Apache OODT delivered via RADiX</description>

-  <version>${version}</version>

-

-  <properties>

-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

-    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

-    <oodt.version>${oodt}</oodt.version>

-    <oodt.pge.version>${oodt}</oodt.pge.version>

-   <!-- Maven plugin dependencies -->

-    <maven-compiler-plugin.version>3.2</maven-compiler-plugin.version>

-    <maven-surefire-plugin.version>2.17</maven-surefire-plugin.version>

-    <maven-jar-plugin.version>2.5</maven-jar-plugin.version>

-    <maven-javadoc-plugin.version>2.10.1</maven-javadoc-plugin.version>

-    <maven-eclipse-plugin.version>2.9</maven-eclipse-plugin.version>

-  </properties>

-

-  <repositories>

-    <repository>

-      <id>maven2</id>

-      <name>Java Sun Maven2 Repository</name>

-      <url>https://download.java.net/maven/2</url>

-      <layout>default</layout>

-    </repository>

-    <repository>

-      <id>apache.snapshots</id>

-      <name>Apache Snapshots</name>

-      <url>https://repository.apache.org/snapshots/</url>

-      <releases>

-        <enabled>false</enabled>

-      </releases>

-    </repository>

-  </repositories>

-

-  <distributionManagement>

-  <!-- use the following if you're not using a snapshot version. -->

-    <repository>

-      <id>repo</id>

-      <name>Repository Name</name>

-      <url>scp://host/path/to/repo</url>

-    </repository>

-    <!-- use the following if you ARE using a snapshot version. -->

-    <snapshotRepository>

-      <id>repo</id>

-      <name>Repository Name</name>

-      <url>scp://host/path/to/repo</url>

-    </snapshotRepository>

-  </distributionManagement>

-

-  <build>

-    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>

-    <testSourceDirectory>${basedir}/src/test</testSourceDirectory>

-    <plugins>

-      <plugin>

-        <artifactId>maven-compiler-plugin</artifactId>

-        <version>${maven-compiler-plugin.version}</version>

-        <configuration>

-          <source>1.6</source>

-          <target>1.6</target>

-        </configuration>

-      </plugin>

-      <plugin>

-        <artifactId>maven-jar-plugin</artifactId>

-        <version>${maven-jar-plugin.version}</version>

-        <configuration>

-          <archive>

-            <index>true</index>

-          </archive>

-        </configuration>

-      </plugin>

-      <plugin>

-        <artifactId>maven-eclipse-plugin</artifactId>

-        <version>${maven-eclipse-plugin.version}</version>

-      </plugin>

-      <plugin>

-        <artifactId>maven-surefire-plugin</artifactId>

-        <version>${maven-surefire-plugin.version}</version>

-        <configuration>

-          <includes>

-            <include>**/*Test*.java</include>

-          </includes>

-        </configuration>

-      </plugin>

-      <plugin>

-        <artifactId>maven-javadoc-plugin</artifactId>

-        <version>${maven-javadoc-plugin.version}</version>

-        <configuration>

-          <outputEncoding>UTF-8</outputEncoding>

-          <charset>UTF-8</charset>

-          <docencoding>UTF-8</docencoding>

-          <encoding>UTF-8</encoding>

-        </configuration>

-        <executions>

-          <execution>

-            <id>attach-javadocs</id>

-            <phase>package</phase>

-            <goals>

-              <goal>javadoc</goal>

-            </goals>

-          </execution>

-        </executions>

-      </plugin>

-    </plugins>

-  </build>

-

-</project>

+<?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/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <name>Data Management System</name>
+  <packaging>pom</packaging>
+  <description>Data Management System Powered by Apache OODT delivered via RADiX</description>
+  <version>${version}</version>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    <oodt.version>${oodt}</oodt.version>
+    <oodt.pge.version>${oodt}</oodt.pge.version>
+   <!-- Maven plugin dependencies -->
+    <maven-compiler-plugin.version>3.2</maven-compiler-plugin.version>
+    <maven-surefire-plugin.version>2.17</maven-surefire-plugin.version>
+    <maven-jar-plugin.version>2.5</maven-jar-plugin.version>
+    <maven-javadoc-plugin.version>2.10.1</maven-javadoc-plugin.version>
+    <maven-eclipse-plugin.version>2.9</maven-eclipse-plugin.version>
+    <dockerfile-maven-version>1.4.10</dockerfile-maven-version>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>maven2</id>
+      <name>Java Sun Maven2 Repository</name>
+      <url>https://download.java.net/maven/2</url>
+      <layout>default</layout>
+    </repository>
+    <repository>
+      <id>apache.snapshots</id>
+      <name>Apache Snapshots</name>
+      <url>https://repository.apache.org/snapshots/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+    </repository>
+  </repositories>
+
+  <distributionManagement>
+  <!-- use the following if you're not using a snapshot version. -->
+    <repository>
+      <id>repo</id>
+      <name>Repository Name</name>
+      <url>scp://host/path/to/repo</url>
+    </repository>
+    <!-- use the following if you ARE using a snapshot version. -->
+    <snapshotRepository>
+      <id>repo</id>
+      <name>Repository Name</name>
+      <url>scp://host/path/to/repo</url>
+    </snapshotRepository>
+  </distributionManagement>
+
+  <build>
+    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
+    <testSourceDirectory>${basedir}/src/test</testSourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${maven-compiler-plugin.version}</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>${maven-jar-plugin.version}</version>
+        <configuration>
+          <archive>
+            <index>true</index>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <version>${maven-eclipse-plugin.version}</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${maven-surefire-plugin.version}</version>
+        <configuration>
+          <includes>
+            <include>**/*Test*.java</include>
+          </includes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>${maven-javadoc-plugin.version}</version>
+        <configuration>
+          <outputEncoding>UTF-8</outputEncoding>
+          <charset>UTF-8</charset>
+          <docencoding>UTF-8</docencoding>
+          <encoding>UTF-8</encoding>
+        </configuration>
+        <executions>
+          <execution>
+            <id>attach-javadocs</id>
+            <phase>package</phase>
+            <goals>
+              <goal>javadoc</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/Dockerfile
new file mode 100644
index 0000000..7462890
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/Dockerfile
@@ -0,0 +1,22 @@
+FROM openjdk:8-jre-alpine
+
+# Environment Variables (should not be modified)
+ENV OODT_HOME="/oodt"
+ENV RESMGR_HOME="/oodt/resmgr"
+
+# Environment Variables (should be user specified)
+
+# Steps to Extract Source
+WORKDIR /oodt
+ARG SRC_FILE
+ADD target/${SRC_FILE} .
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/resmgr/policy (Policy Files)
+# * /oodt/resmgr/logs (Logs)
+# * /tmp (Temporary Files)
+
+# Start
+WORKDIR /oodt/resmgr/bin
+EXPOSE 9001
+CMD java -Djava.ext.dirs="${RESMGR_HOME}/lib" -Djava.util.logging.config.file="${RESMGR_HOME}/etc/logging.properties" -Dorg.apache.oodt.cas.resource.properties="${RESMGR_HOME}/etc/resource.properties" -Djava.io.tmpdir="/tmp" org.apache.oodt.cas.resource.system.ResourceManagerMain --portNum 9001
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/pom.xml
index 7b439bb..f3f0945 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/pom.xml
@@ -54,6 +54,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}-bin.tar.gz</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>${groupId}</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/logging.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/logging.properties
index 68e49e9..8531c41 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/logging.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/logging.properties
@@ -20,12 +20,12 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
-        
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
+
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/resource.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/resource.properties
index 5520c7b..9ddf558 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/resource.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/resmgr/src/main/resources/etc/resource.properties
@@ -16,6 +16,13 @@
 #
 # Properties required to configure the Resource Manager
 
+# Client and server classes to be used as resource managers
+resmgr.manager=org.apache.oodt.cas.resource.system.AvroRpcResourceManager
+resmgr.manager.client=org.apache.oodt.cas.resource.system.AvroRpcResourceManagerClient
+
+# resource spark master
+#resource.runner.spark.host = mesos://<ip>:5050
+
 # resource batchmgr factory
 resource.batchmgr.factory = org.apache.oodt.cas.resource.batchmgr.XmlRpcBatchMgrFactory
 
@@ -31,12 +38,22 @@
 # resource job repository factory
 resource.jobrepo.factory = org.apache.oodt.cas.resource.jobrepo.MemoryJobRepositoryFactory
 
+# For queue-multiplexing scheduler
+#resource.backend.mux.repository = org.apache.oodt.cas.resource.mux.XmlBackendRepositoryFactory
+#resource.backend.mux.xmlrepository.queuetobackend = file://[HOME]/queue-to-backend.xml
+
 # node repository factory
 org.apache.oodt.cas.resource.nodes.repo.factory = org.apache.oodt.cas.resource.noderepo.XmlNodeRepositoryFactory
 
 # queue repository factory
 org.apache.oodt.cas.resource.queues.repo.factory = org.apache.oodt.cas.resource.queuerepo.XmlQueueRepositoryFactory
 
+# resource nodes monitor factory
+#org.apache.oodt.cas.resource.monitor.factory = org.apache.oodt.cas.resource.monitor.ganglia.GangliaResourceMonitorFactory
+
+# ganglia resource monitor's load calculator factory
+#org.apache.oodt.cas.resource.monitor.loadcalc.factory = org.apache.oodt.cas.resource.monitor.ganglia.loadcalc.WeightedAverageLoadCalcFactory
+
 # JobStack JobQueue config properties
 org.apache.oodt.cas.resource.jobqueue.jobstack.maxstacksize=1000
 
@@ -48,14 +65,23 @@
 org.apache.oodt.cas.resource.system.xmlrpc.connectionTimeout.minutes=60
 
 # XStream JobRepo configuration props
-org.apache.oodt.cas.resource.jobrepo.xstream.working.dir=[HOME]/job-repo
+org.apache.oodt.cas.resource.jobrepo.xstream.working.dir=[RESMGR_HOME]/policy/jobs
 org.apache.oodt.cas.resource.jobrepo.xstream.max.history=4000
 
 # XML Node Repository config properties
-org.apache.oodt.cas.resource.nodes.dirs=file://[RESMGR_HOME]/policy
+org.apache.oodt.cas.resource.nodes.dirs=file://[RESMGR_HOME]/policy/nodes
 
 # XML Queue Repository config properties
-org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[RESMGR_HOME]/policy
+org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[RESMGR_HOME]/policy/nodes
 
+# Load calculation weights
+#org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadone=1
+#org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadfive=5
+#org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadfifteen=5
+#org.apache.oodt.cas.resource.monitor.loadcalc.weight.memfree=2
+#org.apache.oodt.cas.resource.monitor.loadcalc.weight.swapfree=1
 
+#ganglia meta daemon (gmetad) host details
+#org.apache.oodt.cas.resource.monitor.ganglia.gemtad.host.address=localhost
+#org.apache.oodt.cas.resource.monitor.ganglia.gemtad.host.port=8651
 
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/Dockerfile
new file mode 100644
index 0000000..370d8b8
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/Dockerfile
@@ -0,0 +1,9 @@
+FROM solr:5-alpine
+
+# Using root user, as tar extraction was giving permission denied errors
+USER root
+ARG SRC_FILE
+ADD target/${SRC_FILE} ${SOLR_HOME}
+
+# Change back to solr user
+USER solr
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/pom.xml
index 056ed10..9d6ace6 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/solr/pom.xml
@@ -54,5 +54,41 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}-bin.tar.gz</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies/>
 </project>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/Dockerfile
new file mode 100644
index 0000000..78804c6
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/Dockerfile
@@ -0,0 +1,15 @@
+FROM tomcat:8.0-slim
+
+# Environment Variables (should not be modified)
+ENV FMPROD_HOME="${CATALINA_HOME}/webapps/fmprod"
+
+# Environment Variables (should be user specified)
+ENV FILEMGR_URL=""
+
+# Steps to Extract Source
+ARG SRC_FILE
+ADD target/${SRC_FILE} ${CATALINA_HOME}/webapps/fmprod.war
+
+# Volumes (You can mount these directories from the host machine)
+
+# Start
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/pom.xml
index a43102f..7de5452 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/fmprod/pom.xml
@@ -67,6 +67,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}.war</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.oodt</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/Dockerfile
new file mode 100644
index 0000000..a8cf344
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/Dockerfile
@@ -0,0 +1,21 @@
+FROM tomcat:8.0-slim
+
+# Environment Variables (should not be modified)
+ENV WORKFLOW_HOME="/oodt/workflow"
+ENV PCS_HOME="/oodt/pcs"
+
+# Environment Variables (should be user specified)
+ENV FILEMGR_URL=""
+ENV RESMGR_URL=""
+ENV WORKFLOW_URL=""
+ENV GANGLIA_URL=""
+
+# Steps to Extract Source
+ARG SRC_FILE
+ADD target/${SRC_FILE} ${CATALINA_HOME}/webapps/opsui.war
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/workflow/policy (Workflow Manager Policy Files)
+# * /oodt/pcs/policy (PCS Policy Files)
+
+# Start
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/pom.xml
index 3551e16..e196f79 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/opsui/pom.xml
@@ -67,6 +67,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}.war</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.oodt</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/Dockerfile
new file mode 100644
index 0000000..a2286b1
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/Dockerfile
@@ -0,0 +1,18 @@
+FROM tomcat:8.0-slim
+
+# Environment Variables (should not be modified)
+ENV PCS_HOME="/oodt/pcs"
+
+# Environment Variables (should be user specified)
+ENV FILEMGR_URL=""
+ENV RESMGR_URL=""
+ENV WORKFLOW_URL=""
+
+# Steps to extract Source
+ARG SRC_FILE
+ADD target/${SRC_FILE} ${CATALINA_HOME}/webapps/pcs.war
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/pcs/policy (PCS Policy Files)
+
+# Start
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/pom.xml
index be0da7d..1b35809 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/pcs-services/pom.xml
@@ -67,6 +67,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}.war</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.oodt</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/Dockerfile
new file mode 100644
index 0000000..aa7039c
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/Dockerfile
@@ -0,0 +1,14 @@
+FROM tomcat:8.0-slim
+MAINTAINER Yasith Jayawardana <yasith.jayawardana@icloud.com>
+
+# Environment Variables (should not be modified)
+
+# Environment Variables (should be user specified)
+
+# Steps to Extract Source
+ARG SRC_FILE
+ADD target/${SRC_FILE} ${CATALINA_HOME}/webapps/solr.war
+
+# Volumes (You can mount these directories from the host machine)
+
+# Start
\ No newline at end of file
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/pom.xml
index da9477f..796323c 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/webapps/solr-webapp/pom.xml
@@ -67,6 +67,42 @@
     </plugins>
   </build>
 
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+            </execution>
+          </executions>
+          <configuration>
+            <repository>${project.artifactId}</repository>
+            <dockerfile>Dockerfile</dockerfile>
+            <tag>${project.version}</tag>
+            <buildArgs>
+              <SRC_FILE>${project.build.finalName}.war</SRC_FILE>
+            </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.solr</groupId>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/Dockerfile b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/Dockerfile
new file mode 100755
index 0000000..9935675
--- /dev/null
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/Dockerfile
@@ -0,0 +1,24 @@
+FROM openjdk:8-jre-alpine
+MAINTAINER Yasith Jayawardana <yasith.jayawardana@icloud.com>
+
+# Environment Variables (should not be modified)
+ENV OODT_HOME="/oodt"
+ENV WORKFLOW_HOME="/oodt/workflow"
+
+# Environment Variables (should be user specified)
+ENV RESMGR_URL=""
+
+# Steps to Extract Source
+WORKDIR /oodt
+ARG SRC_FILE
+ADD target/${SRC_FILE} .
+
+# Volumes (You can mount these directories from the host machine)
+# * /oodt/workflow/policy (Policy Files)
+# * /oodt/workflow/logs (Logs)
+# * /tmp (Temporary Files)
+
+# Start
+WORKDIR /oodt/workflow/bin
+EXPOSE 9002
+CMD java -Djava.ext.dirs="${WORKFLOW_HOME}/lib" -Djava.util.logging.config.file="${WORKFLOW_HOME}/etc/logging.properties" -Dorg.apache.oodt.cas.workflow.properties="${WORKFLOW_HOME}/etc/workflow.properties" -Djava.io.tmpdir="/tmp" -Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" -Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" org.apache.oodt.cas.workflow.system.WorkflowManagerStarter --portNum 9002
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/pom.xml b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/pom.xml
index 87bffc9..3dcf6f9 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/pom.xml
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/pom.xml
@@ -52,6 +52,42 @@
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.spotify</groupId>
+            <artifactId>dockerfile-maven-plugin</artifactId>
+            <version>${dockerfile-maven-version}</version>
+            <executions>
+              <execution>
+                <id>build-and-tag</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>build</goal>
+                  <goal>tag</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <repository>${project.artifactId}</repository>
+              <dockerfile>Dockerfile</dockerfile>
+              <tag>${project.version}</tag>
+              <buildArgs>
+                <SRC_FILE>${project.build.finalName}-bin.tar.gz</SRC_FILE>
+              </buildArgs>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
  
   <dependencies>
     <dependency>
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
index 6275bd5..fa4b191 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr
@@ -55,6 +55,12 @@
   export WORKFLOW_HOME
 fi
 
+# Only set RESMGR_URL if not already set
+if [ -z "$RESMGR_URL" ]; then
+  RESMGR_URL=http://localhost:9002
+  export RESMGR_URL
+fi
+
 if [ -z "$WORKFLOW_PID" ]; then
   WORKFLOW_PID="$WORKFLOW_HOME"/run/cas.workflow.pid
 fi
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
index 6e83b61..33d210e 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/bin/wmgr-client
@@ -55,6 +55,12 @@
   export WORKFLOW_HOME
 fi
 
+# Only set RESMGR_URL if not already set
+if [ -z "$RESMGR_URL" ]; then
+  RESMGR_URL=http://localhost:9002
+  export RESMGR_URL
+fi
+
 # For Cygwin, ensure paths are in UNIX format before anything is touched
 if $cygwin; then
   [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/logging.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/logging.properties
index 70df0e7..c1ef1d9 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/logging.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/logging.properties
@@ -19,12 +19,12 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
-        
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
+
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 
diff --git a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/workflow.properties b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/workflow.properties
index dbb0dba..ff317d5 100644
--- a/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/workflow.properties
+++ b/mvn/archetypes/radix/src/main/resources/archetype-resources/workflow/src/main/resources/etc/workflow.properties
@@ -33,7 +33,7 @@
 org.apache.oodt.cas.workflow.engine.preConditionWaitTime=10
 
 # set this if you want the workflow manager to submit jobs through the resource mgr
-org.apache.oodt.cas.workflow.engine.resourcemgr.url=http://localhost:9002
+org.apache.oodt.cas.workflow.engine.resourcemgr.url=[RESMGR_URL]
 
 # if you use the resource mgr submission, you can specify how many seconds the 
 # workflow manager should wait inbetween checking to see if a job is complete
@@ -66,5 +66,5 @@
 # org.apache.oodt.cas.workflow.repo.datasource.jdbc.driver=your.jdbc.Driver
 
 # Spring command line option and action store properties
-org.apache.oodt.cas.cli.action.spring.config=src/main/resources/cmd-line-actions.xml
-org.apache.oodt.cas.cli.option.spring.config=src/main/resources/cmd-line-options.xml
+org.apache.oodt.cas.cli.action.spring.config=file://[WORKFLOW_HOME]/policy/cmd-line-actions.xml
+org.apache.oodt.cas.cli.option.spring.config=file://[WORKFLOW_HOME]/policy/cmd-line-options.xml
diff --git a/mvn/archetypes/radix/src/main/resources/bin/radix b/mvn/archetypes/radix/src/main/resources/bin/radix
index 003d8d2..a662f9e 100755
--- a/mvn/archetypes/radix/src/main/resources/bin/radix
+++ b/mvn/archetypes/radix/src/main/resources/bin/radix
@@ -13,7 +13,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-mvn archetype:generate -DarchetypeGroupId=org.apache.oodt \
-    -DarchetypeArtifactId=radix-archetype -DarchetypeVersion=1.9.1 \
-    -Doodt=1.9.1 -DgroupId=com.mycompany \
-    -DartifactId=oodt -Dversion=0.1
+mvn archetype:generate \
+    -DarchetypeGroupId=org.apache.oodt \
+    -DarchetypeArtifactId=radix-archetype \
+    -DarchetypeVersion=1.9.1 \
+    -Doodt=1.9.1 \
+    -DgroupId=com.mycompany \
+    -DartifactId=oodt \
+    -Dversion=1.0-SNAPSHOT
diff --git a/mvn/archetypes/radix/src/test/resources/projects/basic/goal.txt b/mvn/archetypes/radix/src/test/resources/projects/basic/goal.txt
deleted file mode 100644
index bd1c7e4..0000000
--- a/mvn/archetypes/radix/src/test/resources/projects/basic/goal.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
diff --git a/mvn/archetypes/radix/src/test/resources/projects/basic/archetype.properties b/mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/archetype.properties
similarity index 90%
rename from mvn/archetypes/radix/src/test/resources/projects/basic/archetype.properties
rename to mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/archetype.properties
index 995df71..6df6934 100644
--- a/mvn/archetypes/radix/src/test/resources/projects/basic/archetype.properties
+++ b/mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/archetype.properties
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-version=0.1-SNAPSHOT
-groupId=archetype.it
-artifactId=basic
-oodt=0.7-SNAPSHOT
+version=1.0-SNAPSHOT
+groupId=org.apache.oodt
+artifactId=radix-build
+oodt=1.10-SNAPSHOT
diff --git a/mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/goal.txt b/mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/goal.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mvn/archetypes/radix/src/test/resources/projects/radix-archetype-test/goal.txt
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlInfo.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlInfo.java
index c4be09d..9e3c7f2 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlInfo.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlInfo.java
@@ -17,6 +17,8 @@
 
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * Information about a crawler: its <code>crawlerName</code> and
  * <code>crawlerPort</code>.
@@ -24,7 +26,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public class CrawlInfo {
+public class CrawlInfo implements Serializable {
 
   private String crawlerName;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerHealth.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerHealth.java
index 000683e..c22afe8 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerHealth.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerHealth.java
@@ -18,6 +18,8 @@
 package org.apache.oodt.pcs.health;
 
 
+import java.io.Serializable;
+
 /**
  * 
  * Health of a PCS Crawler in terms of the number of crawls performed, and
@@ -27,7 +29,7 @@
  * @version $Revision$
  * 
  */
-public class CrawlerHealth {
+public class CrawlerHealth implements Serializable {
 
   private String crawlerName;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerPropertiesMetKeys.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerPropertiesMetKeys.java
index 535d1f2..3f650f9 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerPropertiesMetKeys.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerPropertiesMetKeys.java
@@ -17,6 +17,8 @@
 
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * 
  * Met keys read from the {@link CrawlPropertiesFile}.
@@ -24,7 +26,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public interface CrawlerPropertiesMetKeys {
+public interface CrawlerPropertiesMetKeys extends Serializable {
 
   String CRAWLER_INFO_GROUP = "CrawlerInfo";
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerStatus.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerStatus.java
index 53604df..32edc31 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerStatus.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/CrawlerStatus.java
@@ -17,13 +17,15 @@
 
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * Provides status about a Crawler to the {@link PCSHealthMonitor}.
  * 
  * @author mattmann
  * @version $Revision$
  */
-public class CrawlerStatus {
+public class CrawlerStatus implements Serializable {
 
     private CrawlInfo info;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/JobHealthStatus.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/JobHealthStatus.java
index 4406d70..25c99d0 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/JobHealthStatus.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/JobHealthStatus.java
@@ -18,6 +18,8 @@
 package org.apache.oodt.pcs.health;
 
 
+import java.io.Serializable;
+
 /**
  * 
  * A container representing Job health status in the PCS
@@ -25,7 +27,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public class JobHealthStatus {
+public class JobHealthStatus implements Serializable {
 
   private String status;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSDaemonStatus.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSDaemonStatus.java
index 777d48e..a24c8f4 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSDaemonStatus.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSDaemonStatus.java
@@ -16,6 +16,8 @@
  */
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * @author mattmann
  * @version $Revision$
@@ -25,7 +27,7 @@
  * File Manager, the Workflow Manager, or the Resource Manager)
  * </p>.
  */
-public class PCSDaemonStatus {
+public class PCSDaemonStatus implements Serializable {
 
     private String daemonName;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorMetKeys.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorMetKeys.java
index 245e0da..d792065 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorMetKeys.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorMetKeys.java
@@ -17,13 +17,15 @@
 
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * Met keys for the {@link PCSHealthMonitor} tool
  * 
  * @author mattmann
  * @version $Revision$
  */
-public interface PCSHealthMonitorMetKeys {
+public interface PCSHealthMonitorMetKeys extends Serializable {
 
   String HEADER_AND_FOOTER = "--------------------------------------";
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorReport.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorReport.java
index a85420a..caf68c5 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorReport.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/PCSHealthMonitorReport.java
@@ -21,6 +21,7 @@
 import org.apache.oodt.commons.date.DateUtils;
 
 //JDK imports
+import java.io.Serializable;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -33,7 +34,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public class PCSHealthMonitorReport {
+public class PCSHealthMonitorReport implements Serializable {
 
   private Date generationDate;
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/health/WorkflowStatesMetKeys.java b/pcs/core/src/main/java/org/apache/oodt/pcs/health/WorkflowStatesMetKeys.java
index d4837f3..2345a66 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/health/WorkflowStatesMetKeys.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/health/WorkflowStatesMetKeys.java
@@ -17,6 +17,8 @@
 
 package org.apache.oodt.pcs.health;
 
+import java.io.Serializable;
+
 /**
  * 
  * Met keys for the {@link WorkflowStatesFile}
@@ -24,7 +26,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public interface WorkflowStatesMetKeys {
+public interface WorkflowStatesMetKeys extends Serializable {
 
   String WORKFLOW_STATES_GROUP = "WorkflowStatesGroup";
 
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/tools/PCSHealthMonitor.java b/pcs/core/src/main/java/org/apache/oodt/pcs/tools/PCSHealthMonitor.java
index c9d338a..58b1e8c 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/tools/PCSHealthMonitor.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/tools/PCSHealthMonitor.java
@@ -620,7 +620,7 @@
     NettyTransceiver client;
     AvroRpcBatchStub proxy;
     try {
-      client = new NettyTransceiver(new InetSocketAddress(node.getIpAddr().getPort()));
+      client = new NettyTransceiver(new InetSocketAddress(node.getIpAddr().getHost(), node.getIpAddr().getPort()));
       proxy = (AvroRpcBatchStub) SpecificRequestor.getClient(AvroRpcBatchStub.class, client);
       return proxy.isAlive();
     } catch (IOException e) {
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java b/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java
index f36431e..eec9ccd 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java
@@ -36,6 +36,7 @@
 
 //JDK imports
 import java.io.File;
+import java.io.Serializable;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -55,7 +56,7 @@
  * @version $Revision$
  * 
  */
-public class FileManagerUtils implements PCSConfigMetadata {
+public class FileManagerUtils implements PCSConfigMetadata, Serializable {
   /* our log stream */
   private static Logger LOG = Logger
       .getLogger(FileManagerUtils.class.getName());
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/util/ResourceManagerUtils.java b/pcs/core/src/main/java/org/apache/oodt/pcs/util/ResourceManagerUtils.java
index e849eb7..cfae5c9 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/util/ResourceManagerUtils.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/util/ResourceManagerUtils.java
@@ -18,6 +18,7 @@
 package org.apache.oodt.pcs.util;
 
 //JDK imports
+import java.io.Serializable;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
@@ -25,20 +26,21 @@
 import java.util.logging.Logger;
 
 //OODT imports
-import org.apache.oodt.cas.resource.system.XmlRpcResourceManagerClient;
+import org.apache.oodt.cas.resource.system.ResourceManagerClient;
+import org.apache.oodt.cas.resource.system.rpc.ResourceManagerFactory;
 
 /**
  * A set of utility methods that can be used by PCS that need to
  * communicate with the Resource Manager.
- * 
+ *
  * @author mattmann
  * @version $Revision$
- * 
+ *
  */
-public class ResourceManagerUtils {
+public class ResourceManagerUtils implements Serializable {
 
   /* our resource manager client */
-  private XmlRpcResourceManagerClient client;
+  private ResourceManagerClient client;
 
   /* our log stream */
   private static final Logger LOG = Logger.getLogger(ResourceManagerUtils.class
@@ -51,19 +53,19 @@
   }
 
   public ResourceManagerUtils(URL url) {
-    this.client = new XmlRpcResourceManagerClient(url);
+    this.client = ResourceManagerFactory.getResourceManagerClient(url);
     this.rmUrl = url;
 
   }
 
-  public ResourceManagerUtils(XmlRpcResourceManagerClient client) {
+  public ResourceManagerUtils(ResourceManagerClient client) {
     this.client = client;
   }
 
   /**
    * @return the client
    */
-  public XmlRpcResourceManagerClient getClient() {
+  public ResourceManagerClient getClient() {
     return client;
   }
 
@@ -71,7 +73,7 @@
    * @param client
    *          the client to set
    */
-  public void setClient(XmlRpcResourceManagerClient client) {
+  public void setClient(ResourceManagerClient client) {
     this.client = client;
     if (this.client != null) {
       this.rmUrl = this.client.getResMgrUrl();
@@ -90,7 +92,7 @@
   }
 
   /**
-   * 
+   *
    * @return The {@link URL} for the Resource Manager that this
    *         ResourceManagerUtils communicates with.
    */
diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java b/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
index 5db8e05..d9f5b51 100644
--- a/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
+++ b/pcs/core/src/main/java/org/apache/oodt/pcs/util/WorkflowManagerUtils.java
@@ -22,6 +22,7 @@
 import org.apache.oodt.cas.workflow.system.rpc.RpcCommunicationFactory;
 import org.apache.xmlrpc.XmlRpcClient;
 
+import java.io.Serializable;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collections;
@@ -38,7 +39,7 @@
  * @author mattmann
  * @version $Revision$
  */
-public class WorkflowManagerUtils {
+public class WorkflowManagerUtils implements Serializable {
 
   /* our workflow manager client */
   private WorkflowManagerClient client;
diff --git a/pcs/core/src/main/resources/pcs.logging.properties b/pcs/core/src/main/resources/pcs.logging.properties
index 47ddde4..378a0bf 100644
--- a/pcs/core/src/main/resources/pcs.logging.properties
+++ b/pcs/core/src/main/resources/pcs.logging.properties
@@ -20,9 +20,10 @@
 
 # Set the default logging level for the root logger
 .level = ALL
-    
+
 # Set the default logging level for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/pge/src/main/resources/logging.properties b/pge/src/main/resources/logging.properties
index d8c5dfd..1c9d440 100644
--- a/pge/src/main/resources/logging.properties
+++ b/pge/src/main/resources/logging.properties
@@ -19,11 +19,11 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/pom.xml b/pom.xml
index 61d7bcf..b38c786 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,9 +51,12 @@
     <module>webapp/wmonitor</module>
     <module>webapp/fmprod</module>
     <module>webapp/wmservices</module>
+    <module>webapp/tomcat</module>
     <module>pcs/core</module>
     <module>pcs/opsui</module>
     <module>pcs/services</module>
+    <module>deployment</module>
+    <module>react-components/oodt_opsui_sample_app</module>
   </modules>
 
   <scm>
diff --git a/react-components/.gitignore b/react-components/.gitignore
new file mode 100644
index 0000000..0af4e95
--- /dev/null
+++ b/react-components/.gitignore
@@ -0,0 +1,5 @@
+./node_modules
+
+./*/node_modules
+./*/dist
+./*/build
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/.dockerignore b/react-components/oodt_opsui_sample_app/.dockerignore
new file mode 100644
index 0000000..e3fbd98
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/.dockerignore
@@ -0,0 +1,2 @@
+build
+node_modules
diff --git a/react-components/oodt_opsui_sample_app/.env b/react-components/oodt_opsui_sample_app/.env
new file mode 100644
index 0000000..0f5c375
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/.env
@@ -0,0 +1,2 @@
+REACT_APP_FM_REST_API_URL=http://localhost:8080/filemgr-services/jaxrs/v2
+REACT_APP_WM_REST_API_URL=http://localhost:8080/workflow-services/wmservice/v2
diff --git a/react-components/oodt_opsui_sample_app/.env.development b/react-components/oodt_opsui_sample_app/.env.development
new file mode 100644
index 0000000..1075902
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/.env.development
@@ -0,0 +1,2 @@
+REACT_APP_FM_REST_API_URL=http://localhost:8080/filemgr-services/jaxrs/v2
+REACT_APP_WM_REST_API_URL=http://localhost:8080/workflow-services/wmservice/v2
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/Dockerfile b/react-components/oodt_opsui_sample_app/Dockerfile
new file mode 100644
index 0000000..f5b5a1e
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/Dockerfile
@@ -0,0 +1,11 @@
+FROM node:16-alpine as builder
+COPY . /src
+WORKDIR /src
+RUN npm install
+RUN npm run build
+
+FROM node:16-alpine
+RUN npm install -g serve
+COPY --from=builder /src/build /opsui
+WORKDIR /opsui
+ENTRYPOINT ["serve", "-s"]
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/README.md b/react-components/oodt_opsui_sample_app/README.md
new file mode 100644
index 0000000..7aa963c
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/README.md
@@ -0,0 +1,36 @@
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm start`
+
+Runs the app in the development mode.<br>
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+
+The page will reload if you make edits.<br>
+You will also see any lint errors in the console.
+
+### `npm test`
+
+Launches the test runner in the interactive watch mode.<br>
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+
+### `npm run build`
+
+Builds the app for production to the `build` folder.<br>
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.<br>
+Your app is ready to be deployed!
+
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+
+### Deployment
+
+This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
+
+### `npm run build` fails to minify
+
+This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
diff --git a/react-components/oodt_opsui_sample_app/jsconfig.json b/react-components/oodt_opsui_sample_app/jsconfig.json
new file mode 100644
index 0000000..b66f415
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/jsconfig.json
@@ -0,0 +1,8 @@
+{
+  "compilerOptions": {
+    "baseUrl": "src",
+    "module": "commonjs",
+    "target": "es6"
+  },
+  "exclude": ["node_modules"]
+}
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/package-lock.json b/react-components/oodt_opsui_sample_app/package-lock.json
new file mode 100644
index 0000000..37ce494
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/package-lock.json
@@ -0,0 +1,31727 @@
+{
+  "name": "oodt_opsui_sample_app",
+  "version": "0.1.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "version": "0.1.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@material-ui/core": "^4.11.4",
+        "@material-ui/icons": "^4.11.2",
+        "axios": "^0.21.1",
+        "clsx": "^1.1.1",
+        "notistack": "^1.0.10",
+        "prop-types": "^15.7.2",
+        "react": "^17.0.2",
+        "react-dom": "^17.0.2",
+        "react-router-dom": "^5.2.0",
+        "react-scripts": "^4.0.3"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helpers": "^7.14.6",
+        "@babel/parser": "^7.14.6",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/core/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/core/node_modules/source-map": {
+      "version": "0.5.7",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/generator/node_modules/source-map": {
+      "version": "0.5.7",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-explode-assignable-expression": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "browserslist": "^4.16.6",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "regexpu-core": "^4.7.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0-0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-explode-assignable-expression": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-get-function-arity": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-get-function-arity": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-wrap-function": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-properties": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-static-block": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-decorators": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-decorators": "^7.12.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-dynamic-import": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-json-strings": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-numeric-separator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.14.7",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-chaining": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-methods": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-decorators": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-flow": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-flow-strip-types": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-flow": "^7.12.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-constant-elements": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-display-name": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-jsx": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-development": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-transform-react-jsx": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-self": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-source": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-pure-annotations": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-transform": "^0.14.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-runtime": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typescript": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.14.6",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-typescript": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.14.7",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-async-generator-functions": "^7.14.7",
+        "@babel/plugin-proposal-class-properties": "^7.14.5",
+        "@babel/plugin-proposal-class-static-block": "^7.14.5",
+        "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+        "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+        "@babel/plugin-proposal-json-strings": "^7.14.5",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+        "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+        "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-private-methods": "^7.14.5",
+        "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.14.5",
+        "@babel/plugin-transform-async-to-generator": "^7.14.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+        "@babel/plugin-transform-block-scoping": "^7.14.5",
+        "@babel/plugin-transform-classes": "^7.14.5",
+        "@babel/plugin-transform-computed-properties": "^7.14.5",
+        "@babel/plugin-transform-destructuring": "^7.14.7",
+        "@babel/plugin-transform-dotall-regex": "^7.14.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+        "@babel/plugin-transform-for-of": "^7.14.5",
+        "@babel/plugin-transform-function-name": "^7.14.5",
+        "@babel/plugin-transform-literals": "^7.14.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+        "@babel/plugin-transform-modules-amd": "^7.14.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.14.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.14.5",
+        "@babel/plugin-transform-modules-umd": "^7.14.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7",
+        "@babel/plugin-transform-new-target": "^7.14.5",
+        "@babel/plugin-transform-object-super": "^7.14.5",
+        "@babel/plugin-transform-parameters": "^7.14.5",
+        "@babel/plugin-transform-property-literals": "^7.14.5",
+        "@babel/plugin-transform-regenerator": "^7.14.5",
+        "@babel/plugin-transform-reserved-words": "^7.14.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+        "@babel/plugin-transform-spread": "^7.14.6",
+        "@babel/plugin-transform-sticky-regex": "^7.14.5",
+        "@babel/plugin-transform-template-literals": "^7.14.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+        "@babel/plugin-transform-unicode-regex": "^7.14.5",
+        "@babel/preset-modules": "^0.1.4",
+        "@babel/types": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "core-js-compat": "^3.15.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-env/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/preset-env/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-react": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-transform-react-display-name": "^7.14.5",
+        "@babel/plugin-transform-react-jsx": "^7.14.5",
+        "@babel/plugin-transform-react-jsx-development": "^7.14.5",
+        "@babel/plugin-transform-react-pure-annotations": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-typescript": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-transform-typescript": "^7.12.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.14.6",
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/runtime-corejs3": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "core-js-pure": "^3.15.0",
+        "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/parser": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.14.7",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/parser": "^7.14.7",
+        "@babel/types": "^7.14.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "license": "MIT"
+    },
+    "node_modules/@cnakazawa/watch": {
+      "version": "1.0.4",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "exec-sh": "^0.3.2",
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "watch": "cli.js"
+      },
+      "engines": {
+        "node": ">=0.1.95"
+      }
+    },
+    "node_modules/@csstools/convert-colors": {
+      "version": "1.4.0",
+      "license": "CC0-1.0",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/@csstools/normalize.css": {
+      "version": "10.1.0",
+      "license": "CC0-1.0"
+    },
+    "node_modules/@emotion/hash": {
+      "version": "0.8.0",
+      "license": "MIT"
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "0.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.1.1",
+        "espree": "^7.3.0",
+        "globals": "^13.9.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^3.13.1",
+        "minimatch": "^3.0.4",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "13.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+      "version": "0.20.2",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@hapi/address": {
+      "version": "2.1.4",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/bourne": {
+      "version": "1.3.2",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/hoek": {
+      "version": "8.5.1",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/joi": {
+      "version": "15.1.1",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@hapi/address": "2.x.x",
+        "@hapi/bourne": "1.x.x",
+        "@hapi/hoek": "8.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "node_modules/@hapi/topo": {
+      "version": "3.1.6",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "node_modules/@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "license": "ISC",
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@istanbuljs/schema": {
+      "version": "0.1.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/console": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/console/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/console/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/core": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/console": "^26.6.2",
+        "@jest/reporters": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "jest-changed-files": "^26.6.2",
+        "jest-config": "^26.6.3",
+        "jest-haste-map": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-resolve-dependencies": "^26.6.3",
+        "jest-runner": "^26.6.3",
+        "jest-runtime": "^26.6.3",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "jest-watcher": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "p-each-series": "^2.1.0",
+        "rimraf": "^3.0.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/core/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/core/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/core/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/core/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/core/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@jest/core/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/core/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/environment": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/environment/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/environment/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/fake-timers": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "@sinonjs/fake-timers": "^6.0.1",
+        "@types/node": "*",
+        "jest-message-util": "^26.6.2",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/fake-timers/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/fake-timers/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/globals": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/environment": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "expect": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/globals/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/globals/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/reporters": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.2.4",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^4.0.3",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.0.2",
+        "jest-haste-map": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.0",
+        "string-length": "^4.0.1",
+        "terminal-link": "^2.0.0",
+        "v8-to-istanbul": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      },
+      "optionalDependencies": {
+        "node-notifier": "^8.0.0"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/reporters/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/source-map": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.4",
+        "source-map": "^0.6.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/test-result": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/console": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/test-result/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/test-result/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@jest/test-sequencer": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/test-result": "^26.6.2",
+        "graceful-fs": "^4.2.4",
+        "jest-haste-map": "^26.6.2",
+        "jest-runner": "^26.6.3",
+        "jest-runtime": "^26.6.3"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/transform": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.1.0",
+        "@jest/types": "^26.6.2",
+        "babel-plugin-istanbul": "^6.0.0",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^1.4.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-haste-map": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-util": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "pirates": "^4.0.1",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.1",
+        "write-file-atomic": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/@jest/transform/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@material-ui/core": {
+      "version": "4.11.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.4.4",
+        "@material-ui/styles": "^4.11.4",
+        "@material-ui/system": "^4.11.3",
+        "@material-ui/types": "5.1.0",
+        "@material-ui/utils": "^4.11.2",
+        "@types/react-transition-group": "^4.2.0",
+        "clsx": "^1.0.4",
+        "hoist-non-react-statics": "^3.3.2",
+        "popper.js": "1.16.1-lts",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.0 || ^17.0.0",
+        "react-transition-group": "^4.4.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/material-ui"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.6 || ^17.0.0",
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@material-ui/icons": {
+      "version": "4.11.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.4.4"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "@material-ui/core": "^4.0.0",
+        "@types/react": "^16.8.6 || ^17.0.0",
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@material-ui/styles": {
+      "version": "4.11.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.4.4",
+        "@emotion/hash": "^0.8.0",
+        "@material-ui/types": "5.1.0",
+        "@material-ui/utils": "^4.11.2",
+        "clsx": "^1.0.4",
+        "csstype": "^2.5.2",
+        "hoist-non-react-statics": "^3.3.2",
+        "jss": "^10.5.1",
+        "jss-plugin-camel-case": "^10.5.1",
+        "jss-plugin-default-unit": "^10.5.1",
+        "jss-plugin-global": "^10.5.1",
+        "jss-plugin-nested": "^10.5.1",
+        "jss-plugin-props-sort": "^10.5.1",
+        "jss-plugin-rule-value-function": "^10.5.1",
+        "jss-plugin-vendor-prefixer": "^10.5.1",
+        "prop-types": "^15.7.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/material-ui"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.6 || ^17.0.0",
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@material-ui/system": {
+      "version": "4.11.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.4.4",
+        "@material-ui/utils": "^4.11.2",
+        "csstype": "^2.5.2",
+        "prop-types": "^15.7.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/material-ui"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.6 || ^17.0.0",
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@material-ui/types": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@material-ui/utils": {
+      "version": "4.11.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.4.4",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.0 || ^17.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.7",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@npmcli/move-file": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@npmcli/move-file/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@pmmmwh/react-refresh-webpack-plugin": {
+      "version": "0.4.3",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-html": "^0.0.7",
+        "error-stack-parser": "^2.0.6",
+        "html-entities": "^1.2.1",
+        "native-url": "^0.2.6",
+        "schema-utils": "^2.6.5",
+        "source-map": "^0.7.3"
+      },
+      "engines": {
+        "node": ">= 10.x"
+      },
+      "peerDependencies": {
+        "@types/webpack": "4.x",
+        "react-refresh": ">=0.8.3 <0.10.0",
+        "sockjs-client": "^1.4.0",
+        "type-fest": "^0.13.1",
+        "webpack": ">=4.43.0 <6.0.0",
+        "webpack-dev-server": "3.x",
+        "webpack-hot-middleware": "2.x",
+        "webpack-plugin-serve": "0.x || 1.x"
+      },
+      "peerDependenciesMeta": {
+        "@types/webpack": {
+          "optional": true
+        },
+        "sockjs-client": {
+          "optional": true
+        },
+        "type-fest": {
+          "optional": true
+        },
+        "webpack-dev-server": {
+          "optional": true
+        },
+        "webpack-hot-middleware": {
+          "optional": true
+        },
+        "webpack-plugin-serve": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": {
+      "version": "0.7.3",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@rollup/plugin-node-resolve": {
+      "version": "7.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "@rollup/pluginutils": "^3.0.8",
+        "@types/resolve": "0.0.8",
+        "builtin-modules": "^3.1.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.14.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0"
+      }
+    },
+    "node_modules/@rollup/plugin-replace": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "@rollup/pluginutils": "^3.1.0",
+        "magic-string": "^0.25.7"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0 || ^2.0.0"
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "0.0.39",
+        "estree-walker": "^1.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0"
+      }
+    },
+    "node_modules/@rollup/pluginutils/node_modules/@types/estree": {
+      "version": "0.0.39",
+      "license": "MIT"
+    },
+    "node_modules/@sinonjs/commons": {
+      "version": "1.8.3",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "type-detect": "4.0.8"
+      }
+    },
+    "node_modules/@sinonjs/fake-timers": {
+      "version": "6.0.1",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@sinonjs/commons": "^1.7.0"
+      }
+    },
+    "node_modules/@surma/rollup-plugin-off-main-thread": {
+      "version": "1.4.2",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "ejs": "^2.6.1",
+        "magic-string": "^0.25.0"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+      "version": "5.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+      "version": "5.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+      "version": "5.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+      "version": "5.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+      "version": "5.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+      "version": "5.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+      "version": "5.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-plugin-transform-svg-component": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/babel-preset": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0",
+        "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0",
+        "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1",
+        "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1",
+        "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0",
+        "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0",
+        "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0",
+        "@svgr/babel-plugin-transform-svg-component": "^5.5.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/core": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@svgr/plugin-jsx": "^5.5.0",
+        "camelcase": "^6.2.0",
+        "cosmiconfig": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/hast-util-to-babel-ast": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.12.6"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/plugin-jsx": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.12.3",
+        "@svgr/babel-preset": "^5.5.0",
+        "@svgr/hast-util-to-babel-ast": "^5.5.0",
+        "svg-parser": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/plugin-svgo": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^7.0.0",
+        "deepmerge": "^4.2.2",
+        "svgo": "^1.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@svgr/webpack": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.12.3",
+        "@babel/plugin-transform-react-constant-elements": "^7.12.1",
+        "@babel/preset-env": "^7.12.1",
+        "@babel/preset-react": "^7.12.5",
+        "@svgr/core": "^5.5.0",
+        "@svgr/plugin-jsx": "^5.5.0",
+        "@svgr/plugin-svgo": "^5.5.0",
+        "loader-utils": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/gregberge"
+      }
+    },
+    "node_modules/@tootallnate/once": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.1.14",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.14.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.3.0"
+      }
+    },
+    "node_modules/@types/eslint": {
+      "version": "7.2.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "0.0.48",
+      "license": "MIT"
+    },
+    "node_modules/@types/glob": {
+      "version": "7.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/graceful-fs": {
+      "version": "4.1.5",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/html-minifier-terser": {
+      "version": "5.1.1",
+      "license": "MIT"
+    },
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.3",
+      "license": "MIT"
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.7",
+      "license": "MIT"
+    },
+    "node_modules/@types/json5": {
+      "version": "0.0.29",
+      "license": "MIT"
+    },
+    "node_modules/@types/minimatch": {
+      "version": "3.0.4",
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "15.12.5",
+      "license": "MIT"
+    },
+    "node_modules/@types/normalize-package-data": {
+      "version": "2.4.0",
+      "license": "MIT"
+    },
+    "node_modules/@types/parse-json": {
+      "version": "4.0.0",
+      "license": "MIT"
+    },
+    "node_modules/@types/prettier": {
+      "version": "2.3.0",
+      "license": "MIT"
+    },
+    "node_modules/@types/prop-types": {
+      "version": "15.7.3",
+      "license": "MIT"
+    },
+    "node_modules/@types/q": {
+      "version": "1.5.4",
+      "license": "MIT"
+    },
+    "node_modules/@types/react": {
+      "version": "17.0.11",
+      "license": "MIT",
+      "dependencies": {
+        "@types/prop-types": "*",
+        "@types/scheduler": "*",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@types/react-transition-group": {
+      "version": "4.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/react": "*"
+      }
+    },
+    "node_modules/@types/react/node_modules/csstype": {
+      "version": "3.0.8",
+      "license": "MIT"
+    },
+    "node_modules/@types/resolve": {
+      "version": "0.0.8",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/scheduler": {
+      "version": "0.16.1",
+      "license": "MIT"
+    },
+    "node_modules/@types/source-list-map": {
+      "version": "0.1.2",
+      "license": "MIT"
+    },
+    "node_modules/@types/stack-utils": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/@types/tapable": {
+      "version": "1.0.7",
+      "license": "MIT"
+    },
+    "node_modules/@types/uglify-js": {
+      "version": "3.13.0",
+      "license": "MIT",
+      "dependencies": {
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/@types/webpack": {
+      "version": "4.41.29",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "@types/tapable": "^1",
+        "@types/uglify-js": "*",
+        "@types/webpack-sources": "*",
+        "anymatch": "^3.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/@types/webpack-sources": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.7.3"
+      }
+    },
+    "node_modules/@types/webpack-sources/node_modules/source-map": {
+      "version": "0.7.3",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "20.2.0",
+      "license": "MIT"
+    },
+    "node_modules/@typescript-eslint/eslint-plugin": {
+      "version": "4.28.1",
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/experimental-utils": "4.28.1",
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "debug": "^4.3.1",
+        "functional-red-black-tree": "^1.0.1",
+        "regexpp": "^3.1.0",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "@typescript-eslint/parser": "^4.0.0",
+        "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+      "version": "7.3.5",
+      "license": "ISC",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/experimental-utils": {
+      "version": "4.28.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.7",
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/typescript-estree": "4.28.1",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^3.0.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "*"
+      }
+    },
+    "node_modules/@typescript-eslint/parser": {
+      "version": "4.28.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/typescript-estree": "4.28.1",
+        "debug": "^4.3.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "4.28.1",
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/visitor-keys": "4.28.1"
+      },
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/types": {
+      "version": "4.28.1",
+      "license": "MIT",
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "4.28.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/visitor-keys": "4.28.1",
+        "debug": "^4.3.1",
+        "globby": "^11.0.3",
+        "is-glob": "^4.0.1",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+      "version": "7.3.5",
+      "license": "ISC",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "4.28.1",
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "4.28.1",
+        "eslint-visitor-keys": "^2.0.0"
+      },
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0",
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "license": "ISC"
+    },
+    "node_modules/@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "node_modules/@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@xtuc/ieee754": {
+      "version": "1.2.0",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@xtuc/long": {
+      "version": "4.2.2",
+      "license": "Apache-2.0"
+    },
+    "node_modules/abab": {
+      "version": "2.0.5",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/accepts": {
+      "version": "1.3.7",
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "7.4.1",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-globals": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-walk": "^7.1.1"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "7.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/address": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/adjust-sourcemap-loader": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^2.0.0",
+        "regex-parser": "^2.2.11"
+      },
+      "engines": {
+        "node": ">=8.9"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/aggregate-error": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-errors": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "peerDependencies": {
+        "ajv": ">=5.0.0"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "license": "MIT",
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/alphanum-sort": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/ansi-colors": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ansi-html": {
+      "version": "0.0.7",
+      "engines": [
+        "node >= 0.8.0"
+      ],
+      "license": "Apache-2.0",
+      "bin": {
+        "ansi-html": "bin/ansi-html"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.2",
+      "license": "ISC",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/aproba": {
+      "version": "1.2.0",
+      "license": "ISC"
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "license": "MIT",
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/aria-query": {
+      "version": "4.2.2",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@babel/runtime": "^7.10.2",
+        "@babel/runtime-corejs3": "^7.10.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/arity-n": {
+      "version": "1.0.4",
+      "license": "MIT"
+    },
+    "node_modules/arr-diff": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-flatten": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-union": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "2.1.2",
+      "license": "MIT"
+    },
+    "node_modules/array-includes": {
+      "version": "3.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "get-intrinsic": "^1.1.1",
+        "is-string": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-unique": {
+      "version": "0.3.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array.prototype.flat": {
+      "version": "1.2.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.flatmap": {
+      "version": "1.2.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1",
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/arrify": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/asap": {
+      "version": "2.0.6",
+      "license": "MIT"
+    },
+    "node_modules/asn1.js": {
+      "version": "5.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/asn1.js/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/assert": {
+      "version": "1.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      }
+    },
+    "node_modules/assert/node_modules/inherits": {
+      "version": "2.0.1",
+      "license": "ISC"
+    },
+    "node_modules/assert/node_modules/util": {
+      "version": "0.10.3",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "2.0.1"
+      }
+    },
+    "node_modules/assign-symbols": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ast-types-flow": {
+      "version": "0.0.7",
+      "license": "ISC"
+    },
+    "node_modules/astral-regex": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/async": {
+      "version": "2.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "node_modules/async-each": {
+      "version": "1.0.3",
+      "license": "MIT"
+    },
+    "node_modules/async-limiter": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "license": "MIT"
+    },
+    "node_modules/at-least-node": {
+      "version": "1.0.0",
+      "license": "ISC",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "license": "(MIT OR Apache-2.0)",
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/autoprefixer": {
+      "version": "9.8.6",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "colorette": "^1.2.1",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+      }
+    },
+    "node_modules/axe-core": {
+      "version": "4.2.3",
+      "license": "MPL-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/axios": {
+      "version": "0.21.1",
+      "license": "MIT",
+      "dependencies": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "node_modules/axobject-query": {
+      "version": "2.2.0",
+      "license": "Apache-2.0"
+    },
+    "node_modules/babel-eslint": {
+      "version": "10.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "eslint": ">= 4.12.1"
+      }
+    },
+    "node_modules/babel-eslint/node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/babel-extract-comments": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "babylon": "^6.18.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/babel-jest": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/babel__core": "^7.1.7",
+        "babel-plugin-istanbul": "^6.0.0",
+        "babel-preset-jest": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-jest/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/babel-jest/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/babel-loader": {
+      "version": "8.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-cache-dir": "^2.1.0",
+        "loader-utils": "^1.4.0",
+        "mkdirp": "^0.5.3",
+        "pify": "^4.0.1",
+        "schema-utils": "^2.6.5"
+      },
+      "engines": {
+        "node": ">= 6.9"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0",
+        "webpack": ">=2"
+      }
+    },
+    "node_modules/babel-loader/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/babel-loader/node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "license": "MIT",
+      "dependencies": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "node_modules/babel-plugin-istanbul": {
+      "version": "6.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^4.0.0",
+        "test-exclude": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-jest-hoist": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.0.0",
+        "@types/babel__traverse": "^7.0.6"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/babel-plugin-macros": {
+      "version": "2.8.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.7.2",
+        "cosmiconfig": "^6.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
+    "node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.1.0",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.7.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-named-asset-import": {
+      "version": "0.3.7",
+      "license": "MIT",
+      "peerDependencies": {
+        "@babel/core": "^7.1.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "semver": "^6.1.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "core-js-compat": "^3.14.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-syntax-object-rest-spread": {
+      "version": "6.13.0",
+      "license": "MIT"
+    },
+    "node_modules/babel-plugin-transform-object-rest-spread": {
+      "version": "6.26.0",
+      "license": "MIT",
+      "dependencies": {
+        "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+        "babel-runtime": "^6.26.0"
+      }
+    },
+    "node_modules/babel-plugin-transform-react-remove-prop-types": {
+      "version": "0.4.24",
+      "license": "MIT"
+    },
+    "node_modules/babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-preset-jest": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "babel-plugin-jest-hoist": "^26.6.2",
+        "babel-preset-current-node-syntax": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-preset-react-app": {
+      "version": "10.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "7.12.3",
+        "@babel/plugin-proposal-class-properties": "7.12.1",
+        "@babel/plugin-proposal-decorators": "7.12.1",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1",
+        "@babel/plugin-proposal-numeric-separator": "7.12.1",
+        "@babel/plugin-proposal-optional-chaining": "7.12.1",
+        "@babel/plugin-transform-flow-strip-types": "7.12.1",
+        "@babel/plugin-transform-react-display-name": "7.12.1",
+        "@babel/plugin-transform-runtime": "7.12.1",
+        "@babel/preset-env": "7.12.1",
+        "@babel/preset-react": "7.12.1",
+        "@babel/preset-typescript": "7.12.1",
+        "@babel/runtime": "7.12.1",
+        "babel-plugin-macros": "2.8.0",
+        "babel-plugin-transform-react-remove-prop-types": "0.4.24"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/core": {
+      "version": "7.12.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.10.4",
+        "@babel/generator": "^7.12.1",
+        "@babel/helper-module-transforms": "^7.12.1",
+        "@babel/helpers": "^7.12.1",
+        "@babel/parser": "^7.12.3",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.12.1",
+        "@babel/types": "^7.12.1",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.1",
+        "json5": "^2.1.2",
+        "lodash": "^4.17.19",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-class-properties": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-numeric-separator": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-optional-chaining": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/plugin-transform-react-display-name": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/preset-env": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.12.1",
+        "@babel/helper-compilation-targets": "^7.12.1",
+        "@babel/helper-module-imports": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-validator-option": "^7.12.1",
+        "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
+        "@babel/plugin-proposal-class-properties": "^7.12.1",
+        "@babel/plugin-proposal-dynamic-import": "^7.12.1",
+        "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
+        "@babel/plugin-proposal-json-strings": "^7.12.1",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+        "@babel/plugin-proposal-numeric-separator": "^7.12.1",
+        "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
+        "@babel/plugin-proposal-optional-chaining": "^7.12.1",
+        "@babel/plugin-proposal-private-methods": "^7.12.1",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
+        "@babel/plugin-syntax-async-generators": "^7.8.0",
+        "@babel/plugin-syntax-class-properties": "^7.12.1",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.0",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+        "@babel/plugin-syntax-top-level-await": "^7.12.1",
+        "@babel/plugin-transform-arrow-functions": "^7.12.1",
+        "@babel/plugin-transform-async-to-generator": "^7.12.1",
+        "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
+        "@babel/plugin-transform-block-scoping": "^7.12.1",
+        "@babel/plugin-transform-classes": "^7.12.1",
+        "@babel/plugin-transform-computed-properties": "^7.12.1",
+        "@babel/plugin-transform-destructuring": "^7.12.1",
+        "@babel/plugin-transform-dotall-regex": "^7.12.1",
+        "@babel/plugin-transform-duplicate-keys": "^7.12.1",
+        "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
+        "@babel/plugin-transform-for-of": "^7.12.1",
+        "@babel/plugin-transform-function-name": "^7.12.1",
+        "@babel/plugin-transform-literals": "^7.12.1",
+        "@babel/plugin-transform-member-expression-literals": "^7.12.1",
+        "@babel/plugin-transform-modules-amd": "^7.12.1",
+        "@babel/plugin-transform-modules-commonjs": "^7.12.1",
+        "@babel/plugin-transform-modules-systemjs": "^7.12.1",
+        "@babel/plugin-transform-modules-umd": "^7.12.1",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
+        "@babel/plugin-transform-new-target": "^7.12.1",
+        "@babel/plugin-transform-object-super": "^7.12.1",
+        "@babel/plugin-transform-parameters": "^7.12.1",
+        "@babel/plugin-transform-property-literals": "^7.12.1",
+        "@babel/plugin-transform-regenerator": "^7.12.1",
+        "@babel/plugin-transform-reserved-words": "^7.12.1",
+        "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+        "@babel/plugin-transform-spread": "^7.12.1",
+        "@babel/plugin-transform-sticky-regex": "^7.12.1",
+        "@babel/plugin-transform-template-literals": "^7.12.1",
+        "@babel/plugin-transform-typeof-symbol": "^7.12.1",
+        "@babel/plugin-transform-unicode-escapes": "^7.12.1",
+        "@babel/plugin-transform-unicode-regex": "^7.12.1",
+        "@babel/preset-modules": "^0.1.3",
+        "@babel/types": "^7.12.1",
+        "core-js-compat": "^3.6.2",
+        "semver": "^5.5.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/preset-react": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-transform-react-display-name": "^7.12.1",
+        "@babel/plugin-transform-react-jsx": "^7.12.1",
+        "@babel/plugin-transform-react-jsx-development": "^7.12.1",
+        "@babel/plugin-transform-react-jsx-self": "^7.12.1",
+        "@babel/plugin-transform-react-jsx-source": "^7.12.1",
+        "@babel/plugin-transform-react-pure-annotations": "^7.12.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/@babel/runtime": {
+      "version": "7.12.1",
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/babel-preset-react-app/node_modules/source-map": {
+      "version": "0.5.7",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/babel-runtime": {
+      "version": "6.26.0",
+      "license": "MIT",
+      "dependencies": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "node_modules/babel-runtime/node_modules/core-js": {
+      "version": "2.6.12",
+      "hasInstallScript": true,
+      "license": "MIT"
+    },
+    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+      "version": "0.11.1",
+      "license": "MIT"
+    },
+    "node_modules/babylon": {
+      "version": "6.18.0",
+      "license": "MIT",
+      "bin": {
+        "babylon": "bin/babylon.js"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/base": {
+      "version": "0.11.2",
+      "license": "MIT",
+      "dependencies": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/define-property": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/batch": {
+      "version": "0.6.1",
+      "license": "MIT"
+    },
+    "node_modules/bfj": {
+      "version": "7.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "bluebird": "^3.5.5",
+        "check-types": "^11.1.1",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "5.2.2",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bluebird": {
+      "version": "3.7.2",
+      "license": "MIT"
+    },
+    "node_modules/bn.js": {
+      "version": "5.2.0",
+      "license": "MIT"
+    },
+    "node_modules/body-parser": {
+      "version": "1.19.0",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/bytes": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/bonjour": {
+      "version": "3.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "license": "ISC"
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/brorand": {
+      "version": "1.1.0",
+      "license": "MIT"
+    },
+    "node_modules/browser-process-hrtime": {
+      "version": "1.0.0",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/browserify-aes": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/browserify-cipher": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "node_modules/browserify-des": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/browserify-rsa": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "node_modules/browserify-sign": {
+      "version": "4.2.1",
+      "license": "ISC",
+      "dependencies": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/browserify-zlib": {
+      "version": "0.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "pako": "~1.0.5"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.16.6",
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001219",
+        "colorette": "^1.2.2",
+        "electron-to-chromium": "^1.3.723",
+        "escalade": "^3.1.1",
+        "node-releases": "^1.1.71"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/browserslist"
+      }
+    },
+    "node_modules/bser": {
+      "version": "2.1.1",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "node-int64": "^0.4.0"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "4.9.2",
+      "license": "MIT",
+      "dependencies": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/buffer-indexof": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/buffer-xor": {
+      "version": "1.0.3",
+      "license": "MIT"
+    },
+    "node_modules/buffer/node_modules/isarray": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/builtin-modules": {
+      "version": "3.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/builtin-status-codes": {
+      "version": "3.0.0",
+      "license": "MIT"
+    },
+    "node_modules/bytes": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cacache": {
+      "version": "15.2.0",
+      "license": "ISC",
+      "dependencies": {
+        "@npmcli/move-file": "^1.0.1",
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "glob": "^7.1.4",
+        "infer-owner": "^1.0.4",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.1",
+        "minipass-collect": "^1.0.2",
+        "minipass-flush": "^1.0.5",
+        "minipass-pipeline": "^1.2.2",
+        "mkdirp": "^1.0.3",
+        "p-map": "^4.0.0",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.1",
+        "tar": "^6.0.2",
+        "unique-filename": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/cacache/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/cache-base": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/caller-callsite": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caller-callsite/node_modules/callsites": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caller-path": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "caller-callsite": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camel-case": {
+      "version": "4.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "pascal-case": "^3.1.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "6.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/caniuse-api": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001241",
+      "license": "CC-BY-4.0",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/browserslist"
+      }
+    },
+    "node_modules/capture-exit": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "rsvp": "^4.8.4"
+      },
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/case-sensitive-paths-webpack-plugin": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/char-regex": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/check-types": {
+      "version": "11.1.2",
+      "license": "MIT"
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.2",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chownr": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/cipher-base": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/cjs-module-lexer": {
+      "version": "0.6.0",
+      "license": "MIT"
+    },
+    "node_modules/class-utils": {
+      "version": "0.3.6",
+      "license": "MIT",
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/define-property": {
+      "version": "0.2.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/kind-of": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/clean-css": {
+      "version": "4.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "source-map": "~0.6.0"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/clean-stack": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/clsx": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "license": "MIT",
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/coa": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/coa/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/coa/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/coa/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/coa/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/coa/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/coa/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/coa/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/collect-v8-coverage": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/collection-visit": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/color": {
+      "version": "3.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.4"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "license": "MIT"
+    },
+    "node_modules/color-string": {
+      "version": "1.5.5",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/color/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/colorette": {
+      "version": "1.2.2",
+      "license": "MIT"
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/common-tags": {
+      "version": "1.8.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/component-emitter": {
+      "version": "1.3.0",
+      "license": "MIT"
+    },
+    "node_modules/compose-function": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "arity-n": "^1.0.4"
+      }
+    },
+    "node_modules/compressible": {
+      "version": "2.0.18",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.4",
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/compression/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "license": "MIT"
+    },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "engines": [
+        "node >= 0.8"
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/confusing-browser-globals": {
+      "version": "1.0.10",
+      "license": "MIT"
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "1.6.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/console-browserify": {
+      "version": "1.2.0"
+    },
+    "node_modules/constants-browserify": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.3",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.1.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "1.8.0",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "license": "MIT"
+    },
+    "node_modules/copy-concurrently": {
+      "version": "1.0.5",
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "node_modules/copy-concurrently/node_modules/rimraf": {
+      "version": "2.7.1",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/copy-descriptor": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/core-js": {
+      "version": "3.15.1",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.15.1",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.16.6",
+        "semver": "7.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/core-js-compat/node_modules/semver": {
+      "version": "7.0.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/core-js-pure": {
+      "version": "3.15.1",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/cosmiconfig": {
+      "version": "7.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.2.1",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.10.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/create-ecdh": {
+      "version": "4.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      }
+    },
+    "node_modules/create-ecdh/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/create-hash": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "node_modules/create-hmac": {
+      "version": "1.1.7",
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/crypto-browserify": {
+      "version": "3.12.0",
+      "license": "MIT",
+      "dependencies": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/crypto-random-string": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/css-blank-pseudo": {
+      "version": "0.1.4",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.5"
+      },
+      "bin": {
+        "css-blank-pseudo": "cli.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/css-color-names": {
+      "version": "0.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/css-declaration-sorter": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      },
+      "engines": {
+        "node": ">4"
+      }
+    },
+    "node_modules/css-has-pseudo": {
+      "version": "0.10.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^5.0.0-rc.4"
+      },
+      "bin": {
+        "css-has-pseudo": "cli.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/css-has-pseudo/node_modules/cssesc": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^2.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/css-loader": {
+      "version": "4.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "camelcase": "^6.0.0",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^2.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.3",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.1",
+        "semver": "^7.3.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.27.0 || ^5.0.0"
+      }
+    },
+    "node_modules/css-prefers-color-scheme": {
+      "version": "3.1.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.5"
+      },
+      "bin": {
+        "css-prefers-color-scheme": "cli.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "4.1.3",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^5.0.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.6.0",
+        "nth-check": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-select-base-adapter": {
+      "version": "0.1.1",
+      "license": "MIT"
+    },
+    "node_modules/css-tree": {
+      "version": "1.0.0-alpha.37",
+      "license": "MIT",
+      "dependencies": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/css-vendor": {
+      "version": "2.0.8",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.8.3",
+        "is-in-browser": "^1.0.2"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "5.0.1",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/cssdb": {
+      "version": "4.4.0",
+      "license": "CC0-1.0"
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano": {
+      "version": "4.1.11",
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-preset-default": {
+      "version": "4.0.8",
+      "license": "MIT",
+      "dependencies": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.3",
+        "postcss-unique-selectors": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-match": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano/node_modules/cosmiconfig": {
+      "version": "5.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano/node_modules/import-fresh": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano/node_modules/parse-json": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano/node_modules/resolve-from": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/csso": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "css-tree": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/css-tree": {
+      "version": "1.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "mdn-data": "2.0.14",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/mdn-data": {
+      "version": "2.0.14",
+      "license": "CC0-1.0"
+    },
+    "node_modules/cssom": {
+      "version": "0.4.4",
+      "license": "MIT"
+    },
+    "node_modules/cssstyle": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssom": "~0.3.6"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cssstyle/node_modules/cssom": {
+      "version": "0.3.8",
+      "license": "MIT"
+    },
+    "node_modules/csstype": {
+      "version": "2.6.17",
+      "license": "MIT"
+    },
+    "node_modules/cyclist": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/d": {
+      "version": "1.0.1",
+      "license": "ISC",
+      "dependencies": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
+    "node_modules/damerau-levenshtein": {
+      "version": "1.0.7",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/data-urls": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "abab": "^2.0.3",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/debug": {
+      "version": "4.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decimal.js": {
+      "version": "10.3.1",
+      "license": "MIT"
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/dedent": {
+      "version": "0.7.0",
+      "license": "MIT"
+    },
+    "node_modules/deep-equal": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.3",
+      "license": "MIT"
+    },
+    "node_modules/deepmerge": {
+      "version": "4.2.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway": {
+      "version": "4.2.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-gateway/node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "engines": {
+        "node": ">=4.8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/execa": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-gateway/node_modules/get-stream": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/default-gateway/node_modules/is-stream": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/default-gateway/node_modules/path-key": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/default-gateway/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/default-gateway/node_modules/shebang-command": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/which": {
+      "version": "1.3.1",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "object-keys": "^1.0.12"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/define-property": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/del/node_modules/array-union": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/globby": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/globby/node_modules/pify": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/p-map": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/del/node_modules/rimraf": {
+      "version": "2.7.1",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/des.js": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.4",
+      "license": "MIT"
+    },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/detect-node": {
+      "version": "2.1.0",
+      "license": "MIT"
+    },
+    "node_modules/detect-port-alt": {
+      "version": "1.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "address": "^1.0.1",
+        "debug": "^2.6.0"
+      },
+      "bin": {
+        "detect": "bin/detect-port",
+        "detect-port": "bin/detect-port"
+      },
+      "engines": {
+        "node": ">= 4.2.1"
+      }
+    },
+    "node_modules/detect-port-alt/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/detect-port-alt/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/diff-sequences": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/diffie-hellman": {
+      "version": "5.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "node_modules/diffie-hellman/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/dir-glob": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "path-type": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dns-equal": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/dns-packet": {
+      "version": "1.3.4",
+      "license": "MIT",
+      "dependencies": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/dns-txt": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/dom-converter": {
+      "version": "0.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "utila": "~0.4"
+      }
+    },
+    "node_modules/dom-helpers": {
+      "version": "5.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/dom-helpers/node_modules/csstype": {
+      "version": "3.0.8",
+      "license": "MIT"
+    },
+    "node_modules/dom-serializer": {
+      "version": "1.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domain-browser": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4",
+        "npm": ">=1.2"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.2.0",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/domexception": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "webidl-conversions": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/domexception/node_modules/webidl-conversions": {
+      "version": "5.0.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/domhandler": {
+      "version": "4.2.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "domelementtype": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "2.7.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/dot-case": {
+      "version": "3.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/dot-prop": {
+      "version": "5.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dot-prop/node_modules/is-obj": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dotenv": {
+      "version": "8.2.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dotenv-expand": {
+      "version": "5.1.0",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/duplexer": {
+      "version": "0.1.2",
+      "license": "MIT"
+    },
+    "node_modules/duplexify": {
+      "version": "3.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/ejs": {
+      "version": "2.7.4",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.3.760",
+      "license": "ISC"
+    },
+    "node_modules/elliptic": {
+      "version": "6.5.4",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/elliptic/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/emittery": {
+      "version": "0.7.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "license": "MIT"
+    },
+    "node_modules/emojis-list": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "4.5.0",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/enhanced-resolve/node_modules/memory-fs": {
+      "version": "0.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/enquirer": {
+      "version": "2.3.6",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-colors": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/entities": {
+      "version": "2.2.0",
+      "license": "BSD-2-Clause",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/errno": {
+      "version": "0.1.8",
+      "license": "MIT",
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/error-stack-parser": {
+      "version": "2.0.6",
+      "license": "MIT",
+      "dependencies": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.18.3",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "is-callable": "^1.2.3",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.3",
+        "is-string": "^1.0.6",
+        "object-inspect": "^1.10.3",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es5-ext": {
+      "version": "0.10.53",
+      "license": "ISC",
+      "dependencies": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.3",
+        "next-tick": "~1.0.0"
+      }
+    },
+    "node_modules/es6-iterator": {
+      "version": "2.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "node_modules/es6-symbol": {
+      "version": "3.1.3",
+      "license": "ISC",
+      "dependencies": {
+        "d": "^1.0.1",
+        "ext": "^1.1.2"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "license": "MIT"
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/escodegen": {
+      "version": "2.0.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/escodegen/node_modules/estraverse": {
+      "version": "5.2.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/escodegen/node_modules/levn": {
+      "version": "0.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/escodegen/node_modules/optionator": {
+      "version": "0.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/escodegen/node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/escodegen/node_modules/type-check": {
+      "version": "0.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "7.29.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.2",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.0.4",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.1",
+        "progress": "^2.0.0",
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-config-react-app": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "confusing-browser-globals": "^1.0.10"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "peerDependencies": {
+        "@typescript-eslint/eslint-plugin": "^4.0.0",
+        "@typescript-eslint/parser": "^4.0.0",
+        "babel-eslint": "^10.0.0",
+        "eslint": "^7.5.0",
+        "eslint-plugin-flowtype": "^5.2.0",
+        "eslint-plugin-import": "^2.22.0",
+        "eslint-plugin-jest": "^24.0.0",
+        "eslint-plugin-jsx-a11y": "^6.3.1",
+        "eslint-plugin-react": "^7.20.3",
+        "eslint-plugin-react-hooks": "^4.0.8",
+        "eslint-plugin-testing-library": "^3.9.0"
+      },
+      "peerDependenciesMeta": {
+        "eslint-plugin-jest": {
+          "optional": true
+        },
+        "eslint-plugin-testing-library": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-import-resolver-node": {
+      "version": "0.3.4",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^2.6.9",
+        "resolve": "^1.13.1"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/eslint-module-utils": {
+      "version": "2.6.1",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^3.2.7",
+        "pkg-dir": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/debug": {
+      "version": "3.2.7",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-plugin-flowtype": {
+      "version": "5.7.2",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "lodash": "^4.17.15",
+        "string-natural-compare": "^3.0.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^7.1.0"
+      }
+    },
+    "node_modules/eslint-plugin-import": {
+      "version": "2.23.4",
+      "license": "MIT",
+      "dependencies": {
+        "array-includes": "^3.1.3",
+        "array.prototype.flat": "^1.2.4",
+        "debug": "^2.6.9",
+        "doctrine": "^2.1.0",
+        "eslint-import-resolver-node": "^0.3.4",
+        "eslint-module-utils": "^2.6.1",
+        "find-up": "^2.0.0",
+        "has": "^1.0.3",
+        "is-core-module": "^2.4.0",
+        "minimatch": "^3.0.4",
+        "object.values": "^1.1.3",
+        "pkg-up": "^2.0.0",
+        "read-pkg-up": "^3.0.0",
+        "resolve": "^1.20.0",
+        "tsconfig-paths": "^3.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/doctrine": {
+      "version": "2.1.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/find-up": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/locate-path": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-limit": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-locate": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/p-try": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/resolve": {
+      "version": "1.20.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.2.0",
+        "path-parse": "^1.0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/eslint-plugin-jest": {
+      "version": "24.3.6",
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/experimental-utils": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@typescript-eslint/eslint-plugin": ">= 4",
+        "eslint": ">=5"
+      },
+      "peerDependenciesMeta": {
+        "@typescript-eslint/eslint-plugin": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-plugin-jsx-a11y": {
+      "version": "6.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.11.2",
+        "aria-query": "^4.2.2",
+        "array-includes": "^3.1.1",
+        "ast-types-flow": "^0.0.7",
+        "axe-core": "^4.0.2",
+        "axobject-query": "^2.2.0",
+        "damerau-levenshtein": "^1.0.6",
+        "emoji-regex": "^9.0.0",
+        "has": "^1.0.3",
+        "jsx-ast-utils": "^3.1.0",
+        "language-tags": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependencies": {
+        "eslint": "^3 || ^4 || ^5 || ^6 || ^7"
+      }
+    },
+    "node_modules/eslint-plugin-react": {
+      "version": "7.24.0",
+      "license": "MIT",
+      "dependencies": {
+        "array-includes": "^3.1.3",
+        "array.prototype.flatmap": "^1.2.4",
+        "doctrine": "^2.1.0",
+        "has": "^1.0.3",
+        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+        "minimatch": "^3.0.4",
+        "object.entries": "^1.1.4",
+        "object.fromentries": "^2.0.4",
+        "object.values": "^1.1.4",
+        "prop-types": "^15.7.2",
+        "resolve": "^2.0.0-next.3",
+        "string.prototype.matchall": "^4.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^3 || ^4 || ^5 || ^6 || ^7"
+      }
+    },
+    "node_modules/eslint-plugin-react-hooks": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-react/node_modules/doctrine": {
+      "version": "2.1.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-react/node_modules/resolve": {
+      "version": "2.0.0-next.3",
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.2.0",
+        "path-parse": "^1.0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library": {
+      "version": "3.10.2",
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/experimental-utils": "^3.10.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0",
+        "npm": ">=6"
+      },
+      "peerDependencies": {
+        "eslint": "^5 || ^6 || ^7"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/experimental-utils": {
+      "version": "3.10.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.3",
+        "@typescript-eslint/types": "3.10.1",
+        "@typescript-eslint/typescript-estree": "3.10.1",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^2.0.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "*"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": {
+      "version": "3.10.1",
+      "license": "MIT",
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": {
+      "version": "3.10.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "@typescript-eslint/types": "3.10.1",
+        "@typescript-eslint/visitor-keys": "3.10.1",
+        "debug": "^4.1.1",
+        "glob": "^7.1.6",
+        "is-glob": "^4.0.1",
+        "lodash": "^4.17.15",
+        "semver": "^7.3.2",
+        "tsutils": "^3.17.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": {
+      "version": "3.10.1",
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^2.0.0"
+      },
+      "engines": {
+        "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      },
+      "peerDependencies": {
+        "eslint": ">=5"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "2.1.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint-webpack-plugin": {
+      "version": "2.5.4",
+      "license": "MIT",
+      "dependencies": {
+        "@types/eslint": "^7.2.6",
+        "arrify": "^2.0.1",
+        "jest-worker": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "eslint": "^7.0.0",
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/eslint-webpack-plugin/node_modules/schema-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.6",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/eslint/node_modules/@babel/code-frame": {
+      "version": "7.12.11",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.10.4"
+      }
+    },
+    "node_modules/eslint/node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/globals": {
+      "version": "13.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/type-fest": {
+      "version": "0.20.2",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/espree": {
+      "version": "7.3.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^7.4.0",
+        "acorn-jsx": "^5.3.1",
+        "eslint-visitor-keys": "^1.3.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/espree/node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.4.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.2.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.2.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "license": "MIT"
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/eventsource": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "original": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/evp_bytestokey": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/exec-sh": {
+      "version": "0.3.6",
+      "license": "MIT"
+    },
+    "node_modules/execa": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "human-signals": "^1.1.1",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.0",
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/exit": {
+      "version": "0.1.2",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/expand-brackets": {
+      "version": "2.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/define-property": {
+      "version": "0.2.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/kind-of": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/expect": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-styles": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-regex-util": "^26.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/expect/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/expect/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.17.1",
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/array-flatten": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/express/node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "license": "MIT"
+    },
+    "node_modules/ext": {
+      "version": "1.4.0",
+      "license": "ISC",
+      "dependencies": {
+        "type": "^2.0.0"
+      }
+    },
+    "node_modules/ext/node_modules/type": {
+      "version": "2.5.0",
+      "license": "ISC"
+    },
+    "node_modules/extend-shallow": {
+      "version": "3.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/define-property": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "license": "MIT"
+    },
+    "node_modules/fast-glob": {
+      "version": "3.2.6",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "license": "MIT"
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "license": "MIT"
+    },
+    "node_modules/fastq": {
+      "version": "1.11.0",
+      "license": "ISC",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/faye-websocket": {
+      "version": "0.11.4",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/fb-watchman": {
+      "version": "2.0.1",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "bser": "2.1.1"
+      }
+    },
+    "node_modules/figgy-pudding": {
+      "version": "3.5.2",
+      "license": "ISC"
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/file-loader": {
+      "version": "6.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/file-loader/node_modules/schema-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.6",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/filesize": {
+      "version": "6.1.0",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/find-cache-dir": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/find-up": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/locate-path": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/p-locate": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/find-cache-dir/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "3.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.1.1",
+      "license": "ISC"
+    },
+    "node_modules/flatten": {
+      "version": "1.0.3",
+      "license": "MIT"
+    },
+    "node_modules/flush-write-stream": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.14.1",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/for-in": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin": {
+      "version": "4.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.5.5",
+        "chalk": "^2.4.1",
+        "micromatch": "^3.1.10",
+        "minimatch": "^3.0.4",
+        "semver": "^5.6.0",
+        "tapable": "^1.0.0",
+        "worker-rpc": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=6.11.5",
+        "yarn": ">=1.0.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/fork-ts-checker-webpack-plugin/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fragment-cache": {
+      "version": "0.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "map-cache": "^0.2.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/from2": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "9.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "at-least-node": "^1.0.0",
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/fs-minipass": {
+      "version": "2.1.0",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "license": "ISC"
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "license": "ISC",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-own-enumerable-property-symbols": {
+      "version": "3.0.2",
+      "license": "ISC"
+    },
+    "node_modules/get-package-type": {
+      "version": "0.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-value": {
+      "version": "2.0.6",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.1.7",
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/global-modules": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "global-prefix": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/global-prefix": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ini": "^1.3.5",
+        "kind-of": "^6.0.2",
+        "which": "^1.3.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/global-prefix/node_modules/which": {
+      "version": "1.3.1",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globby": {
+      "version": "11.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.1.1",
+        "ignore": "^5.1.4",
+        "merge2": "^1.3.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/globby/node_modules/ignore": {
+      "version": "5.1.8",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.6",
+      "license": "ISC"
+    },
+    "node_modules/growly": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/gzip-size": {
+      "version": "5.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/handle-thing": {
+      "version": "2.0.1",
+      "license": "MIT"
+    },
+    "node_modules/harmony-reflect": {
+      "version": "1.6.2",
+      "license": "(Apache-2.0 OR MPL-1.1)"
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-value": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/kind-of": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/hash-base": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/hash-base/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/hash-base/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/hash.js": {
+      "version": "1.1.7",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "node_modules/he": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "bin": {
+        "he": "bin/he"
+      }
+    },
+    "node_modules/hex-color-regex": {
+      "version": "1.1.0",
+      "license": "MIT"
+    },
+    "node_modules/history": {
+      "version": "4.10.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.1.2",
+        "loose-envify": "^1.2.0",
+        "resolve-pathname": "^3.0.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0",
+        "value-equal": "^1.0.1"
+      }
+    },
+    "node_modules/hmac-drbg": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/hoist-non-react-statics": {
+      "version": "3.3.2",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "react-is": "^16.7.0"
+      }
+    },
+    "node_modules/hoist-non-react-statics/node_modules/react-is": {
+      "version": "16.13.1",
+      "license": "MIT"
+    },
+    "node_modules/hoopy": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "license": "ISC"
+    },
+    "node_modules/hpack.js": {
+      "version": "2.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "node_modules/hsl-regex": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/hsla-regex": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/html-encoding-sniffer": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "whatwg-encoding": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/html-entities": {
+      "version": "1.4.0",
+      "license": "MIT"
+    },
+    "node_modules/html-escaper": {
+      "version": "2.0.2",
+      "license": "MIT"
+    },
+    "node_modules/html-minifier-terser": {
+      "version": "5.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "camel-case": "^4.1.1",
+        "clean-css": "^4.2.3",
+        "commander": "^4.1.1",
+        "he": "^1.2.0",
+        "param-case": "^3.0.3",
+        "relateurl": "^0.2.7",
+        "terser": "^4.6.3"
+      },
+      "bin": {
+        "html-minifier-terser": "cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/html-webpack-plugin": {
+      "version": "4.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/html-minifier-terser": "^5.0.0",
+        "@types/tapable": "^1.0.5",
+        "@types/webpack": "^4.41.8",
+        "html-minifier-terser": "^5.0.1",
+        "loader-utils": "^1.2.3",
+        "lodash": "^4.17.15",
+        "pretty-error": "^2.1.1",
+        "tapable": "^1.1.3",
+        "util.promisify": "1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "6.1.0",
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/http-deceiver": {
+      "version": "1.2.7",
+      "license": "MIT"
+    },
+    "node_modules/http-errors": {
+      "version": "1.7.2",
+      "license": "MIT",
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-errors/node_modules/inherits": {
+      "version": "2.0.3",
+      "license": "ISC"
+    },
+    "node_modules/http-parser-js": {
+      "version": "0.5.3",
+      "license": "MIT"
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "license": "MIT",
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "0.19.1",
+      "license": "MIT",
+      "dependencies": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/https-browserify": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "1.1.1",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8.12.0"
+      }
+    },
+    "node_modules/hyphenate-style-name": {
+      "version": "1.0.4",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/icss-utils": {
+      "version": "4.1.1",
+      "license": "ISC",
+      "dependencies": {
+        "postcss": "^7.0.14"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/identity-obj-proxy": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "harmony-reflect": "^1.4.6"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/iferr": {
+      "version": "0.1.5",
+      "license": "MIT"
+    },
+    "node_modules/ignore": {
+      "version": "4.0.6",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/immer": {
+      "version": "8.0.1",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/immer"
+      }
+    },
+    "node_modules/import-cwd": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "import-from": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-fresh/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-from": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-from/node_modules/resolve-from": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local": {
+      "version": "3.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/import-local/node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/indexes-of": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/infer-owner": {
+      "version": "1.0.4",
+      "license": "ISC"
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "license": "ISC"
+    },
+    "node_modules/ini": {
+      "version": "1.3.8",
+      "license": "ISC"
+    },
+    "node_modules/internal-ip": {
+      "version": "4.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/internal-slot": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/ip": {
+      "version": "1.1.5",
+      "license": "MIT"
+    },
+    "node_modules/ip-regex": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute-url": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "license": "MIT"
+    },
+    "node_modules/is-bigint": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-boolean-object": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-buffer": {
+      "version": "1.1.6",
+      "license": "MIT"
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-ci": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ci-info": "^2.0.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-color-stop": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "has": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-directory": {
+      "version": "0.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "license": "MIT",
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-generator-fn": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-in-browser": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/is-module": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-number-object": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-path-cwd": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-path-in-cwd": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-path-inside": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "path-is-inside": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-potential-custom-element-name": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-regexp": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-resolvable": {
+      "version": "1.1.0",
+      "license": "ISC"
+    },
+    "node_modules/is-root": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.6",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/is-windows": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "0.0.1",
+      "license": "MIT"
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "license": "ISC"
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/istanbul-lib-coverage": {
+      "version": "3.0.0",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-instrument": {
+      "version": "4.0.3",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@babel/core": "^7.7.5",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-coverage": "^3.0.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-instrument/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/istanbul-lib-report": {
+      "version": "3.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-report/node_modules/make-dir": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/istanbul-lib-report/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps": {
+      "version": "4.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-reports": {
+      "version": "3.0.2",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest": {
+      "version": "26.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/core": "^26.6.0",
+        "import-local": "^3.0.2",
+        "jest-cli": "^26.6.0"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-changed-files": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "execa": "^4.0.0",
+        "throat": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-changed-files/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-changed-files/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-circus": {
+      "version": "26.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.1.0",
+        "@jest/environment": "^26.6.0",
+        "@jest/test-result": "^26.6.0",
+        "@jest/types": "^26.6.0",
+        "@types/babel__traverse": "^7.0.4",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^0.7.0",
+        "expect": "^26.6.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^26.6.0",
+        "jest-matcher-utils": "^26.6.0",
+        "jest-message-util": "^26.6.0",
+        "jest-runner": "^26.6.0",
+        "jest-runtime": "^26.6.0",
+        "jest-snapshot": "^26.6.0",
+        "jest-util": "^26.6.0",
+        "pretty-format": "^26.6.0",
+        "stack-utils": "^2.0.2",
+        "throat": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-circus/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-circus/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-circus/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-cli": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/core": "^26.6.3",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "import-local": "^3.0.2",
+        "is-ci": "^2.0.0",
+        "jest-config": "^26.6.3",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "prompts": "^2.0.1",
+        "yargs": "^15.4.1"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-cli/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-cli/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-config": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.1.0",
+        "@jest/test-sequencer": "^26.6.3",
+        "@jest/types": "^26.6.2",
+        "babel-jest": "^26.6.3",
+        "chalk": "^4.0.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.1",
+        "graceful-fs": "^4.2.4",
+        "jest-environment-jsdom": "^26.6.2",
+        "jest-environment-node": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "jest-jasmine2": "^26.6.3",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      },
+      "peerDependencies": {
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-config/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-config/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-config/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-config/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-config/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-config/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-config/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-config/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-diff": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "diff-sequences": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-diff/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-diff/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-diff/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-docblock": {
+      "version": "26.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "detect-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-each": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "jest-util": "^26.6.2",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-each/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-each/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-each/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-environment-jsdom": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jsdom": "^16.4.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-environment-jsdom/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-environment-jsdom/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-environment-node": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-environment-node/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-environment-node/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-get-type": {
+      "version": "26.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-haste-map": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "@types/graceful-fs": "^4.1.2",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-regex-util": "^26.0.0",
+        "jest-serializer": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "sane": "^4.0.3",
+        "walker": "^1.0.7"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.1.2"
+      }
+    },
+    "node_modules/jest-haste-map/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-haste-map/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-jasmine2": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.1.0",
+        "@jest/environment": "^26.6.2",
+        "@jest/source-map": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "expect": "^26.6.2",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^26.6.2",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-runtime": "^26.6.3",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "pretty-format": "^26.6.2",
+        "throat": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-jasmine2/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-leak-detector": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-leak-detector/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-leak-detector/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-leak-detector/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-matcher-utils": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "jest-diff": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-matcher-utils/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-message-util": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "@jest/types": "^26.6.2",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "micromatch": "^4.0.2",
+        "pretty-format": "^26.6.2",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-message-util/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-mock": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-mock/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-mock/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-pnp-resolver": {
+      "version": "1.2.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jest-resolve": "*"
+      },
+      "peerDependenciesMeta": {
+        "jest-resolve": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-regex-util": {
+      "version": "26.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-resolve": {
+      "version": "26.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.0",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.17.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-resolve-dependencies": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-snapshot": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-resolve-dependencies/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-resolve/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runner": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/console": "^26.6.2",
+        "@jest/environment": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.7.1",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "jest-config": "^26.6.3",
+        "jest-docblock": "^26.0.0",
+        "jest-haste-map": "^26.6.2",
+        "jest-leak-detector": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "jest-runtime": "^26.6.3",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "source-map-support": "^0.5.6",
+        "throat": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runner/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runner/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-runner/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runner/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runner/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-runner/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runner/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runtime": {
+      "version": "26.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/console": "^26.6.2",
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/globals": "^26.6.2",
+        "@jest/source-map": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^0.6.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.4",
+        "jest-config": "^26.6.3",
+        "jest-haste-map": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-mock": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0",
+        "yargs": "^15.4.1"
+      },
+      "bin": {
+        "jest-runtime": "bin/jest-runtime.js"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-runtime/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-serializer": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "graceful-fs": "^4.2.4"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-snapshot": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.0.0",
+        "@jest/types": "^26.6.2",
+        "@types/babel__traverse": "^7.0.4",
+        "@types/prettier": "^2.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^26.6.2",
+        "graceful-fs": "^4.2.4",
+        "jest-diff": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "jest-haste-map": "^26.6.2",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^26.6.2",
+        "semver": "^7.3.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/jest-resolve": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.2",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.18.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/read-pkg": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/read-pkg-up": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/type-fest": {
+      "version": "0.8.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest-util": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "is-ci": "^2.0.0",
+        "micromatch": "^4.0.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-util/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-util/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-validate": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "camelcase": "^6.0.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "leven": "^3.1.0",
+        "pretty-format": "^26.6.2"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-validate/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-validate/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-validate/node_modules/pretty-format": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/types": "^26.6.2",
+        "ansi-regex": "^5.0.0",
+        "ansi-styles": "^4.0.0",
+        "react-is": "^17.0.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/jest-watch-typeahead": {
+      "version": "0.6.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-escapes": "^4.3.1",
+        "chalk": "^4.0.0",
+        "jest-regex-util": "^26.0.0",
+        "jest-watcher": "^26.3.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "jest": "^26.0.0"
+      }
+    },
+    "node_modules/jest-watcher": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "jest-util": "^26.6.2",
+        "string-length": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/@jest/types": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10.14.2"
+      }
+    },
+    "node_modules/jest-watcher/node_modules/@types/yargs": {
+      "version": "15.0.13",
+      "license": "MIT",
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "26.6.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsdom": {
+      "version": "16.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "abab": "^2.0.5",
+        "acorn": "^8.2.4",
+        "acorn-globals": "^6.0.0",
+        "cssom": "^0.4.4",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^2.0.0",
+        "decimal.js": "^10.2.1",
+        "domexception": "^2.0.1",
+        "escodegen": "^2.0.0",
+        "form-data": "^3.0.0",
+        "html-encoding-sniffer": "^2.0.1",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "^5.0.0",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.0",
+        "parse5": "6.0.1",
+        "saxes": "^5.0.1",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.0.0",
+        "w3c-hr-time": "^1.0.2",
+        "w3c-xmlserializer": "^2.0.0",
+        "webidl-conversions": "^6.1.0",
+        "whatwg-encoding": "^1.0.5",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.5.0",
+        "ws": "^7.4.5",
+        "xml-name-validator": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jsdom/node_modules/acorn": {
+      "version": "8.4.1",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "license": "MIT",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-parse-better-errors": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "license": "MIT"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "license": "MIT"
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/json3": {
+      "version": "3.3.3",
+      "license": "MIT"
+    },
+    "node_modules/json5": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jss": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "csstype": "^3.0.2",
+        "is-in-browser": "^1.1.3",
+        "tiny-warning": "^1.0.2"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/jss"
+      }
+    },
+    "node_modules/jss-plugin-camel-case": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "hyphenate-style-name": "^1.0.3",
+        "jss": "10.7.1"
+      }
+    },
+    "node_modules/jss-plugin-default-unit": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "node_modules/jss-plugin-global": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "node_modules/jss-plugin-nested": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1",
+        "tiny-warning": "^1.0.2"
+      }
+    },
+    "node_modules/jss-plugin-props-sort": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "node_modules/jss-plugin-rule-value-function": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1",
+        "tiny-warning": "^1.0.2"
+      }
+    },
+    "node_modules/jss-plugin-vendor-prefixer": {
+      "version": "10.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.3.1",
+        "css-vendor": "^2.0.8",
+        "jss": "10.7.1"
+      }
+    },
+    "node_modules/jss/node_modules/csstype": {
+      "version": "3.0.8",
+      "license": "MIT"
+    },
+    "node_modules/jsx-ast-utils": {
+      "version": "3.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "array-includes": "^3.1.2",
+        "object.assign": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/killable": {
+      "version": "1.0.1",
+      "license": "ISC"
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/klona": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/language-subtag-registry": {
+      "version": "0.3.21",
+      "license": "ODC-By-1.0"
+    },
+    "node_modules/language-tags": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "language-subtag-registry": "~0.3.2"
+      }
+    },
+    "node_modules/last-call-webpack-plugin": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.5",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.1.6",
+      "license": "MIT"
+    },
+    "node_modules/load-json-file": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/parse-json": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/pify": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/strip-bom": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/loader-runner": {
+      "version": "2.4.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "license": "MIT"
+    },
+    "node_modules/lodash._reinterpolate": {
+      "version": "3.0.0",
+      "license": "MIT"
+    },
+    "node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "license": "MIT"
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "license": "MIT"
+    },
+    "node_modules/lodash.memoize": {
+      "version": "4.1.2",
+      "license": "MIT"
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "license": "MIT"
+    },
+    "node_modules/lodash.template": {
+      "version": "4.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.templatesettings": "^4.0.0"
+      }
+    },
+    "node_modules/lodash.templatesettings": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "lodash._reinterpolate": "^3.0.0"
+      }
+    },
+    "node_modules/lodash.truncate": {
+      "version": "4.4.2",
+      "license": "MIT"
+    },
+    "node_modules/lodash.uniq": {
+      "version": "4.5.0",
+      "license": "MIT"
+    },
+    "node_modules/loglevel": {
+      "version": "1.7.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/loglevel"
+      }
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/lower-case": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.25.7",
+      "license": "MIT",
+      "dependencies": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/makeerror": {
+      "version": "1.0.11",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "tmpl": "1.0.x"
+      }
+    },
+    "node_modules/map-cache": {
+      "version": "0.2.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-visit": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/md5.js": {
+      "version": "1.3.5",
+      "license": "MIT",
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/mdn-data": {
+      "version": "2.0.4",
+      "license": "CC0-1.0"
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-fs": {
+      "version": "0.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/microevent.ts": {
+      "version": "0.1.1",
+      "license": "MIT"
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "braces": "^3.0.1",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/miller-rabin": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "bin": {
+        "miller-rabin": "bin/miller-rabin"
+      }
+    },
+    "node_modules/miller-rabin/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.48.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.31",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.48.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/mini-create-react-context": {
+      "version": "0.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.12.1",
+        "tiny-warning": "^1.0.3"
+      },
+      "peerDependencies": {
+        "prop-types": "^15.0.0",
+        "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+      }
+    },
+    "node_modules/mini-css-extract-plugin": {
+      "version": "0.11.3",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.4.0 || ^5.0.0"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/minimalistic-assert": {
+      "version": "1.0.1",
+      "license": "ISC"
+    },
+    "node_modules/minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "license": "MIT"
+    },
+    "node_modules/minipass": {
+      "version": "3.1.3",
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minipass-collect": {
+      "version": "1.0.2",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minipass-flush": {
+      "version": "1.0.5",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minipass-pipeline": {
+      "version": "1.2.4",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minizlib": {
+      "version": "2.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/mississippi": {
+      "version": "3.0.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mixin-deep": {
+      "version": "1.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/move-concurrently": {
+      "version": "1.0.1",
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "node_modules/move-concurrently/node_modules/rimraf": {
+      "version": "2.7.1",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "license": "MIT"
+    },
+    "node_modules/multicast-dns": {
+      "version": "6.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      },
+      "bin": {
+        "multicast-dns": "cli.js"
+      }
+    },
+    "node_modules/multicast-dns-service-types": {
+      "version": "1.1.0",
+      "license": "MIT"
+    },
+    "node_modules/nanoid": {
+      "version": "3.1.23",
+      "license": "MIT",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/nanomatch": {
+      "version": "1.2.13",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/native-url": {
+      "version": "0.2.6",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "querystring": "^0.2.0"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "license": "MIT"
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "license": "MIT"
+    },
+    "node_modules/next-tick": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/nice-try": {
+      "version": "1.0.5",
+      "license": "MIT"
+    },
+    "node_modules/no-case": {
+      "version": "3.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "lower-case": "^2.0.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/node-forge": {
+      "version": "0.10.0",
+      "license": "(BSD-3-Clause OR GPL-2.0)",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/node-int64": {
+      "version": "0.4.0",
+      "license": "MIT"
+    },
+    "node_modules/node-libs-browser": {
+      "version": "2.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      }
+    },
+    "node_modules/node-libs-browser/node_modules/punycode": {
+      "version": "1.4.1",
+      "license": "MIT"
+    },
+    "node_modules/node-modules-regexp": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-notifier": {
+      "version": "8.0.2",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "growly": "^1.3.0",
+        "is-wsl": "^2.2.0",
+        "semver": "^7.3.2",
+        "shellwords": "^0.1.1",
+        "uuid": "^8.3.0",
+        "which": "^2.0.2"
+      }
+    },
+    "node_modules/node-releases": {
+      "version": "1.1.73",
+      "license": "MIT"
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-package-data/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-url": {
+      "version": "1.9.1",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/notistack": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/notistack/-/notistack-1.0.10.tgz",
+      "integrity": "sha512-z0y4jJaVtOoH3kc3GtNUlhNTY+5LE04QDeLVujX3VPhhzg67zw055mZjrBF+nzpv3V9aiPNph1EgRU4+t8kQTQ==",
+      "dependencies": {
+        "clsx": "^1.1.0",
+        "hoist-non-react-statics": "^3.3.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/notistack"
+      },
+      "peerDependencies": {
+        "@material-ui/core": "^4.0.0",
+        "react": "^16.8.0 || ^17.0.0",
+        "react-dom": "^16.8.0 || ^17.0.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.0.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/num2fraction": {
+      "version": "1.2.2",
+      "license": "MIT"
+    },
+    "node_modules/nwsapi": {
+      "version": "2.2.0",
+      "license": "MIT"
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy": {
+      "version": "0.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/define-property": {
+      "version": "0.2.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.10.3",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-is": {
+      "version": "1.1.5",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-visit": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.entries": {
+      "version": "1.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.fromentries": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "has": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.getownpropertydescriptors": {
+      "version": "2.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.pick": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.values": {
+      "version": "1.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/obuf": {
+      "version": "1.1.2",
+      "license": "MIT"
+    },
+    "node_modules/on-finished": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/open": {
+      "version": "7.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-docker": "^2.0.0",
+        "is-wsl": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/opn": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/opn/node_modules/is-wsl": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/optimize-css-assets-webpack-plugin": {
+      "version": "5.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano": "^4.1.10",
+        "last-call-webpack-plugin": "^3.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.1",
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/original": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "node_modules/os-browserify": {
+      "version": "0.3.0",
+      "license": "MIT"
+    },
+    "node_modules/p-each-series": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-map": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "aggregate-error": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-retry": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "retry": "^0.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "license": "(MIT AND Zlib)"
+    },
+    "node_modules/parallel-transform": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "node_modules/param-case": {
+      "version": "3.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-asn1": {
+      "version": "5.1.6",
+      "license": "ISC",
+      "dependencies": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "6.0.1",
+      "license": "MIT"
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/pascal-case": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/pascalcase": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-browserify": {
+      "version": "0.0.1",
+      "license": "MIT"
+    },
+    "node_modules/path-dirname": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "license": "MIT"
+    },
+    "node_modules/path-to-regexp": {
+      "version": "1.8.0",
+      "license": "MIT",
+      "dependencies": {
+        "isarray": "0.0.1"
+      }
+    },
+    "node_modules/path-type": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pbkdf2": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "license": "MIT"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pirates": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "node-modules-regexp": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/find-up": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/locate-path": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/p-limit": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/p-locate": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/p-try": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "license": "MIT",
+      "dependencies": {
+        "ts-pnp": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/popper.js": {
+      "version": "1.16.1-lts",
+      "license": "MIT"
+    },
+    "node_modules/portfinder": {
+      "version": "1.0.28",
+      "license": "MIT",
+      "dependencies": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/portfinder/node_modules/debug": {
+      "version": "3.2.7",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/posix-character-classes": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "7.0.36",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-attribute-case-insensitive": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^6.0.2"
+      }
+    },
+    "node_modules/postcss-browser-comments": {
+      "version": "3.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "browserslist": "^4"
+      }
+    },
+    "node_modules/postcss-calc": {
+      "version": "7.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "node_modules/postcss-color-functional-notation": {
+      "version": "2.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-color-gray": {
+      "version": "5.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-color-hex-alpha": {
+      "version": "5.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.14",
+        "postcss-values-parser": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-color-mod-function": {
+      "version": "3.0.3",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-color-rebeccapurple": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-colormin": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-convert-values": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-custom-media": {
+      "version": "7.0.8",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.14"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-custom-properties": {
+      "version": "8.0.11",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.17",
+        "postcss-values-parser": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-custom-selectors": {
+      "version": "5.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-custom-selectors/node_modules/cssesc": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^2.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-dir-pseudo-class": {
+      "version": "5.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^2.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-discard-comments": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-empty": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-overridden": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-double-position-gradients": {
+      "version": "1.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-env-function": {
+      "version": "2.0.2",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-flexbugs-fixes": {
+      "version": "4.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.26"
+      }
+    },
+    "node_modules/postcss-focus-visible": {
+      "version": "4.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-focus-within": {
+      "version": "3.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-font-variant": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-gap-properties": {
+      "version": "2.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-image-set-function": {
+      "version": "3.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-initial": {
+      "version": "3.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-lab-function": {
+      "version": "2.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-load-config": {
+      "version": "2.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-load-config/node_modules/cosmiconfig": {
+      "version": "5.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-load-config/node_modules/import-fresh": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-load-config/node_modules/parse-json": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-load-config/node_modules/resolve-from": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-loader": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-loader/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/postcss-loader/node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/postcss-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/postcss-logical": {
+      "version": "3.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-media-minmax": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-merge-longhand": {
+      "version": "4.0.11",
+      "license": "MIT",
+      "dependencies": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-merge-rules": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/postcss-minify-font-values": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-gradients": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-params": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-selectors": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "postcss": "^7.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-scope": {
+      "version": "2.2.0",
+      "license": "ISC",
+      "dependencies": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-values": {
+      "version": "3.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "node_modules/postcss-nesting": {
+      "version": "7.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-normalize": {
+      "version": "8.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "@csstools/normalize.css": "^10.1.0",
+        "browserslist": "^4.6.2",
+        "postcss": "^7.0.17",
+        "postcss-browser-comments": "^3.0.0",
+        "sanitize.css": "^10.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/postcss-normalize-charset": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-positions": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-string": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-url": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-url/node_modules/normalize-url": {
+      "version": "3.3.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-ordered-values": {
+      "version": "4.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-overflow-shorthand": {
+      "version": "2.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-page-break": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-place": {
+      "version": "4.0.1",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-preset-env": {
+      "version": "6.7.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "autoprefixer": "^9.6.1",
+        "browserslist": "^4.6.4",
+        "caniuse-lite": "^1.0.30000981",
+        "css-blank-pseudo": "^0.1.4",
+        "css-has-pseudo": "^0.10.0",
+        "css-prefers-color-scheme": "^3.1.1",
+        "cssdb": "^4.4.0",
+        "postcss": "^7.0.17",
+        "postcss-attribute-case-insensitive": "^4.0.1",
+        "postcss-color-functional-notation": "^2.0.1",
+        "postcss-color-gray": "^5.0.0",
+        "postcss-color-hex-alpha": "^5.0.3",
+        "postcss-color-mod-function": "^3.0.3",
+        "postcss-color-rebeccapurple": "^4.0.1",
+        "postcss-custom-media": "^7.0.8",
+        "postcss-custom-properties": "^8.0.11",
+        "postcss-custom-selectors": "^5.1.2",
+        "postcss-dir-pseudo-class": "^5.0.0",
+        "postcss-double-position-gradients": "^1.0.0",
+        "postcss-env-function": "^2.0.2",
+        "postcss-focus-visible": "^4.0.0",
+        "postcss-focus-within": "^3.0.0",
+        "postcss-font-variant": "^4.0.0",
+        "postcss-gap-properties": "^2.0.0",
+        "postcss-image-set-function": "^3.0.1",
+        "postcss-initial": "^3.0.0",
+        "postcss-lab-function": "^2.0.1",
+        "postcss-logical": "^3.0.0",
+        "postcss-media-minmax": "^4.0.0",
+        "postcss-nesting": "^7.0.0",
+        "postcss-overflow-shorthand": "^2.0.0",
+        "postcss-page-break": "^2.0.0",
+        "postcss-place": "^4.0.1",
+        "postcss-pseudo-class-any-link": "^6.0.0",
+        "postcss-replace-overflow-wrap": "^3.0.0",
+        "postcss-selector-matches": "^4.0.0",
+        "postcss-selector-not": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-pseudo-class-any-link": {
+      "version": "6.0.0",
+      "license": "CC0-1.0",
+      "dependencies": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^2.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-reduce-initial": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-replace-overflow-wrap": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-safe-parser": {
+      "version": "5.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^8.1.0"
+      },
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-safe-parser/node_modules/postcss": {
+      "version": "8.3.5",
+      "license": "MIT",
+      "dependencies": {
+        "colorette": "^1.2.2",
+        "nanoid": "^3.1.23",
+        "source-map-js": "^0.6.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-selector-matches": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-selector-not": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
+      }
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.0.6",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-svgo": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "license": "MIT"
+    },
+    "node_modules/postcss-unique-selectors": {
+      "version": "4.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.1.0",
+      "license": "MIT"
+    },
+    "node_modules/postcss-values-parser": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "flatten": "^1.0.2",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=6.14.4"
+      }
+    },
+    "node_modules/postcss/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss/node_modules/chalk/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/postcss/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/postcss/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/postcss/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss/node_modules/supports-color": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prepend-http": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pretty-bytes": {
+      "version": "5.6.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/pretty-error": {
+      "version": "2.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "license": "MIT"
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/promise": {
+      "version": "8.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "asap": "~2.0.6"
+      }
+    },
+    "node_modules/promise-inflight": {
+      "version": "1.0.1",
+      "license": "ISC"
+    },
+    "node_modules/prompts": {
+      "version": "2.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/prop-types": {
+      "version": "15.7.2",
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.4.0",
+        "object-assign": "^4.1.1",
+        "react-is": "^16.8.1"
+      }
+    },
+    "node_modules/prop-types/node_modules/react-is": {
+      "version": "16.13.1",
+      "license": "MIT"
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "license": "MIT",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/psl": {
+      "version": "1.8.0",
+      "license": "MIT"
+    },
+    "node_modules/public-encrypt": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/public-encrypt/node_modules/bn.js": {
+      "version": "4.12.0",
+      "license": "MIT"
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/pumpify": {
+      "version": "1.5.1",
+      "license": "MIT",
+      "dependencies": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      }
+    },
+    "node_modules/pumpify/node_modules/pump": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/q": {
+      "version": "1.5.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.7.0",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/query-string": {
+      "version": "4.3.4",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/querystring": {
+      "version": "0.2.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystring-es3": {
+      "version": "0.2.1",
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "license": "MIT"
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/raf": {
+      "version": "3.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "performance-now": "^2.1.0"
+      }
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/randomfill": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-body/node_modules/bytes": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/react": {
+      "version": "17.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-app-polyfill": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "core-js": "^3.6.5",
+        "object-assign": "^4.1.1",
+        "promise": "^8.1.0",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "whatwg-fetch": "^3.4.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/react-dev-utils": {
+      "version": "11.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "7.10.4",
+        "address": "1.1.2",
+        "browserslist": "4.14.2",
+        "chalk": "2.4.2",
+        "cross-spawn": "7.0.3",
+        "detect-port-alt": "1.1.6",
+        "escape-string-regexp": "2.0.0",
+        "filesize": "6.1.0",
+        "find-up": "4.1.0",
+        "fork-ts-checker-webpack-plugin": "4.1.6",
+        "global-modules": "2.0.0",
+        "globby": "11.0.1",
+        "gzip-size": "5.1.1",
+        "immer": "8.0.1",
+        "is-root": "2.1.0",
+        "loader-utils": "2.0.0",
+        "open": "^7.0.2",
+        "pkg-up": "3.1.0",
+        "prompts": "2.4.0",
+        "react-error-overlay": "^6.0.9",
+        "recursive-readdir": "2.2.2",
+        "shell-quote": "1.7.2",
+        "strip-ansi": "6.0.0",
+        "text-table": "0.2.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/@babel/code-frame": {
+      "version": "7.10.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.10.4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/browserslist": {
+      "version": "4.14.2",
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001125",
+        "electron-to-chromium": "^1.3.564",
+        "escalade": "^3.0.2",
+        "node-releases": "^1.1.61"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/browserslist"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/chalk/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/react-dev-utils/node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/globby": {
+      "version": "11.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.1.1",
+        "ignore": "^5.1.4",
+        "merge2": "^1.3.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/ignore": {
+      "version": "5.1.8",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/locate-path": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/p-locate": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/pkg-up": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/find-up": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/react-dev-utils/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/react-dom": {
+      "version": "17.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1",
+        "scheduler": "^0.20.2"
+      },
+      "peerDependencies": {
+        "react": "17.0.2"
+      }
+    },
+    "node_modules/react-error-overlay": {
+      "version": "6.0.9",
+      "license": "MIT"
+    },
+    "node_modules/react-is": {
+      "version": "17.0.2",
+      "license": "MIT"
+    },
+    "node_modules/react-refresh": {
+      "version": "0.8.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-router": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "hoist-non-react-statics": "^3.1.0",
+        "loose-envify": "^1.3.1",
+        "mini-create-react-context": "^0.4.0",
+        "path-to-regexp": "^1.7.0",
+        "prop-types": "^15.6.2",
+        "react-is": "^16.6.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=15"
+      }
+    },
+    "node_modules/react-router-dom": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "loose-envify": "^1.3.1",
+        "prop-types": "^15.6.2",
+        "react-router": "5.2.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=15"
+      }
+    },
+    "node_modules/react-router/node_modules/react-is": {
+      "version": "16.13.1",
+      "license": "MIT"
+    },
+    "node_modules/react-scripts": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "7.12.3",
+        "@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
+        "@svgr/webpack": "5.5.0",
+        "@typescript-eslint/eslint-plugin": "^4.5.0",
+        "@typescript-eslint/parser": "^4.5.0",
+        "babel-eslint": "^10.1.0",
+        "babel-jest": "^26.6.0",
+        "babel-loader": "8.1.0",
+        "babel-plugin-named-asset-import": "^0.3.7",
+        "babel-preset-react-app": "^10.0.0",
+        "bfj": "^7.0.2",
+        "camelcase": "^6.1.0",
+        "case-sensitive-paths-webpack-plugin": "2.3.0",
+        "css-loader": "4.3.0",
+        "dotenv": "8.2.0",
+        "dotenv-expand": "5.1.0",
+        "eslint": "^7.11.0",
+        "eslint-config-react-app": "^6.0.0",
+        "eslint-plugin-flowtype": "^5.2.0",
+        "eslint-plugin-import": "^2.22.1",
+        "eslint-plugin-jest": "^24.1.0",
+        "eslint-plugin-jsx-a11y": "^6.3.1",
+        "eslint-plugin-react": "^7.21.5",
+        "eslint-plugin-react-hooks": "^4.2.0",
+        "eslint-plugin-testing-library": "^3.9.2",
+        "eslint-webpack-plugin": "^2.5.2",
+        "file-loader": "6.1.1",
+        "fs-extra": "^9.0.1",
+        "html-webpack-plugin": "4.5.0",
+        "identity-obj-proxy": "3.0.0",
+        "jest": "26.6.0",
+        "jest-circus": "26.6.0",
+        "jest-resolve": "26.6.0",
+        "jest-watch-typeahead": "0.6.1",
+        "mini-css-extract-plugin": "0.11.3",
+        "optimize-css-assets-webpack-plugin": "5.0.4",
+        "pnp-webpack-plugin": "1.6.4",
+        "postcss-flexbugs-fixes": "4.2.1",
+        "postcss-loader": "3.0.0",
+        "postcss-normalize": "8.0.1",
+        "postcss-preset-env": "6.7.0",
+        "postcss-safe-parser": "5.0.2",
+        "prompts": "2.4.0",
+        "react-app-polyfill": "^2.0.0",
+        "react-dev-utils": "^11.0.3",
+        "react-refresh": "^0.8.3",
+        "resolve": "1.18.1",
+        "resolve-url-loader": "^3.1.2",
+        "sass-loader": "^10.0.5",
+        "semver": "7.3.2",
+        "style-loader": "1.3.0",
+        "terser-webpack-plugin": "4.2.3",
+        "ts-pnp": "1.2.0",
+        "url-loader": "4.1.1",
+        "webpack": "4.44.2",
+        "webpack-dev-server": "3.11.1",
+        "webpack-manifest-plugin": "2.2.0",
+        "workbox-webpack-plugin": "5.1.4"
+      },
+      "bin": {
+        "react-scripts": "bin/react-scripts.js"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.1.3"
+      },
+      "peerDependencies": {
+        "react": ">= 16",
+        "typescript": "^3.2.1 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/react-scripts/node_modules/@babel/core": {
+      "version": "7.12.3",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.10.4",
+        "@babel/generator": "^7.12.1",
+        "@babel/helper-module-transforms": "^7.12.1",
+        "@babel/helpers": "^7.12.1",
+        "@babel/parser": "^7.12.3",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.12.1",
+        "@babel/types": "^7.12.1",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.1",
+        "json5": "^2.1.2",
+        "lodash": "^4.17.19",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/react-scripts/node_modules/@babel/core/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/react-scripts/node_modules/source-map": {
+      "version": "0.5.7",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-transition-group": {
+      "version": "4.4.2",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@babel/runtime": "^7.5.5",
+        "dom-helpers": "^5.0.1",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0",
+        "react-dom": ">=16.6.0"
+      }
+    },
+    "node_modules/read-pkg": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "load-json-file": "^4.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg/node_modules/path-type": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/read-pkg/node_modules/pify": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.7",
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/readable-stream/node_modules/isarray": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/readable-stream/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/recursive-readdir": {
+      "version": "2.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "minimatch": "3.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "license": "MIT"
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "8.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "regenerate": "^1.4.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.7",
+      "license": "MIT"
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.14.5",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regex-not": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regex-parser": {
+      "version": "2.2.11",
+      "license": "MIT"
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexpp": {
+      "version": "3.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "4.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.2.0",
+        "regjsgen": "^0.5.1",
+        "regjsparser": "^0.6.4",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsgen": {
+      "version": "0.5.2",
+      "license": "MIT"
+    },
+    "node_modules/regjsparser": {
+      "version": "0.6.9",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/relateurl": {
+      "version": "0.2.7",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/remove-trailing-separator": {
+      "version": "1.1.0",
+      "license": "ISC"
+    },
+    "node_modules/renderkid": {
+      "version": "2.0.7",
+      "license": "MIT",
+      "dependencies": {
+        "css-select": "^4.1.3",
+        "dom-converter": "^0.2.0",
+        "htmlparser2": "^6.1.0",
+        "lodash": "^4.17.21",
+        "strip-ansi": "^3.0.1"
+      }
+    },
+    "node_modules/renderkid/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/renderkid/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-element": {
+      "version": "1.1.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-string": {
+      "version": "1.6.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-from-string": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "license": "ISC"
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/resolve": {
+      "version": "1.18.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.0.0",
+        "path-parse": "^1.0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "5.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-pathname": {
+      "version": "3.0.0",
+      "license": "MIT"
+    },
+    "node_modules/resolve-url": {
+      "version": "0.2.1",
+      "license": "MIT"
+    },
+    "node_modules/resolve-url-loader": {
+      "version": "3.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "adjust-sourcemap-loader": "3.0.0",
+        "camelcase": "5.3.1",
+        "compose-function": "3.0.3",
+        "convert-source-map": "1.7.0",
+        "es6-iterator": "2.0.3",
+        "loader-utils": "1.2.3",
+        "postcss": "7.0.36",
+        "rework": "1.0.1",
+        "rework-visit": "1.0.0",
+        "source-map": "0.6.1"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/resolve-url-loader/node_modules/camelcase": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/resolve-url-loader/node_modules/convert-source-map": {
+      "version": "1.7.0",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "node_modules/resolve-url-loader/node_modules/emojis-list": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/resolve-url-loader/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/resolve-url-loader/node_modules/loader-utils": {
+      "version": "1.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/ret": {
+      "version": "0.1.15",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/retry": {
+      "version": "0.12.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rework": {
+      "version": "1.0.1",
+      "dependencies": {
+        "convert-source-map": "^0.3.3",
+        "css": "^2.0.0"
+      }
+    },
+    "node_modules/rework-visit": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/rework/node_modules/convert-source-map": {
+      "version": "0.3.5",
+      "license": "MIT"
+    },
+    "node_modules/rework/node_modules/css": {
+      "version": "2.2.4",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "source-map": "^0.6.1",
+        "source-map-resolve": "^0.5.2",
+        "urix": "^0.1.0"
+      }
+    },
+    "node_modules/rework/node_modules/source-map-resolve": {
+      "version": "0.5.3",
+      "license": "MIT",
+      "dependencies": {
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "node_modules/rgb-regex": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/rgba-regex": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/ripemd160": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "1.32.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/node": "*",
+        "acorn": "^7.1.0"
+      },
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      }
+    },
+    "node_modules/rollup-plugin-babel": {
+      "version": "4.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "rollup-pluginutils": "^2.8.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "7 || ^7.0.0-rc.2",
+        "rollup": ">=0.60.0 <3"
+      }
+    },
+    "node_modules/rollup-plugin-terser": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.5.5",
+        "jest-worker": "^24.9.0",
+        "rollup-pluginutils": "^2.8.2",
+        "serialize-javascript": "^4.0.0",
+        "terser": "^4.6.2"
+      },
+      "peerDependencies": {
+        "rollup": ">=0.66.0 <3"
+      }
+    },
+    "node_modules/rollup-plugin-terser/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
+      "version": "24.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "merge-stream": "^2.0.0",
+        "supports-color": "^6.1.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
+      "version": "4.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/rollup-plugin-terser/node_modules/supports-color": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/rollup-pluginutils": {
+      "version": "2.8.2",
+      "license": "MIT",
+      "dependencies": {
+        "estree-walker": "^0.6.1"
+      }
+    },
+    "node_modules/rollup-pluginutils/node_modules/estree-walker": {
+      "version": "0.6.1",
+      "license": "MIT"
+    },
+    "node_modules/rsvp": {
+      "version": "4.8.5",
+      "license": "MIT",
+      "engines": {
+        "node": "6.* || >= 7.*"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/run-queue": {
+      "version": "1.0.3",
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "license": "MIT"
+    },
+    "node_modules/safe-regex": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "ret": "~0.1.10"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "license": "MIT"
+    },
+    "node_modules/sane": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "@cnakazawa/watch": "^1.0.3",
+        "anymatch": "^2.0.0",
+        "capture-exit": "^2.0.0",
+        "exec-sh": "^0.3.2",
+        "execa": "^1.0.0",
+        "fb-watchman": "^2.0.0",
+        "micromatch": "^3.1.4",
+        "minimist": "^1.1.1",
+        "walker": "~1.0.5"
+      },
+      "bin": {
+        "sane": "src/cli.js"
+      },
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/sane/node_modules/anymatch": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/sane/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "engines": {
+        "node": ">=4.8"
+      }
+    },
+    "node_modules/sane/node_modules/execa": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sane/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/get-stream": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/sane/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/is-stream": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/normalize-path": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/sane/node_modules/path-key": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/sane/node_modules/semver": {
+      "version": "5.7.1",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/sane/node_modules/shebang-command": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sane/node_modules/which": {
+      "version": "1.3.1",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/sanitize.css": {
+      "version": "10.0.0",
+      "license": "CC0-1.0"
+    },
+    "node_modules/sass-loader": {
+      "version": "10.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.0.0",
+        "semver": "^7.3.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "fibers": ">= 3.1.0",
+        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0",
+        "sass": "^1.3.0",
+        "webpack": "^4.36.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "fibers": {
+          "optional": true
+        },
+        "node-sass": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/sass-loader/node_modules/schema-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.6",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "license": "ISC"
+    },
+    "node_modules/saxes": {
+      "version": "5.0.1",
+      "license": "ISC",
+      "dependencies": {
+        "xmlchars": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/scheduler": {
+      "version": "0.20.2",
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "node_modules/schema-utils": {
+      "version": "2.7.1",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/select-hose": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/selfsigned": {
+      "version": "1.10.11",
+      "license": "MIT",
+      "dependencies": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "node_modules/semver": {
+      "version": "7.3.2",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.17.1",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.1",
+      "license": "MIT"
+    },
+    "node_modules/serialize-javascript": {
+      "version": "5.0.1",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/serve-index": {
+      "version": "1.9.1",
+      "license": "MIT",
+      "dependencies": {
+        "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"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/http-errors": {
+      "version": "1.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-index/node_modules/inherits": {
+      "version": "2.0.3",
+      "license": "ISC"
+    },
+    "node_modules/serve-index/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/serve-index/node_modules/setprototypeof": {
+      "version": "1.1.0",
+      "license": "ISC"
+    },
+    "node_modules/serve-static": {
+      "version": "1.14.1",
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "license": "ISC"
+    },
+    "node_modules/set-value": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "license": "MIT"
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.1.1",
+      "license": "ISC"
+    },
+    "node_modules/sha.js": {
+      "version": "2.4.11",
+      "license": "(MIT AND BSD-3-Clause)",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shell-quote": {
+      "version": "1.7.2",
+      "license": "MIT"
+    },
+    "node_modules/shellwords": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.3",
+      "license": "ISC"
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "license": "MIT"
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "license": "MIT"
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+      }
+    },
+    "node_modules/snapdragon": {
+      "version": "0.8.2",
+      "license": "MIT",
+      "dependencies": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/define-property": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/debug": {
+      "version": "2.6.9",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/define-property": {
+      "version": "0.2.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/kind-of": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/snapdragon/node_modules/source-map": {
+      "version": "0.5.7",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/source-map-resolve": {
+      "version": "0.5.3",
+      "license": "MIT",
+      "dependencies": {
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "node_modules/sockjs": {
+      "version": "0.3.21",
+      "license": "MIT",
+      "dependencies": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^3.4.0",
+        "websocket-driver": "^0.7.4"
+      }
+    },
+    "node_modules/sockjs-client": {
+      "version": "1.5.1",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.1"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/debug": {
+      "version": "3.2.7",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/sockjs/node_modules/uuid": {
+      "version": "3.4.0",
+      "license": "MIT",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/sort-keys": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-list-map": {
+      "version": "2.0.1",
+      "license": "MIT"
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "0.6.2",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.19",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/source-map-url": {
+      "version": "0.4.1",
+      "license": "MIT"
+    },
+    "node_modules/sourcemap-codec": {
+      "version": "1.4.8",
+      "license": "MIT"
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.1.1",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.3.0",
+      "license": "CC-BY-3.0"
+    },
+    "node_modules/spdx-expression-parse": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.9",
+      "license": "CC0-1.0"
+    },
+    "node_modules/spdy": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/spdy-transport": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      }
+    },
+    "node_modules/spdy-transport/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/split-string": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ssri": {
+      "version": "8.0.1",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/stable": {
+      "version": "0.1.8",
+      "license": "MIT"
+    },
+    "node_modules/stack-utils": {
+      "version": "2.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/stack-utils/node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/stackframe": {
+      "version": "1.2.0",
+      "license": "MIT"
+    },
+    "node_modules/static-extend": {
+      "version": "0.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/define-property": {
+      "version": "0.2.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/kind-of": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.5.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stream-browserify": {
+      "version": "2.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/stream-each": {
+      "version": "1.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/stream-http": {
+      "version": "2.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/stream-shift": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/strict-uri-encode": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string_decoder/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/string-length": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/string-natural-compare": {
+      "version": "3.0.1",
+      "license": "MIT"
+    },
+    "node_modules/string-width": {
+      "version": "4.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "license": "MIT"
+    },
+    "node_modules/string.prototype.matchall": {
+      "version": "4.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2",
+        "get-intrinsic": "^1.1.1",
+        "has-symbols": "^1.0.2",
+        "internal-slot": "^1.0.3",
+        "regexp.prototype.flags": "^1.3.1",
+        "side-channel": "^1.0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/stringify-object": {
+      "version": "3.3.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "get-own-enumerable-property-symbols": "^3.0.0",
+        "is-obj": "^1.0.1",
+        "is-regexp": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-comments": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "babel-extract-comments": "^1.0.0",
+        "babel-plugin-transform-object-rest-spread": "^6.26.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/style-loader": {
+      "version": "1.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/stylehacks": {
+      "version": "4.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/stylehacks/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-hyperlinks": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/svg-parser": {
+      "version": "2.0.4",
+      "license": "MIT"
+    },
+    "node_modules/svgo": {
+      "version": "1.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.37",
+        "csso": "^4.0.2",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      },
+      "bin": {
+        "svgo": "bin/svgo"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/svgo/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/svgo/node_modules/chalk": {
+      "version": "2.4.2",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/svgo/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/svgo/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/svgo/node_modules/css-select": {
+      "version": "2.1.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^3.2.1",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "node_modules/svgo/node_modules/css-what": {
+      "version": "3.4.2",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/svgo/node_modules/dom-serializer": {
+      "version": "0.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/svgo/node_modules/domutils": {
+      "version": "1.7.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
+      "version": "1.3.1",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/svgo/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/svgo/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/svgo/node_modules/nth-check": {
+      "version": "1.0.2",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "node_modules/svgo/node_modules/supports-color": {
+      "version": "5.5.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/symbol-tree": {
+      "version": "3.2.4",
+      "license": "MIT"
+    },
+    "node_modules/table": {
+      "version": "6.7.1",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "ajv": "^8.0.1",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/table/node_modules/ajv": {
+      "version": "8.6.0",
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/table/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/tapable": {
+      "version": "1.1.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tar": {
+      "version": "6.1.0",
+      "license": "ISC",
+      "dependencies": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/tar/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/temp-dir": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/tempy": {
+      "version": "0.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "temp-dir": "^1.0.0",
+        "type-fest": "^0.3.1",
+        "unique-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tempy/node_modules/type-fest": {
+      "version": "0.3.1",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terminal-link": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-escapes": "^4.2.1",
+        "supports-hyperlinks": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/terser": {
+      "version": "4.8.0",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin": {
+      "version": "4.2.3",
+      "license": "MIT",
+      "dependencies": {
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "jest-worker": "^26.5.0",
+        "p-limit": "^3.0.2",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^5.0.1",
+        "source-map": "^0.6.1",
+        "terser": "^5.3.4",
+        "webpack-sources": "^1.4.3"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/commander": {
+      "version": "2.20.3",
+      "license": "MIT"
+    },
+    "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": {
+      "version": "3.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/p-limit": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.6",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/terser": {
+      "version": "5.7.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "commander": "^2.20.0",
+        "source-map": "~0.7.2",
+        "source-map-support": "~0.5.19"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": {
+      "version": "0.7.3",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/terser/node_modules/commander": {
+      "version": "2.20.3",
+      "license": "MIT"
+    },
+    "node_modules/test-exclude": {
+      "version": "6.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "license": "MIT"
+    },
+    "node_modules/throat": {
+      "version": "5.0.0",
+      "license": "MIT"
+    },
+    "node_modules/through2": {
+      "version": "2.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "node_modules/thunky": {
+      "version": "1.1.0",
+      "license": "MIT"
+    },
+    "node_modules/timers-browserify": {
+      "version": "2.0.12",
+      "license": "MIT",
+      "dependencies": {
+        "setimmediate": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/timsort": {
+      "version": "0.3.0",
+      "license": "MIT"
+    },
+    "node_modules/tiny-invariant": {
+      "version": "1.1.0",
+      "license": "MIT"
+    },
+    "node_modules/tiny-warning": {
+      "version": "1.0.3",
+      "license": "MIT"
+    },
+    "node_modules/tmpl": {
+      "version": "1.0.4",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/to-arraybuffer": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-object-path": {
+      "version": "0.3.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-object-path/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex": {
+      "version": "3.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "4.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.1.2"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tough-cookie/node_modules/universalify": {
+      "version": "0.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tryer": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/ts-pnp": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/tsconfig-paths": {
+      "version": "3.9.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json5": "^0.0.29",
+        "json5": "^1.0.1",
+        "minimist": "^1.2.0",
+        "strip-bom": "^3.0.0"
+      }
+    },
+    "node_modules/tsconfig-paths/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/tsconfig-paths/node_modules/strip-bom": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.3.0",
+      "license": "0BSD"
+    },
+    "node_modules/tsutils": {
+      "version": "3.21.0",
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^1.8.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "peerDependencies": {
+        "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+      }
+    },
+    "node_modules/tsutils/node_modules/tslib": {
+      "version": "1.14.1",
+      "license": "0BSD"
+    },
+    "node_modules/tty-browserify": {
+      "version": "0.0.0",
+      "license": "MIT"
+    },
+    "node_modules/type": {
+      "version": "1.2.0",
+      "license": "ISC"
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.21.3",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "license": "MIT",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "license": "MIT"
+    },
+    "node_modules/typedarray-to-buffer": {
+      "version": "3.1.5",
+      "license": "MIT",
+      "dependencies": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "4.3.4",
+      "license": "Apache-2.0",
+      "peer": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=4.2.0"
+      }
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/union-value": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/union-value/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/uniq": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/uniqs": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/unique-filename": {
+      "version": "1.1.1",
+      "license": "ISC",
+      "dependencies": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "node_modules/unique-slug": {
+      "version": "2.0.2",
+      "license": "ISC",
+      "dependencies": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "node_modules/unique-string": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "crypto-random-string": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unquote": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/unset-value": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value": {
+      "version": "0.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "get-value": "^2.0.3",
+        "has-values": "^0.1.4",
+        "isobject": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+      "version": "2.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "isarray": "1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-values": {
+      "version": "0.1.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/isarray": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/upath": {
+      "version": "1.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/urix": {
+      "version": "0.1.0",
+      "license": "MIT"
+    },
+    "node_modules/url": {
+      "version": "0.11.0",
+      "license": "MIT",
+      "dependencies": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      }
+    },
+    "node_modules/url-loader": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^2.0.0",
+        "mime-types": "^2.1.27",
+        "schema-utils": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "file-loader": "*",
+        "webpack": "^4.0.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "file-loader": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/url-loader/node_modules/schema-utils": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.6",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.5.1",
+      "license": "MIT",
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url/node_modules/punycode": {
+      "version": "1.3.2",
+      "license": "MIT"
+    },
+    "node_modules/url/node_modules/querystring": {
+      "version": "0.2.0",
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/use": {
+      "version": "3.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/util": {
+      "version": "0.11.1",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "license": "MIT"
+    },
+    "node_modules/util.promisify": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "node_modules/util/node_modules/inherits": {
+      "version": "2.0.3",
+      "license": "ISC"
+    },
+    "node_modules/utila": {
+      "version": "0.4.0",
+      "license": "MIT"
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "8.3.2",
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/v8-compile-cache": {
+      "version": "2.3.0",
+      "license": "MIT"
+    },
+    "node_modules/v8-to-istanbul": {
+      "version": "7.1.2",
+      "license": "ISC",
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^1.6.0",
+        "source-map": "^0.7.3"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
+    },
+    "node_modules/v8-to-istanbul/node_modules/source-map": {
+      "version": "0.7.3",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/value-equal": {
+      "version": "1.0.1",
+      "license": "MIT"
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vendors": {
+      "version": "1.0.4",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/vm-browserify": {
+      "version": "1.1.2",
+      "license": "MIT"
+    },
+    "node_modules/w3c-hr-time": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "browser-process-hrtime": "^1.0.0"
+      }
+    },
+    "node_modules/w3c-xmlserializer": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "xml-name-validator": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/walker": {
+      "version": "1.0.7",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "makeerror": "1.0.x"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "1.7.5",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      },
+      "optionalDependencies": {
+        "chokidar": "^3.4.1",
+        "watchpack-chokidar2": "^2.0.1"
+      }
+    },
+    "node_modules/watchpack-chokidar2": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/anymatch": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/chokidar": {
+      "version": "2.1.8",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/readdirp": {
+      "version": "2.2.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/watchpack-chokidar2/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wbuf": {
+      "version": "1.7.3",
+      "license": "MIT",
+      "dependencies": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "6.1.0",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=10.4"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "4.44.2",
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.3.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=6.11.5"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        },
+        "webpack-command": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-dev-middleware": {
+      "version": "3.7.3",
+      "license": "MIT",
+      "dependencies": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/webpack-dev-middleware/node_modules/mime": {
+      "version": "2.5.2",
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server": {
+      "version": "3.11.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-html": "0.0.7",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
+        "http-proxy-middleware": "0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.8",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
+      },
+      "bin": {
+        "webpack-dev-server": "bin/webpack-dev-server.js"
+      },
+      "engines": {
+        "node": ">= 6.11.5"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/anymatch": {
+      "version": "2.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/camelcase": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/chokidar": {
+      "version": "2.1.8",
+      "license": "MIT",
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui": {
+      "version": "5.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/color-convert": {
+      "version": "1.9.3",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/color-name": {
+      "version": "1.1.3",
+      "license": "MIT"
+    },
+    "node_modules/webpack-dev-server/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "license": "MIT"
+    },
+    "node_modules/webpack-dev-server/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/find-up": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/glob-parent": {
+      "version": "3.1.0",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/has-flag": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/import-local": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
+      "version": "3.0.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/locate-path": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/p-locate": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/path-exists": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/readdirp": {
+      "version": "2.2.1",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/resolve-cwd": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/resolve-from": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/semver": {
+      "version": "6.3.0",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/supports-color": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi": {
+      "version": "5.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ws": {
+      "version": "6.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/yargs": {
+      "version": "13.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.2"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/yargs-parser": {
+      "version": "13.1.2",
+      "license": "ISC",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "node_modules/webpack-log": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/webpack-log/node_modules/ansi-colors": {
+      "version": "3.2.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-log/node_modules/uuid": {
+      "version": "3.4.0",
+      "license": "MIT",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/webpack-manifest-plugin": {
+      "version": "2.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "fs-extra": "^7.0.0",
+        "lodash": ">=3.5 <5",
+        "object.entries": "^1.1.0",
+        "tapable": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.11.5"
+      },
+      "peerDependencies": {
+        "webpack": "2 || 3 || 4"
+      }
+    },
+    "node_modules/webpack-manifest-plugin/node_modules/fs-extra": {
+      "version": "7.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=6 <7 || >=8"
+      }
+    },
+    "node_modules/webpack-manifest-plugin/node_modules/jsonfile": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/webpack-manifest-plugin/node_modules/universalify": {
+      "version": "0.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "1.4.3",
+      "license": "MIT",
+      "dependencies": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/webpack/node_modules/acorn": {
+      "version": "6.4.2",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/webpack/node_modules/braces": {
+      "version": "2.3.2",
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/cacache": {
+      "version": "12.0.4",
+      "license": "ISC",
+      "dependencies": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "infer-owner": "^1.0.3",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
+      }
+    },
+    "node_modules/webpack/node_modules/chownr": {
+      "version": "1.1.4",
+      "license": "ISC"
+    },
+    "node_modules/webpack/node_modules/eslint-scope": {
+      "version": "4.0.3",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/webpack/node_modules/fill-range": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/is-number": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/is-wsl": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/webpack/node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/webpack/node_modules/lru-cache": {
+      "version": "5.1.1",
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/webpack/node_modules/micromatch": {
+      "version": "3.1.10",
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/rimraf": {
+      "version": "2.7.1",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/webpack/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/webpack/node_modules/serialize-javascript": {
+      "version": "4.0.0",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/webpack/node_modules/ssri": {
+      "version": "6.0.2",
+      "license": "ISC",
+      "dependencies": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "node_modules/webpack/node_modules/terser-webpack-plugin": {
+      "version": "1.4.5",
+      "license": "MIT",
+      "dependencies": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^4.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/webpack/node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/yallist": {
+      "version": "3.1.1",
+      "license": "ISC"
+    },
+    "node_modules/websocket-driver": {
+      "version": "0.7.4",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/websocket-extensions": {
+      "version": "0.1.4",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "iconv-lite": "0.4.24"
+      }
+    },
+    "node_modules/whatwg-fetch": {
+      "version": "3.6.2",
+      "license": "MIT"
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "2.3.0",
+      "license": "MIT"
+    },
+    "node_modules/whatwg-url": {
+      "version": "8.7.0",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.7.0",
+        "tr46": "^2.1.0",
+        "webidl-conversions": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-module": {
+      "version": "2.0.0",
+      "license": "ISC"
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/workbox-background-sync": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-broadcast-update": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-build": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.8.4",
+        "@babel/preset-env": "^7.8.4",
+        "@babel/runtime": "^7.8.4",
+        "@hapi/joi": "^15.1.0",
+        "@rollup/plugin-node-resolve": "^7.1.1",
+        "@rollup/plugin-replace": "^2.3.1",
+        "@surma/rollup-plugin-off-main-thread": "^1.1.1",
+        "common-tags": "^1.8.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "fs-extra": "^8.1.0",
+        "glob": "^7.1.6",
+        "lodash.template": "^4.5.0",
+        "pretty-bytes": "^5.3.0",
+        "rollup": "^1.31.1",
+        "rollup-plugin-babel": "^4.3.3",
+        "rollup-plugin-terser": "^5.3.1",
+        "source-map": "^0.7.3",
+        "source-map-url": "^0.4.0",
+        "stringify-object": "^3.3.0",
+        "strip-comments": "^1.0.2",
+        "tempy": "^0.3.0",
+        "upath": "^1.2.0",
+        "workbox-background-sync": "^5.1.4",
+        "workbox-broadcast-update": "^5.1.4",
+        "workbox-cacheable-response": "^5.1.4",
+        "workbox-core": "^5.1.4",
+        "workbox-expiration": "^5.1.4",
+        "workbox-google-analytics": "^5.1.4",
+        "workbox-navigation-preload": "^5.1.4",
+        "workbox-precaching": "^5.1.4",
+        "workbox-range-requests": "^5.1.4",
+        "workbox-routing": "^5.1.4",
+        "workbox-strategies": "^5.1.4",
+        "workbox-streams": "^5.1.4",
+        "workbox-sw": "^5.1.4",
+        "workbox-window": "^5.1.4"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/workbox-build/node_modules/fs-extra": {
+      "version": "8.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=6 <7 || >=8"
+      }
+    },
+    "node_modules/workbox-build/node_modules/jsonfile": {
+      "version": "4.0.0",
+      "license": "MIT",
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/workbox-build/node_modules/source-map": {
+      "version": "0.7.3",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/workbox-build/node_modules/universalify": {
+      "version": "0.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/workbox-cacheable-response": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-core": {
+      "version": "5.1.4",
+      "license": "MIT"
+    },
+    "node_modules/workbox-expiration": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-google-analytics": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-background-sync": "^5.1.4",
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4",
+        "workbox-strategies": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-navigation-preload": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-precaching": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-range-requests": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-routing": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-strategies": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-streams": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4"
+      }
+    },
+    "node_modules/workbox-sw": {
+      "version": "5.1.4",
+      "license": "MIT"
+    },
+    "node_modules/workbox-webpack-plugin": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.5.5",
+        "fast-json-stable-stringify": "^2.0.0",
+        "source-map-url": "^0.4.0",
+        "upath": "^1.1.2",
+        "webpack-sources": "^1.3.0",
+        "workbox-build": "^5.1.4"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/workbox-window": {
+      "version": "5.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "node_modules/worker-farm": {
+      "version": "1.7.0",
+      "license": "MIT",
+      "dependencies": {
+        "errno": "~0.1.7"
+      }
+    },
+    "node_modules/worker-rpc": {
+      "version": "0.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "microevent.ts": "~0.1.1"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "license": "ISC"
+    },
+    "node_modules/write-file-atomic": {
+      "version": "3.0.3",
+      "license": "ISC",
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "is-typedarray": "^1.0.0",
+        "signal-exit": "^3.0.2",
+        "typedarray-to-buffer": "^3.1.5"
+      }
+    },
+    "node_modules/ws": {
+      "version": "7.5.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.3.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": "^5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xml-name-validator": {
+      "version": "3.0.0",
+      "license": "Apache-2.0"
+    },
+    "node_modules/xmlchars": {
+      "version": "2.2.0",
+      "license": "MIT"
+    },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "license": "ISC"
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "license": "ISC"
+    },
+    "node_modules/yaml": {
+      "version": "1.10.2",
+      "license": "ISC",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "license": "ISC",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs-parser/node_modules/camelcase": {
+      "version": "5.3.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    }
+  },
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/highlight": "^7.14.5"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.14.7"
+    },
+    "@babel/core": {
+      "version": "7.14.6",
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helpers": "^7.14.6",
+        "@babel/parser": "^7.14.6",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0"
+        },
+        "source-map": {
+          "version": "0.5.7"
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7"
+        }
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/compat-data": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "browserslist": "^4.16.6",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.14.6",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "regexpu-core": "^4.7.1"
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.2.3",
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.14.5"
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-wrap-function": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.14.5"
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.14.5"
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.14.6",
+      "requires": {
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5"
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "@babel/parser": {
+      "version": "7.14.7"
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-class-static-block": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-decorators": {
+      "version": "7.12.1",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-decorators": "^7.12.1"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/compat-data": "^7.14.7",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-create-class-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-decorators": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-flow": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-typescript": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-optimise-call-expression": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-flow-strip-types": {
+      "version": "7.12.1",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-flow": "^7.12.1"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-simple-access": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-constant-elements": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-display-name": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-jsx": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-jsx": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-development": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/plugin-transform-react-jsx": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-self": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-source": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-pure-annotations": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.14.5",
+      "requires": {
+        "regenerator-transform": "^0.14.2"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.12.1",
+      "requires": {
+        "@babel/helper-module-imports": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1"
+        }
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.14.6",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-typescript": {
+      "version": "7.14.6",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.14.6",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-typescript": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/compat-data": "^7.14.7",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-async-generator-functions": "^7.14.7",
+        "@babel/plugin-proposal-class-properties": "^7.14.5",
+        "@babel/plugin-proposal-class-static-block": "^7.14.5",
+        "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+        "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+        "@babel/plugin-proposal-json-strings": "^7.14.5",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+        "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+        "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-private-methods": "^7.14.5",
+        "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.14.5",
+        "@babel/plugin-transform-async-to-generator": "^7.14.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+        "@babel/plugin-transform-block-scoping": "^7.14.5",
+        "@babel/plugin-transform-classes": "^7.14.5",
+        "@babel/plugin-transform-computed-properties": "^7.14.5",
+        "@babel/plugin-transform-destructuring": "^7.14.7",
+        "@babel/plugin-transform-dotall-regex": "^7.14.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+        "@babel/plugin-transform-for-of": "^7.14.5",
+        "@babel/plugin-transform-function-name": "^7.14.5",
+        "@babel/plugin-transform-literals": "^7.14.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+        "@babel/plugin-transform-modules-amd": "^7.14.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.14.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.14.5",
+        "@babel/plugin-transform-modules-umd": "^7.14.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7",
+        "@babel/plugin-transform-new-target": "^7.14.5",
+        "@babel/plugin-transform-object-super": "^7.14.5",
+        "@babel/plugin-transform-parameters": "^7.14.5",
+        "@babel/plugin-transform-property-literals": "^7.14.5",
+        "@babel/plugin-transform-regenerator": "^7.14.5",
+        "@babel/plugin-transform-reserved-words": "^7.14.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+        "@babel/plugin-transform-spread": "^7.14.6",
+        "@babel/plugin-transform-sticky-regex": "^7.14.5",
+        "@babel/plugin-transform-template-literals": "^7.14.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+        "@babel/plugin-transform-unicode-regex": "^7.14.5",
+        "@babel/preset-modules": "^0.1.4",
+        "@babel/types": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "core-js-compat": "^3.15.0",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+          "version": "7.14.5",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.14.5",
+            "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+            "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+          }
+        },
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.4",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
+    "@babel/preset-react": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-transform-react-display-name": "^7.14.5",
+        "@babel/plugin-transform-react-jsx": "^7.14.5",
+        "@babel/plugin-transform-react-jsx-development": "^7.14.5",
+        "@babel/plugin-transform-react-pure-annotations": "^7.14.5"
+      }
+    },
+    "@babel/preset-typescript": {
+      "version": "7.12.1",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-transform-typescript": "^7.12.1"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.14.6",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/runtime-corejs3": {
+      "version": "7.14.7",
+      "requires": {
+        "core-js-pure": "^3.15.0",
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/template": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/parser": "^7.14.5",
+        "@babel/types": "^7.14.5"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.14.7",
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.5",
+        "@babel/helper-function-name": "^7.14.5",
+        "@babel/helper-hoist-variables": "^7.14.5",
+        "@babel/helper-split-export-declaration": "^7.14.5",
+        "@babel/parser": "^7.14.7",
+        "@babel/types": "^7.14.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/types": {
+      "version": "7.14.5",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@bcoe/v8-coverage": {
+      "version": "0.2.3"
+    },
+    "@cnakazawa/watch": {
+      "version": "1.0.4",
+      "requires": {
+        "exec-sh": "^0.3.2",
+        "minimist": "^1.2.0"
+      }
+    },
+    "@csstools/convert-colors": {
+      "version": "1.4.0"
+    },
+    "@csstools/normalize.css": {
+      "version": "10.1.0"
+    },
+    "@emotion/hash": {
+      "version": "0.8.0"
+    },
+    "@eslint/eslintrc": {
+      "version": "0.4.2",
+      "requires": {
+        "ajv": "^6.12.4",
+        "debug": "^4.1.1",
+        "espree": "^7.3.0",
+        "globals": "^13.9.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^3.13.1",
+        "minimatch": "^3.0.4",
+        "strip-json-comments": "^3.1.1"
+      },
+      "dependencies": {
+        "globals": {
+          "version": "13.9.0",
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2"
+        }
+      }
+    },
+    "@hapi/address": {
+      "version": "2.1.4"
+    },
+    "@hapi/bourne": {
+      "version": "1.3.2"
+    },
+    "@hapi/hoek": {
+      "version": "8.5.1"
+    },
+    "@hapi/joi": {
+      "version": "15.1.1",
+      "requires": {
+        "@hapi/address": "2.x.x",
+        "@hapi/bourne": "1.x.x",
+        "@hapi/hoek": "8.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "@hapi/topo": {
+      "version": "3.1.6",
+      "requires": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "requires": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1"
+        }
+      }
+    },
+    "@istanbuljs/schema": {
+      "version": "0.1.3"
+    },
+    "@jest/console": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "slash": "^3.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@jest/core": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/console": "^26.6.2",
+        "@jest/reporters": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "jest-changed-files": "^26.6.2",
+        "jest-config": "^26.6.3",
+        "jest-haste-map": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-resolve-dependencies": "^26.6.3",
+        "jest-runner": "^26.6.3",
+        "jest-runtime": "^26.6.3",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "jest-watcher": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "p-each-series": "^2.1.0",
+        "rimraf": "^3.0.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "@jest/environment": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@jest/fake-timers": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "@sinonjs/fake-timers": "^6.0.1",
+        "@types/node": "*",
+        "jest-message-util": "^26.6.2",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@jest/globals": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/environment": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "expect": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@jest/reporters": {
+      "version": "26.6.2",
+      "requires": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.2.4",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^4.0.3",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.0.2",
+        "jest-haste-map": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "node-notifier": "^8.0.0",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.0",
+        "string-length": "^4.0.1",
+        "terminal-link": "^2.0.0",
+        "v8-to-istanbul": "^7.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "@jest/source-map": {
+      "version": "26.6.2",
+      "requires": {
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.4",
+        "source-map": "^0.6.0"
+      }
+    },
+    "@jest/test-result": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/console": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@jest/test-sequencer": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/test-result": "^26.6.2",
+        "graceful-fs": "^4.2.4",
+        "jest-haste-map": "^26.6.2",
+        "jest-runner": "^26.6.3",
+        "jest-runtime": "^26.6.3"
+      }
+    },
+    "@jest/transform": {
+      "version": "26.6.2",
+      "requires": {
+        "@babel/core": "^7.1.0",
+        "@jest/types": "^26.6.2",
+        "babel-plugin-istanbul": "^6.0.0",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^1.4.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-haste-map": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-util": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "pirates": "^4.0.1",
+        "slash": "^3.0.0",
+        "source-map": "^0.6.1",
+        "write-file-atomic": "^3.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "@material-ui/core": {
+      "version": "4.11.4",
+      "requires": {
+        "@babel/runtime": "^7.4.4",
+        "@material-ui/styles": "^4.11.4",
+        "@material-ui/system": "^4.11.3",
+        "@material-ui/types": "5.1.0",
+        "@material-ui/utils": "^4.11.2",
+        "@types/react-transition-group": "^4.2.0",
+        "clsx": "^1.0.4",
+        "hoist-non-react-statics": "^3.3.2",
+        "popper.js": "1.16.1-lts",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.0 || ^17.0.0",
+        "react-transition-group": "^4.4.0"
+      }
+    },
+    "@material-ui/icons": {
+      "version": "4.11.2",
+      "requires": {
+        "@babel/runtime": "^7.4.4"
+      }
+    },
+    "@material-ui/styles": {
+      "version": "4.11.4",
+      "requires": {
+        "@babel/runtime": "^7.4.4",
+        "@emotion/hash": "^0.8.0",
+        "@material-ui/types": "5.1.0",
+        "@material-ui/utils": "^4.11.2",
+        "clsx": "^1.0.4",
+        "csstype": "^2.5.2",
+        "hoist-non-react-statics": "^3.3.2",
+        "jss": "^10.5.1",
+        "jss-plugin-camel-case": "^10.5.1",
+        "jss-plugin-default-unit": "^10.5.1",
+        "jss-plugin-global": "^10.5.1",
+        "jss-plugin-nested": "^10.5.1",
+        "jss-plugin-props-sort": "^10.5.1",
+        "jss-plugin-rule-value-function": "^10.5.1",
+        "jss-plugin-vendor-prefixer": "^10.5.1",
+        "prop-types": "^15.7.2"
+      }
+    },
+    "@material-ui/system": {
+      "version": "4.11.3",
+      "requires": {
+        "@babel/runtime": "^7.4.4",
+        "@material-ui/utils": "^4.11.2",
+        "csstype": "^2.5.2",
+        "prop-types": "^15.7.2"
+      }
+    },
+    "@material-ui/types": {
+      "version": "5.1.0",
+      "requires": {}
+    },
+    "@material-ui/utils": {
+      "version": "4.11.2",
+      "requires": {
+        "@babel/runtime": "^7.4.4",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.0 || ^17.0.0"
+      }
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "2.0.5"
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.7",
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@npmcli/move-file": {
+      "version": "1.1.2",
+      "requires": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4"
+        }
+      }
+    },
+    "@pmmmwh/react-refresh-webpack-plugin": {
+      "version": "0.4.3",
+      "requires": {
+        "ansi-html": "^0.0.7",
+        "error-stack-parser": "^2.0.6",
+        "html-entities": "^1.2.1",
+        "native-url": "^0.2.6",
+        "schema-utils": "^2.6.5",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.7.3"
+        }
+      }
+    },
+    "@rollup/plugin-node-resolve": {
+      "version": "7.1.3",
+      "requires": {
+        "@rollup/pluginutils": "^3.0.8",
+        "@types/resolve": "0.0.8",
+        "builtin-modules": "^3.1.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.14.2"
+      }
+    },
+    "@rollup/plugin-replace": {
+      "version": "2.4.2",
+      "requires": {
+        "@rollup/pluginutils": "^3.1.0",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "@rollup/pluginutils": {
+      "version": "3.1.0",
+      "requires": {
+        "@types/estree": "0.0.39",
+        "estree-walker": "^1.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "dependencies": {
+        "@types/estree": {
+          "version": "0.0.39"
+        }
+      }
+    },
+    "@sinonjs/commons": {
+      "version": "1.8.3",
+      "requires": {
+        "type-detect": "4.0.8"
+      }
+    },
+    "@sinonjs/fake-timers": {
+      "version": "6.0.1",
+      "requires": {
+        "@sinonjs/commons": "^1.7.0"
+      }
+    },
+    "@surma/rollup-plugin-off-main-thread": {
+      "version": "1.4.2",
+      "requires": {
+        "ejs": "^2.6.1",
+        "magic-string": "^0.25.0"
+      }
+    },
+    "@svgr/babel-plugin-add-jsx-attribute": {
+      "version": "5.4.0"
+    },
+    "@svgr/babel-plugin-remove-jsx-attribute": {
+      "version": "5.4.0"
+    },
+    "@svgr/babel-plugin-remove-jsx-empty-expression": {
+      "version": "5.0.1"
+    },
+    "@svgr/babel-plugin-replace-jsx-attribute-value": {
+      "version": "5.0.1"
+    },
+    "@svgr/babel-plugin-svg-dynamic-title": {
+      "version": "5.4.0"
+    },
+    "@svgr/babel-plugin-svg-em-dimensions": {
+      "version": "5.4.0"
+    },
+    "@svgr/babel-plugin-transform-react-native-svg": {
+      "version": "5.4.0"
+    },
+    "@svgr/babel-plugin-transform-svg-component": {
+      "version": "5.5.0"
+    },
+    "@svgr/babel-preset": {
+      "version": "5.5.0",
+      "requires": {
+        "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0",
+        "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0",
+        "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1",
+        "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1",
+        "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0",
+        "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0",
+        "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0",
+        "@svgr/babel-plugin-transform-svg-component": "^5.5.0"
+      }
+    },
+    "@svgr/core": {
+      "version": "5.5.0",
+      "requires": {
+        "@svgr/plugin-jsx": "^5.5.0",
+        "camelcase": "^6.2.0",
+        "cosmiconfig": "^7.0.0"
+      }
+    },
+    "@svgr/hast-util-to-babel-ast": {
+      "version": "5.5.0",
+      "requires": {
+        "@babel/types": "^7.12.6"
+      }
+    },
+    "@svgr/plugin-jsx": {
+      "version": "5.5.0",
+      "requires": {
+        "@babel/core": "^7.12.3",
+        "@svgr/babel-preset": "^5.5.0",
+        "@svgr/hast-util-to-babel-ast": "^5.5.0",
+        "svg-parser": "^2.0.2"
+      }
+    },
+    "@svgr/plugin-svgo": {
+      "version": "5.5.0",
+      "requires": {
+        "cosmiconfig": "^7.0.0",
+        "deepmerge": "^4.2.2",
+        "svgo": "^1.2.2"
+      }
+    },
+    "@svgr/webpack": {
+      "version": "5.5.0",
+      "requires": {
+        "@babel/core": "^7.12.3",
+        "@babel/plugin-transform-react-constant-elements": "^7.12.1",
+        "@babel/preset-env": "^7.12.1",
+        "@babel/preset-react": "^7.12.5",
+        "@svgr/core": "^5.5.0",
+        "@svgr/plugin-jsx": "^5.5.0",
+        "@svgr/plugin-svgo": "^5.5.0",
+        "loader-utils": "^2.0.0"
+      }
+    },
+    "@tootallnate/once": {
+      "version": "1.1.2"
+    },
+    "@types/babel__core": {
+      "version": "7.1.14",
+      "requires": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "@types/babel__generator": {
+      "version": "7.6.2",
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@types/babel__template": {
+      "version": "7.4.0",
+      "requires": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@types/babel__traverse": {
+      "version": "7.14.0",
+      "requires": {
+        "@babel/types": "^7.3.0"
+      }
+    },
+    "@types/eslint": {
+      "version": "7.2.13",
+      "requires": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "@types/estree": {
+      "version": "0.0.48"
+    },
+    "@types/glob": {
+      "version": "7.1.3",
+      "requires": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/graceful-fs": {
+      "version": "4.1.5",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/html-minifier-terser": {
+      "version": "5.1.1"
+    },
+    "@types/istanbul-lib-coverage": {
+      "version": "2.0.3"
+    },
+    "@types/istanbul-lib-report": {
+      "version": "3.0.0",
+      "requires": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "@types/istanbul-reports": {
+      "version": "3.0.1",
+      "requires": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
+    "@types/json-schema": {
+      "version": "7.0.7"
+    },
+    "@types/json5": {
+      "version": "0.0.29"
+    },
+    "@types/minimatch": {
+      "version": "3.0.4"
+    },
+    "@types/node": {
+      "version": "15.12.5"
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.0"
+    },
+    "@types/parse-json": {
+      "version": "4.0.0"
+    },
+    "@types/prettier": {
+      "version": "2.3.0"
+    },
+    "@types/prop-types": {
+      "version": "15.7.3"
+    },
+    "@types/q": {
+      "version": "1.5.4"
+    },
+    "@types/react": {
+      "version": "17.0.11",
+      "requires": {
+        "@types/prop-types": "*",
+        "@types/scheduler": "*",
+        "csstype": "^3.0.2"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.0.8"
+        }
+      }
+    },
+    "@types/react-transition-group": {
+      "version": "4.4.1",
+      "requires": {
+        "@types/react": "*"
+      }
+    },
+    "@types/resolve": {
+      "version": "0.0.8",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/scheduler": {
+      "version": "0.16.1"
+    },
+    "@types/source-list-map": {
+      "version": "0.1.2"
+    },
+    "@types/stack-utils": {
+      "version": "2.0.0"
+    },
+    "@types/tapable": {
+      "version": "1.0.7"
+    },
+    "@types/uglify-js": {
+      "version": "3.13.0",
+      "requires": {
+        "source-map": "^0.6.1"
+      }
+    },
+    "@types/webpack": {
+      "version": "4.41.29",
+      "requires": {
+        "@types/node": "*",
+        "@types/tapable": "^1",
+        "@types/uglify-js": "*",
+        "@types/webpack-sources": "*",
+        "anymatch": "^3.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "@types/webpack-sources": {
+      "version": "2.1.0",
+      "requires": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.7.3"
+        }
+      }
+    },
+    "@types/yargs-parser": {
+      "version": "20.2.0"
+    },
+    "@typescript-eslint/eslint-plugin": {
+      "version": "4.28.1",
+      "requires": {
+        "@typescript-eslint/experimental-utils": "4.28.1",
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "debug": "^4.3.1",
+        "functional-red-black-tree": "^1.0.1",
+        "regexpp": "^3.1.0",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.3.5",
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
+    "@typescript-eslint/experimental-utils": {
+      "version": "4.28.1",
+      "requires": {
+        "@types/json-schema": "^7.0.7",
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/typescript-estree": "4.28.1",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^3.0.0"
+      }
+    },
+    "@typescript-eslint/parser": {
+      "version": "4.28.1",
+      "requires": {
+        "@typescript-eslint/scope-manager": "4.28.1",
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/typescript-estree": "4.28.1",
+        "debug": "^4.3.1"
+      }
+    },
+    "@typescript-eslint/scope-manager": {
+      "version": "4.28.1",
+      "requires": {
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/visitor-keys": "4.28.1"
+      }
+    },
+    "@typescript-eslint/types": {
+      "version": "4.28.1"
+    },
+    "@typescript-eslint/typescript-estree": {
+      "version": "4.28.1",
+      "requires": {
+        "@typescript-eslint/types": "4.28.1",
+        "@typescript-eslint/visitor-keys": "4.28.1",
+        "debug": "^4.3.1",
+        "globby": "^11.0.3",
+        "is-glob": "^4.0.1",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.3.5",
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
+    "@typescript-eslint/visitor-keys": {
+      "version": "4.28.1",
+      "requires": {
+        "@typescript-eslint/types": "4.28.1",
+        "eslint-visitor-keys": "^2.0.0"
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.9.0"
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0"
+    },
+    "@xtuc/long": {
+      "version": "4.2.2"
+    },
+    "abab": {
+      "version": "2.0.5"
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "7.4.1"
+    },
+    "acorn-globals": {
+      "version": "6.0.0",
+      "requires": {
+        "acorn": "^7.1.1",
+        "acorn-walk": "^7.1.1"
+      }
+    },
+    "acorn-jsx": {
+      "version": "5.3.1",
+      "requires": {}
+    },
+    "acorn-walk": {
+      "version": "7.2.0"
+    },
+    "address": {
+      "version": "1.1.2"
+    },
+    "adjust-sourcemap-loader": {
+      "version": "3.0.0",
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "regex-parser": "^2.2.11"
+      }
+    },
+    "agent-base": {
+      "version": "6.0.2",
+      "requires": {
+        "debug": "4"
+      }
+    },
+    "aggregate-error": {
+      "version": "3.1.0",
+      "requires": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ajv-errors": {
+      "version": "1.0.1",
+      "requires": {}
+    },
+    "ajv-keywords": {
+      "version": "3.5.2",
+      "requires": {}
+    },
+    "alphanum-sort": {
+      "version": "1.0.2"
+    },
+    "ansi-colors": {
+      "version": "4.1.1"
+    },
+    "ansi-escapes": {
+      "version": "4.3.2",
+      "requires": {
+        "type-fest": "^0.21.3"
+      }
+    },
+    "ansi-html": {
+      "version": "0.0.7"
+    },
+    "ansi-regex": {
+      "version": "5.0.0"
+    },
+    "ansi-styles": {
+      "version": "4.3.0",
+      "requires": {
+        "color-convert": "^2.0.1"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.2",
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0"
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "aria-query": {
+      "version": "4.2.2",
+      "requires": {
+        "@babel/runtime": "^7.10.2",
+        "@babel/runtime-corejs3": "^7.10.2"
+      }
+    },
+    "arity-n": {
+      "version": "1.0.4"
+    },
+    "arr-diff": {
+      "version": "4.0.0"
+    },
+    "arr-flatten": {
+      "version": "1.1.0"
+    },
+    "arr-union": {
+      "version": "3.1.0"
+    },
+    "array-flatten": {
+      "version": "2.1.2"
+    },
+    "array-includes": {
+      "version": "3.1.3",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "get-intrinsic": "^1.1.1",
+        "is-string": "^1.0.5"
+      }
+    },
+    "array-union": {
+      "version": "2.1.0"
+    },
+    "array-uniq": {
+      "version": "1.0.3"
+    },
+    "array-unique": {
+      "version": "0.3.2"
+    },
+    "array.prototype.flat": {
+      "version": "1.2.4",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1"
+      }
+    },
+    "array.prototype.flatmap": {
+      "version": "1.2.4",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.1",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "arrify": {
+      "version": "2.0.1"
+    },
+    "asap": {
+      "version": "2.0.6"
+    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1"
+        },
+        "util": {
+          "version": "0.10.3",
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assign-symbols": {
+      "version": "1.0.0"
+    },
+    "ast-types-flow": {
+      "version": "0.0.7"
+    },
+    "astral-regex": {
+      "version": "2.0.0"
+    },
+    "async": {
+      "version": "2.6.3",
+      "requires": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "async-each": {
+      "version": "1.0.3"
+    },
+    "async-limiter": {
+      "version": "1.0.1"
+    },
+    "asynckit": {
+      "version": "0.4.0"
+    },
+    "at-least-node": {
+      "version": "1.0.0"
+    },
+    "atob": {
+      "version": "2.1.2"
+    },
+    "autoprefixer": {
+      "version": "9.8.6",
+      "requires": {
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "colorette": "^1.2.1",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "axe-core": {
+      "version": "4.2.3"
+    },
+    "axios": {
+      "version": "0.21.1",
+      "requires": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "axobject-query": {
+      "version": "2.2.0"
+    },
+    "babel-eslint": {
+      "version": "10.1.0",
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      },
+      "dependencies": {
+        "eslint-visitor-keys": {
+          "version": "1.3.0"
+        }
+      }
+    },
+    "babel-extract-comments": {
+      "version": "1.0.0",
+      "requires": {
+        "babylon": "^6.18.0"
+      }
+    },
+    "babel-jest": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/babel__core": "^7.1.7",
+        "babel-plugin-istanbul": "^6.0.0",
+        "babel-preset-jest": "^26.6.2",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "slash": "^3.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "babel-loader": {
+      "version": "8.1.0",
+      "requires": {
+        "find-cache-dir": "^2.1.0",
+        "loader-utils": "^1.4.0",
+        "mkdirp": "^0.5.3",
+        "pify": "^4.0.1",
+        "schema-utils": "^2.6.5"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-istanbul": {
+      "version": "6.0.0",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^4.0.0",
+        "test-exclude": "^6.0.0"
+      }
+    },
+    "babel-plugin-jest-hoist": {
+      "version": "26.6.2",
+      "requires": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.0.0",
+        "@types/babel__traverse": "^7.0.6"
+      }
+    },
+    "babel-plugin-macros": {
+      "version": "2.8.0",
+      "requires": {
+        "@babel/runtime": "^7.7.2",
+        "cosmiconfig": "^6.0.0",
+        "resolve": "^1.12.0"
+      },
+      "dependencies": {
+        "cosmiconfig": {
+          "version": "6.0.0",
+          "requires": {
+            "@types/parse-json": "^4.0.0",
+            "import-fresh": "^3.1.0",
+            "parse-json": "^5.0.0",
+            "path-type": "^4.0.0",
+            "yaml": "^1.7.2"
+          }
+        }
+      }
+    },
+    "babel-plugin-named-asset-import": {
+      "version": "0.3.7",
+      "requires": {}
+    },
+    "babel-plugin-polyfill-corejs2": {
+      "version": "0.2.2",
+      "requires": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "semver": "^6.1.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "babel-plugin-polyfill-corejs3": {
+      "version": "0.2.3",
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "core-js-compat": "^3.14.0"
+      }
+    },
+    "babel-plugin-polyfill-regenerator": {
+      "version": "0.2.2",
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.2.2"
+      }
+    },
+    "babel-plugin-syntax-object-rest-spread": {
+      "version": "6.13.0"
+    },
+    "babel-plugin-transform-object-rest-spread": {
+      "version": "6.26.0",
+      "requires": {
+        "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+        "babel-runtime": "^6.26.0"
+      }
+    },
+    "babel-plugin-transform-react-remove-prop-types": {
+      "version": "0.4.24"
+    },
+    "babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "requires": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+      }
+    },
+    "babel-preset-jest": {
+      "version": "26.6.2",
+      "requires": {
+        "babel-plugin-jest-hoist": "^26.6.2",
+        "babel-preset-current-node-syntax": "^1.0.0"
+      }
+    },
+    "babel-preset-react-app": {
+      "version": "10.0.0",
+      "requires": {
+        "@babel/core": "7.12.3",
+        "@babel/plugin-proposal-class-properties": "7.12.1",
+        "@babel/plugin-proposal-decorators": "7.12.1",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1",
+        "@babel/plugin-proposal-numeric-separator": "7.12.1",
+        "@babel/plugin-proposal-optional-chaining": "7.12.1",
+        "@babel/plugin-transform-flow-strip-types": "7.12.1",
+        "@babel/plugin-transform-react-display-name": "7.12.1",
+        "@babel/plugin-transform-runtime": "7.12.1",
+        "@babel/preset-env": "7.12.1",
+        "@babel/preset-react": "7.12.1",
+        "@babel/preset-typescript": "7.12.1",
+        "@babel/runtime": "7.12.1",
+        "babel-plugin-macros": "2.8.0",
+        "babel-plugin-transform-react-remove-prop-types": "0.4.24"
+      },
+      "dependencies": {
+        "@babel/core": {
+          "version": "7.12.3",
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/generator": "^7.12.1",
+            "@babel/helper-module-transforms": "^7.12.1",
+            "@babel/helpers": "^7.12.1",
+            "@babel/parser": "^7.12.3",
+            "@babel/template": "^7.10.4",
+            "@babel/traverse": "^7.12.1",
+            "@babel/types": "^7.12.1",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.1",
+            "json5": "^2.1.2",
+            "lodash": "^4.17.19",
+            "resolve": "^1.3.2",
+            "semver": "^5.4.1",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/plugin-proposal-class-properties": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-create-class-features-plugin": "^7.12.1",
+            "@babel/helper-plugin-utils": "^7.10.4"
+          }
+        },
+        "@babel/plugin-proposal-nullish-coalescing-operator": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.10.4",
+            "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+          }
+        },
+        "@babel/plugin-proposal-numeric-separator": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.10.4",
+            "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+          }
+        },
+        "@babel/plugin-proposal-optional-chaining": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.10.4",
+            "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+            "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+          }
+        },
+        "@babel/plugin-transform-react-display-name": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.10.4"
+          }
+        },
+        "@babel/preset-env": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/compat-data": "^7.12.1",
+            "@babel/helper-compilation-targets": "^7.12.1",
+            "@babel/helper-module-imports": "^7.12.1",
+            "@babel/helper-plugin-utils": "^7.10.4",
+            "@babel/helper-validator-option": "^7.12.1",
+            "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
+            "@babel/plugin-proposal-class-properties": "^7.12.1",
+            "@babel/plugin-proposal-dynamic-import": "^7.12.1",
+            "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
+            "@babel/plugin-proposal-json-strings": "^7.12.1",
+            "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
+            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+            "@babel/plugin-proposal-numeric-separator": "^7.12.1",
+            "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+            "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
+            "@babel/plugin-proposal-optional-chaining": "^7.12.1",
+            "@babel/plugin-proposal-private-methods": "^7.12.1",
+            "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
+            "@babel/plugin-syntax-async-generators": "^7.8.0",
+            "@babel/plugin-syntax-class-properties": "^7.12.1",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+            "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+            "@babel/plugin-syntax-json-strings": "^7.8.0",
+            "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+            "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+            "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+            "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+            "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+            "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+            "@babel/plugin-syntax-top-level-await": "^7.12.1",
+            "@babel/plugin-transform-arrow-functions": "^7.12.1",
+            "@babel/plugin-transform-async-to-generator": "^7.12.1",
+            "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
+            "@babel/plugin-transform-block-scoping": "^7.12.1",
+            "@babel/plugin-transform-classes": "^7.12.1",
+            "@babel/plugin-transform-computed-properties": "^7.12.1",
+            "@babel/plugin-transform-destructuring": "^7.12.1",
+            "@babel/plugin-transform-dotall-regex": "^7.12.1",
+            "@babel/plugin-transform-duplicate-keys": "^7.12.1",
+            "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
+            "@babel/plugin-transform-for-of": "^7.12.1",
+            "@babel/plugin-transform-function-name": "^7.12.1",
+            "@babel/plugin-transform-literals": "^7.12.1",
+            "@babel/plugin-transform-member-expression-literals": "^7.12.1",
+            "@babel/plugin-transform-modules-amd": "^7.12.1",
+            "@babel/plugin-transform-modules-commonjs": "^7.12.1",
+            "@babel/plugin-transform-modules-systemjs": "^7.12.1",
+            "@babel/plugin-transform-modules-umd": "^7.12.1",
+            "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
+            "@babel/plugin-transform-new-target": "^7.12.1",
+            "@babel/plugin-transform-object-super": "^7.12.1",
+            "@babel/plugin-transform-parameters": "^7.12.1",
+            "@babel/plugin-transform-property-literals": "^7.12.1",
+            "@babel/plugin-transform-regenerator": "^7.12.1",
+            "@babel/plugin-transform-reserved-words": "^7.12.1",
+            "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+            "@babel/plugin-transform-spread": "^7.12.1",
+            "@babel/plugin-transform-sticky-regex": "^7.12.1",
+            "@babel/plugin-transform-template-literals": "^7.12.1",
+            "@babel/plugin-transform-typeof-symbol": "^7.12.1",
+            "@babel/plugin-transform-unicode-escapes": "^7.12.1",
+            "@babel/plugin-transform-unicode-regex": "^7.12.1",
+            "@babel/preset-modules": "^0.1.3",
+            "@babel/types": "^7.12.1",
+            "core-js-compat": "^3.6.2",
+            "semver": "^5.5.0"
+          }
+        },
+        "@babel/preset-react": {
+          "version": "7.12.1",
+          "requires": {
+            "@babel/helper-plugin-utils": "^7.10.4",
+            "@babel/plugin-transform-react-display-name": "^7.12.1",
+            "@babel/plugin-transform-react-jsx": "^7.12.1",
+            "@babel/plugin-transform-react-jsx-development": "^7.12.1",
+            "@babel/plugin-transform-react-jsx-self": "^7.12.1",
+            "@babel/plugin-transform-react-jsx-source": "^7.12.1",
+            "@babel/plugin-transform-react-pure-annotations": "^7.12.1"
+          }
+        },
+        "@babel/runtime": {
+          "version": "7.12.1",
+          "requires": {
+            "regenerator-runtime": "^0.13.4"
+          }
+        },
+        "semver": {
+          "version": "5.7.1"
+        },
+        "source-map": {
+          "version": "0.5.7"
+        }
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.6.12"
+        },
+        "regenerator-runtime": {
+          "version": "0.11.1"
+        }
+      }
+    },
+    "babylon": {
+      "version": "6.18.0"
+    },
+    "balanced-match": {
+      "version": "1.0.2"
+    },
+    "base": {
+      "version": "0.11.2",
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.5.1"
+    },
+    "batch": {
+      "version": "0.6.1"
+    },
+    "bfj": {
+      "version": "7.0.2",
+      "requires": {
+        "bluebird": "^3.5.5",
+        "check-types": "^11.1.1",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2"
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "optional": true
+    },
+    "bluebird": {
+      "version": "3.7.2"
+    },
+    "bn.js": {
+      "version": "5.2.0"
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0"
+        },
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0"
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "brorand": {
+      "version": "1.1.0"
+    },
+    "browser-process-hrtime": {
+      "version": "1.0.0"
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.1.0",
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1"
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.16.6",
+      "requires": {
+        "caniuse-lite": "^1.0.30001219",
+        "colorette": "^1.2.2",
+        "electron-to-chromium": "^1.3.723",
+        "escalade": "^3.1.1",
+        "node-releases": "^1.1.71"
+      }
+    },
+    "bser": {
+      "version": "2.1.1",
+      "requires": {
+        "node-int64": "^0.4.0"
+      }
+    },
+    "buffer": {
+      "version": "4.9.2",
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "1.0.0"
+        }
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.1"
+    },
+    "buffer-indexof": {
+      "version": "1.1.1"
+    },
+    "buffer-xor": {
+      "version": "1.0.3"
+    },
+    "builtin-modules": {
+      "version": "3.2.0"
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0"
+    },
+    "bytes": {
+      "version": "3.0.0"
+    },
+    "cacache": {
+      "version": "15.2.0",
+      "requires": {
+        "@npmcli/move-file": "^1.0.1",
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "glob": "^7.1.4",
+        "infer-owner": "^1.0.4",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.1",
+        "minipass-collect": "^1.0.2",
+        "minipass-flush": "^1.0.5",
+        "minipass-pipeline": "^1.2.2",
+        "mkdirp": "^1.0.3",
+        "p-map": "^4.0.0",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.1",
+        "tar": "^6.0.2",
+        "unique-filename": "^1.1.1"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4"
+        }
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "call-bind": {
+      "version": "1.0.2",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "requires": {
+        "callsites": "^2.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "3.1.0"
+    },
+    "camel-case": {
+      "version": "4.1.2",
+      "requires": {
+        "pascal-case": "^3.1.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "camelcase": {
+      "version": "6.2.0"
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001241"
+    },
+    "capture-exit": {
+      "version": "2.0.0",
+      "requires": {
+        "rsvp": "^4.8.4"
+      }
+    },
+    "case-sensitive-paths-webpack-plugin": {
+      "version": "2.3.0"
+    },
+    "chalk": {
+      "version": "4.1.1",
+      "requires": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      }
+    },
+    "char-regex": {
+      "version": "1.0.2"
+    },
+    "check-types": {
+      "version": "11.1.2"
+    },
+    "chokidar": {
+      "version": "3.5.2",
+      "optional": true,
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      }
+    },
+    "chownr": {
+      "version": "2.0.0"
+    },
+    "chrome-trace-event": {
+      "version": "1.0.3"
+    },
+    "ci-info": {
+      "version": "2.0.0"
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "cjs-module-lexer": {
+      "version": "0.6.0"
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0"
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.3",
+      "requires": {
+        "source-map": "~0.6.0"
+      }
+    },
+    "clean-stack": {
+      "version": "2.2.0"
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "clsx": {
+      "version": "1.1.1"
+    },
+    "co": {
+      "version": "4.6.0"
+    },
+    "coa": {
+      "version": "2.0.2",
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5"
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "collect-v8-coverage": {
+      "version": "1.0.1"
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.1.3",
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.4"
+      },
+      "dependencies": {
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        }
+      }
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4"
+    },
+    "color-string": {
+      "version": "1.5.5",
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "colorette": {
+      "version": "1.2.2"
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "4.1.1"
+    },
+    "common-tags": {
+      "version": "1.8.0"
+    },
+    "commondir": {
+      "version": "1.0.1"
+    },
+    "component-emitter": {
+      "version": "1.3.0"
+    },
+    "compose-function": {
+      "version": "3.0.3",
+      "requires": {
+        "arity-n": "^1.0.4"
+      }
+    },
+    "compressible": {
+      "version": "2.0.18",
+      "requires": {
+        "mime-db": ">= 1.43.0 < 2"
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1"
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "confusing-browser-globals": {
+      "version": "1.0.10"
+    },
+    "connect-history-api-fallback": {
+      "version": "1.6.0"
+    },
+    "console-browserify": {
+      "version": "1.2.0"
+    },
+    "constants-browserify": {
+      "version": "1.0.0"
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4"
+    },
+    "convert-source-map": {
+      "version": "1.8.0",
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0"
+    },
+    "cookie-signature": {
+      "version": "1.0.6"
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "requires": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1"
+    },
+    "core-js": {
+      "version": "3.15.1"
+    },
+    "core-js-compat": {
+      "version": "3.15.1",
+      "requires": {
+        "browserslist": "^4.16.6",
+        "semver": "7.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.0.0"
+        }
+      }
+    },
+    "core-js-pure": {
+      "version": "3.15.1"
+    },
+    "core-util-is": {
+      "version": "1.0.2"
+    },
+    "cosmiconfig": {
+      "version": "7.0.0",
+      "requires": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.2.1",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.10.0"
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "cross-spawn": {
+      "version": "7.0.3",
+      "requires": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "crypto-random-string": {
+      "version": "1.0.0"
+    },
+    "css-blank-pseudo": {
+      "version": "0.1.4",
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "css-color-names": {
+      "version": "0.0.4"
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-has-pseudo": {
+      "version": "0.10.0",
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^5.0.0-rc.4"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0"
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "css-loader": {
+      "version": "4.3.0",
+      "requires": {
+        "camelcase": "^6.0.0",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^2.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.3",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.1",
+        "semver": "^7.3.2"
+      }
+    },
+    "css-prefers-color-scheme": {
+      "version": "3.1.1",
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "css-select": {
+      "version": "4.1.3",
+      "requires": {
+        "boolbase": "^1.0.0",
+        "css-what": "^5.0.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.6.0",
+        "nth-check": "^2.0.0"
+      }
+    },
+    "css-select-base-adapter": {
+      "version": "0.1.1"
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.37",
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      }
+    },
+    "css-vendor": {
+      "version": "2.0.8",
+      "requires": {
+        "@babel/runtime": "^7.8.3",
+        "is-in-browser": "^1.0.2"
+      }
+    },
+    "css-what": {
+      "version": "5.0.1"
+    },
+    "cssdb": {
+      "version": "4.4.0"
+    },
+    "cssesc": {
+      "version": "3.0.0"
+    },
+    "cssnano": {
+      "version": "4.1.11",
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "dependencies": {
+        "cosmiconfig": {
+          "version": "5.2.1",
+          "requires": {
+            "import-fresh": "^2.0.0",
+            "is-directory": "^0.3.1",
+            "js-yaml": "^3.13.1",
+            "parse-json": "^4.0.0"
+          }
+        },
+        "import-fresh": {
+          "version": "2.0.0",
+          "requires": {
+            "caller-path": "^2.0.0",
+            "resolve-from": "^3.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "4.0.0",
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "resolve-from": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.8",
+      "requires": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.3",
+        "postcss-unique-selectors": "^4.0.1"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0"
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0"
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1"
+    },
+    "csso": {
+      "version": "4.2.0",
+      "requires": {
+        "css-tree": "^1.1.2"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.1.3",
+          "requires": {
+            "mdn-data": "2.0.14",
+            "source-map": "^0.6.1"
+          }
+        },
+        "mdn-data": {
+          "version": "2.0.14"
+        }
+      }
+    },
+    "cssom": {
+      "version": "0.4.4"
+    },
+    "cssstyle": {
+      "version": "2.3.0",
+      "requires": {
+        "cssom": "~0.3.6"
+      },
+      "dependencies": {
+        "cssom": {
+          "version": "0.3.8"
+        }
+      }
+    },
+    "csstype": {
+      "version": "2.6.17"
+    },
+    "cyclist": {
+      "version": "1.0.1"
+    },
+    "d": {
+      "version": "1.0.1",
+      "requires": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
+    "damerau-levenshtein": {
+      "version": "1.0.7"
+    },
+    "data-urls": {
+      "version": "2.0.0",
+      "requires": {
+        "abab": "^2.0.3",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.0.0"
+      }
+    },
+    "debug": {
+      "version": "4.3.1",
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0"
+    },
+    "decimal.js": {
+      "version": "10.3.1"
+    },
+    "decode-uri-component": {
+      "version": "0.2.0"
+    },
+    "dedent": {
+      "version": "0.7.0"
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "deep-is": {
+      "version": "0.1.3"
+    },
+    "deepmerge": {
+      "version": "4.2.2"
+    },
+    "default-gateway": {
+      "version": "4.2.0",
+      "requires": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "6.0.5",
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "is-stream": {
+          "version": "1.1.0"
+        },
+        "npm-run-path": {
+          "version": "2.0.2",
+          "requires": {
+            "path-key": "^2.0.0"
+          }
+        },
+        "path-key": {
+          "version": "2.0.1"
+        },
+        "semver": {
+          "version": "5.7.1"
+        },
+        "shebang-command": {
+          "version": "1.2.0",
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0"
+        },
+        "which": {
+          "version": "1.3.1",
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      }
+    },
+    "del": {
+      "version": "4.1.1",
+      "requires": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "dependencies": {
+        "array-union": {
+          "version": "1.0.2",
+          "requires": {
+            "array-uniq": "^1.0.1"
+          }
+        },
+        "globby": {
+          "version": "6.1.0",
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0"
+            }
+          }
+        },
+        "p-map": {
+          "version": "2.1.0"
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0"
+    },
+    "depd": {
+      "version": "1.1.2"
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4"
+    },
+    "detect-newline": {
+      "version": "3.1.0"
+    },
+    "detect-node": {
+      "version": "2.1.0"
+    },
+    "detect-port-alt": {
+      "version": "1.1.6",
+      "requires": {
+        "address": "^1.0.1",
+        "debug": "^2.6.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "diff-sequences": {
+      "version": "26.6.2"
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "dir-glob": {
+      "version": "3.0.1",
+      "requires": {
+        "path-type": "^4.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0"
+    },
+    "dns-packet": {
+      "version": "1.3.4",
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-helpers": {
+      "version": "5.2.1",
+      "requires": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.0.8"
+        }
+      }
+    },
+    "dom-serializer": {
+      "version": "1.3.2",
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0"
+    },
+    "domelementtype": {
+      "version": "2.2.0"
+    },
+    "domexception": {
+      "version": "2.0.1",
+      "requires": {
+        "webidl-conversions": "^5.0.0"
+      },
+      "dependencies": {
+        "webidl-conversions": {
+          "version": "5.0.0"
+        }
+      }
+    },
+    "domhandler": {
+      "version": "4.2.0",
+      "requires": {
+        "domelementtype": "^2.2.0"
+      }
+    },
+    "domutils": {
+      "version": "2.7.0",
+      "requires": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      }
+    },
+    "dot-case": {
+      "version": "3.0.4",
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "dot-prop": {
+      "version": "5.3.0",
+      "requires": {
+        "is-obj": "^2.0.0"
+      },
+      "dependencies": {
+        "is-obj": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "dotenv": {
+      "version": "8.2.0"
+    },
+    "dotenv-expand": {
+      "version": "5.1.0"
+    },
+    "duplexer": {
+      "version": "0.1.2"
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1"
+    },
+    "ejs": {
+      "version": "2.7.4"
+    },
+    "electron-to-chromium": {
+      "version": "1.3.760"
+    },
+    "elliptic": {
+      "version": "6.5.4",
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "emittery": {
+      "version": "0.7.2"
+    },
+    "emoji-regex": {
+      "version": "9.2.2"
+    },
+    "emojis-list": {
+      "version": "3.0.0"
+    },
+    "encodeurl": {
+      "version": "1.0.2"
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.5.0",
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
+      }
+    },
+    "enquirer": {
+      "version": "2.3.6",
+      "requires": {
+        "ansi-colors": "^4.1.1"
+      }
+    },
+    "entities": {
+      "version": "2.2.0"
+    },
+    "errno": {
+      "version": "0.1.8",
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "error-stack-parser": {
+      "version": "2.0.6",
+      "requires": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.18.3",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "is-callable": "^1.2.3",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.3",
+        "is-string": "^1.0.6",
+        "object-inspect": "^1.10.3",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es5-ext": {
+      "version": "0.10.53",
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.3",
+        "next-tick": "~1.0.0"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.3",
+      "requires": {
+        "d": "^1.0.1",
+        "ext": "^1.1.2"
+      }
+    },
+    "escalade": {
+      "version": "3.1.1"
+    },
+    "escape-html": {
+      "version": "1.0.3"
+    },
+    "escape-string-regexp": {
+      "version": "4.0.0"
+    },
+    "escodegen": {
+      "version": "2.0.0",
+      "requires": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0"
+        },
+        "levn": {
+          "version": "0.3.0",
+          "requires": {
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2"
+          }
+        },
+        "optionator": {
+          "version": "0.8.3",
+          "requires": {
+            "deep-is": "~0.1.3",
+            "fast-levenshtein": "~2.0.6",
+            "levn": "~0.3.0",
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2",
+            "word-wrap": "~1.2.3"
+          }
+        },
+        "prelude-ls": {
+          "version": "1.1.2"
+        },
+        "type-check": {
+          "version": "0.3.2",
+          "requires": {
+            "prelude-ls": "~1.1.2"
+          }
+        }
+      }
+    },
+    "eslint": {
+      "version": "7.29.0",
+      "requires": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.2",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.0.4",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.1",
+        "progress": "^2.0.0",
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.12.11",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "eslint-utils": {
+          "version": "2.1.0",
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          },
+          "dependencies": {
+            "eslint-visitor-keys": {
+              "version": "1.3.0"
+            }
+          }
+        },
+        "globals": {
+          "version": "13.9.0",
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2"
+        }
+      }
+    },
+    "eslint-config-react-app": {
+      "version": "6.0.0",
+      "requires": {
+        "confusing-browser-globals": "^1.0.10"
+      }
+    },
+    "eslint-import-resolver-node": {
+      "version": "0.3.4",
+      "requires": {
+        "debug": "^2.6.9",
+        "resolve": "^1.13.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "eslint-module-utils": {
+      "version": "2.6.1",
+      "requires": {
+        "debug": "^3.2.7",
+        "pkg-dir": "^2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "eslint-plugin-flowtype": {
+      "version": "5.7.2",
+      "requires": {
+        "lodash": "^4.17.15",
+        "string-natural-compare": "^3.0.1"
+      }
+    },
+    "eslint-plugin-import": {
+      "version": "2.23.4",
+      "requires": {
+        "array-includes": "^3.1.3",
+        "array.prototype.flat": "^1.2.4",
+        "debug": "^2.6.9",
+        "doctrine": "^2.1.0",
+        "eslint-import-resolver-node": "^0.3.4",
+        "eslint-module-utils": "^2.6.1",
+        "find-up": "^2.0.0",
+        "has": "^1.0.3",
+        "is-core-module": "^2.4.0",
+        "minimatch": "^3.0.4",
+        "object.values": "^1.1.3",
+        "pkg-up": "^2.0.0",
+        "read-pkg-up": "^3.0.0",
+        "resolve": "^1.20.0",
+        "tsconfig-paths": "^3.9.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "doctrine": {
+          "version": "2.1.0",
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0"
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        },
+        "resolve": {
+          "version": "1.20.0",
+          "requires": {
+            "is-core-module": "^2.2.0",
+            "path-parse": "^1.0.6"
+          }
+        }
+      }
+    },
+    "eslint-plugin-jest": {
+      "version": "24.3.6",
+      "requires": {
+        "@typescript-eslint/experimental-utils": "^4.0.1"
+      }
+    },
+    "eslint-plugin-jsx-a11y": {
+      "version": "6.4.1",
+      "requires": {
+        "@babel/runtime": "^7.11.2",
+        "aria-query": "^4.2.2",
+        "array-includes": "^3.1.1",
+        "ast-types-flow": "^0.0.7",
+        "axe-core": "^4.0.2",
+        "axobject-query": "^2.2.0",
+        "damerau-levenshtein": "^1.0.6",
+        "emoji-regex": "^9.0.0",
+        "has": "^1.0.3",
+        "jsx-ast-utils": "^3.1.0",
+        "language-tags": "^1.0.5"
+      }
+    },
+    "eslint-plugin-react": {
+      "version": "7.24.0",
+      "requires": {
+        "array-includes": "^3.1.3",
+        "array.prototype.flatmap": "^1.2.4",
+        "doctrine": "^2.1.0",
+        "has": "^1.0.3",
+        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+        "minimatch": "^3.0.4",
+        "object.entries": "^1.1.4",
+        "object.fromentries": "^2.0.4",
+        "object.values": "^1.1.4",
+        "prop-types": "^15.7.2",
+        "resolve": "^2.0.0-next.3",
+        "string.prototype.matchall": "^4.0.5"
+      },
+      "dependencies": {
+        "doctrine": {
+          "version": "2.1.0",
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
+        "resolve": {
+          "version": "2.0.0-next.3",
+          "requires": {
+            "is-core-module": "^2.2.0",
+            "path-parse": "^1.0.6"
+          }
+        }
+      }
+    },
+    "eslint-plugin-react-hooks": {
+      "version": "4.2.0",
+      "requires": {}
+    },
+    "eslint-plugin-testing-library": {
+      "version": "3.10.2",
+      "requires": {
+        "@typescript-eslint/experimental-utils": "^3.10.1"
+      },
+      "dependencies": {
+        "@typescript-eslint/experimental-utils": {
+          "version": "3.10.1",
+          "requires": {
+            "@types/json-schema": "^7.0.3",
+            "@typescript-eslint/types": "3.10.1",
+            "@typescript-eslint/typescript-estree": "3.10.1",
+            "eslint-scope": "^5.0.0",
+            "eslint-utils": "^2.0.0"
+          }
+        },
+        "@typescript-eslint/types": {
+          "version": "3.10.1"
+        },
+        "@typescript-eslint/typescript-estree": {
+          "version": "3.10.1",
+          "requires": {
+            "@typescript-eslint/types": "3.10.1",
+            "@typescript-eslint/visitor-keys": "3.10.1",
+            "debug": "^4.1.1",
+            "glob": "^7.1.6",
+            "is-glob": "^4.0.1",
+            "lodash": "^4.17.15",
+            "semver": "^7.3.2",
+            "tsutils": "^3.17.1"
+          }
+        },
+        "@typescript-eslint/visitor-keys": {
+          "version": "3.10.1",
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          }
+        },
+        "eslint-utils": {
+          "version": "2.1.0",
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          }
+        },
+        "eslint-visitor-keys": {
+          "version": "1.3.0"
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-utils": {
+      "version": "3.0.0",
+      "requires": {
+        "eslint-visitor-keys": "^2.0.0"
+      }
+    },
+    "eslint-visitor-keys": {
+      "version": "2.1.0"
+    },
+    "eslint-webpack-plugin": {
+      "version": "2.5.4",
+      "requires": {
+        "@types/eslint": "^7.2.6",
+        "arrify": "^2.0.1",
+        "jest-worker": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.0.0",
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
+      }
+    },
+    "espree": {
+      "version": "7.3.1",
+      "requires": {
+        "acorn": "^7.4.0",
+        "acorn-jsx": "^5.3.1",
+        "eslint-visitor-keys": "^1.3.0"
+      },
+      "dependencies": {
+        "eslint-visitor-keys": {
+          "version": "1.3.0"
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.1"
+    },
+    "esquery": {
+      "version": "1.4.0",
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0"
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0"
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0"
+    },
+    "estree-walker": {
+      "version": "1.0.1"
+    },
+    "esutils": {
+      "version": "2.0.3"
+    },
+    "etag": {
+      "version": "1.8.1"
+    },
+    "eventemitter3": {
+      "version": "4.0.7"
+    },
+    "events": {
+      "version": "3.3.0"
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "exec-sh": {
+      "version": "0.3.6"
+    },
+    "execa": {
+      "version": "4.1.0",
+      "requires": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "human-signals": "^1.1.1",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.0",
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      }
+    },
+    "exit": {
+      "version": "0.1.2"
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "kind-of": {
+          "version": "5.1.0"
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "expect": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "ansi-styles": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-regex-util": "^26.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1"
+        },
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        },
+        "path-to-regexp": {
+          "version": "0.1.7"
+        }
+      }
+    },
+    "ext": {
+      "version": "1.4.0",
+      "requires": {
+        "type": "^2.0.0"
+      },
+      "dependencies": {
+        "type": {
+          "version": "2.5.0"
+        }
+      }
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        }
+      }
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3"
+    },
+    "fast-glob": {
+      "version": "3.2.6",
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      }
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0"
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6"
+    },
+    "fastq": {
+      "version": "1.11.0",
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "faye-websocket": {
+      "version": "0.11.4",
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "fb-watchman": {
+      "version": "2.0.1",
+      "requires": {
+        "bser": "2.1.1"
+      }
+    },
+    "figgy-pudding": {
+      "version": "3.5.2"
+    },
+    "file-entry-cache": {
+      "version": "6.0.1",
+      "requires": {
+        "flat-cache": "^3.0.4"
+      }
+    },
+    "file-loader": {
+      "version": "6.1.1",
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.0.0",
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
+      }
+    },
+    "filesize": {
+      "version": "6.1.0"
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "2.1.0",
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        }
+      }
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "flat-cache": {
+      "version": "3.0.4",
+      "requires": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      }
+    },
+    "flatted": {
+      "version": "3.1.1"
+    },
+    "flatten": {
+      "version": "1.0.3"
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.14.1"
+    },
+    "for-in": {
+      "version": "1.0.2"
+    },
+    "fork-ts-checker-webpack-plugin": {
+      "version": "4.1.6",
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "chalk": "^2.4.1",
+        "micromatch": "^3.1.10",
+        "minimatch": "^3.0.4",
+        "semver": "^5.6.0",
+        "tapable": "^1.0.0",
+        "worker-rpc": "^0.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "braces": {
+          "version": "2.3.2",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5"
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "semver": {
+          "version": "5.7.1"
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        }
+      }
+    },
+    "form-data": {
+      "version": "3.0.1",
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.2.0"
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2"
+    },
+    "from2": {
+      "version": "2.3.0",
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-extra": {
+      "version": "9.1.0",
+      "requires": {
+        "at-least-node": "^1.0.0",
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      }
+    },
+    "fs-minipass": {
+      "version": "2.1.0",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0"
+    },
+    "function-bind": {
+      "version": "1.1.1"
+    },
+    "functional-red-black-tree": {
+      "version": "1.0.1"
+    },
+    "gensync": {
+      "version": "1.0.0-beta.2"
+    },
+    "get-caller-file": {
+      "version": "2.0.5"
+    },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "get-own-enumerable-property-symbols": {
+      "version": "3.0.2"
+    },
+    "get-package-type": {
+      "version": "0.1.0"
+    },
+    "get-stream": {
+      "version": "5.2.0",
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6"
+    },
+    "glob": {
+      "version": "7.1.7",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "global-modules": {
+      "version": "2.0.0",
+      "requires": {
+        "global-prefix": "^3.0.0"
+      }
+    },
+    "global-prefix": {
+      "version": "3.0.0",
+      "requires": {
+        "ini": "^1.3.5",
+        "kind-of": "^6.0.2",
+        "which": "^1.3.1"
+      },
+      "dependencies": {
+        "which": {
+          "version": "1.3.1",
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "globals": {
+      "version": "11.12.0"
+    },
+    "globby": {
+      "version": "11.0.4",
+      "requires": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.1.1",
+        "ignore": "^5.1.4",
+        "merge2": "^1.3.0",
+        "slash": "^3.0.0"
+      },
+      "dependencies": {
+        "ignore": {
+          "version": "5.1.8"
+        }
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.6"
+    },
+    "growly": {
+      "version": "1.3.0",
+      "optional": true
+    },
+    "gzip-size": {
+      "version": "5.1.1",
+      "requires": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "handle-thing": {
+      "version": "2.0.1"
+    },
+    "harmony-reflect": {
+      "version": "1.6.2"
+    },
+    "has": {
+      "version": "1.0.3",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-bigints": {
+      "version": "1.0.1"
+    },
+    "has-flag": {
+      "version": "4.0.0"
+    },
+    "has-symbols": {
+      "version": "1.0.2"
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.1.0",
+      "requires": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1"
+        }
+      }
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "he": {
+      "version": "1.2.0"
+    },
+    "hex-color-regex": {
+      "version": "1.1.0"
+    },
+    "history": {
+      "version": "4.10.1",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "loose-envify": "^1.2.0",
+        "resolve-pathname": "^3.0.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0",
+        "value-equal": "^1.0.1"
+      }
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoist-non-react-statics": {
+      "version": "3.3.2",
+      "requires": {
+        "react-is": "^16.7.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "16.13.1"
+        }
+      }
+    },
+    "hoopy": {
+      "version": "0.1.4"
+    },
+    "hosted-git-info": {
+      "version": "2.8.9"
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "hsl-regex": {
+      "version": "1.0.0"
+    },
+    "hsla-regex": {
+      "version": "1.0.0"
+    },
+    "html-encoding-sniffer": {
+      "version": "2.0.1",
+      "requires": {
+        "whatwg-encoding": "^1.0.5"
+      }
+    },
+    "html-entities": {
+      "version": "1.4.0"
+    },
+    "html-escaper": {
+      "version": "2.0.2"
+    },
+    "html-minifier-terser": {
+      "version": "5.1.1",
+      "requires": {
+        "camel-case": "^4.1.1",
+        "clean-css": "^4.2.3",
+        "commander": "^4.1.1",
+        "he": "^1.2.0",
+        "param-case": "^3.0.3",
+        "relateurl": "^0.2.7",
+        "terser": "^4.6.3"
+      }
+    },
+    "html-webpack-plugin": {
+      "version": "4.5.0",
+      "requires": {
+        "@types/html-minifier-terser": "^5.0.0",
+        "@types/tapable": "^1.0.5",
+        "@types/webpack": "^4.41.8",
+        "html-minifier-terser": "^5.0.1",
+        "loader-utils": "^1.2.3",
+        "lodash": "^4.17.15",
+        "pretty-error": "^2.1.1",
+        "tapable": "^1.1.3",
+        "util.promisify": "1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
+    "htmlparser2": {
+      "version": "6.1.0",
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      }
+    },
+    "http-deceiver": {
+      "version": "1.2.7"
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3"
+        }
+      }
+    },
+    "http-parser-js": {
+      "version": "0.5.3"
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-agent": {
+      "version": "4.0.1",
+      "requires": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "2.3.2",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        }
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0"
+    },
+    "https-proxy-agent": {
+      "version": "5.0.0",
+      "requires": {
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "human-signals": {
+      "version": "1.1.1"
+    },
+    "hyphenate-style-name": {
+      "version": "1.0.4"
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "identity-obj-proxy": {
+      "version": "3.0.0",
+      "requires": {
+        "harmony-reflect": "^1.4.6"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1"
+    },
+    "iferr": {
+      "version": "0.1.5"
+    },
+    "ignore": {
+      "version": "4.0.6"
+    },
+    "immer": {
+      "version": "8.0.1"
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "4.0.0"
+        }
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "requires": {
+        "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "import-local": {
+      "version": "3.0.2",
+      "requires": {
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "dependencies": {
+        "pkg-dir": {
+          "version": "4.2.0",
+          "requires": {
+            "find-up": "^4.0.0"
+          }
+        }
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4"
+    },
+    "indent-string": {
+      "version": "4.0.0"
+    },
+    "indexes-of": {
+      "version": "1.0.1"
+    },
+    "infer-owner": {
+      "version": "1.0.4"
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4"
+    },
+    "ini": {
+      "version": "1.3.8"
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      }
+    },
+    "internal-slot": {
+      "version": "1.0.3",
+      "requires": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      }
+    },
+    "ip": {
+      "version": "1.1.5"
+    },
+    "ip-regex": {
+      "version": "2.1.0"
+    },
+    "ipaddr.js": {
+      "version": "1.9.1"
+    },
+    "is-absolute-url": {
+      "version": "2.1.0"
+    },
+    "is-accessor-descriptor": {
+      "version": "1.0.0",
+      "requires": {
+        "kind-of": "^6.0.0"
+      }
+    },
+    "is-arguments": {
+      "version": "1.1.0",
+      "requires": {
+        "call-bind": "^1.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1"
+    },
+    "is-bigint": {
+      "version": "1.0.2"
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "optional": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-boolean-object": {
+      "version": "1.1.1",
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6"
+    },
+    "is-callable": {
+      "version": "1.2.3"
+    },
+    "is-ci": {
+      "version": "2.0.0",
+      "requires": {
+        "ci-info": "^2.0.0"
+      }
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "requires": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.4.0",
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "1.0.0",
+      "requires": {
+        "kind-of": "^6.0.0"
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.4"
+    },
+    "is-descriptor": {
+      "version": "1.0.2",
+      "requires": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1"
+    },
+    "is-docker": {
+      "version": "2.2.1"
+    },
+    "is-extendable": {
+      "version": "1.0.1",
+      "requires": {
+        "is-plain-object": "^2.0.4"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1"
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0"
+    },
+    "is-generator-fn": {
+      "version": "2.1.0"
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-in-browser": {
+      "version": "1.1.3"
+    },
+    "is-module": {
+      "version": "1.0.0"
+    },
+    "is-negative-zero": {
+      "version": "2.0.1"
+    },
+    "is-number": {
+      "version": "7.0.0"
+    },
+    "is-number-object": {
+      "version": "1.0.5"
+    },
+    "is-obj": {
+      "version": "1.0.1"
+    },
+    "is-path-cwd": {
+      "version": "2.2.0"
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "2.1.0",
+      "requires": {
+        "path-is-inside": "^1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0"
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-potential-custom-element-name": {
+      "version": "1.0.1"
+    },
+    "is-regex": {
+      "version": "1.1.3",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-regexp": {
+      "version": "1.0.0"
+    },
+    "is-resolvable": {
+      "version": "1.1.0"
+    },
+    "is-root": {
+      "version": "2.1.0"
+    },
+    "is-stream": {
+      "version": "2.0.0"
+    },
+    "is-string": {
+      "version": "1.0.6"
+    },
+    "is-symbol": {
+      "version": "1.0.4",
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0"
+    },
+    "is-windows": {
+      "version": "1.0.2"
+    },
+    "is-wsl": {
+      "version": "2.2.0",
+      "requires": {
+        "is-docker": "^2.0.0"
+      }
+    },
+    "isarray": {
+      "version": "0.0.1"
+    },
+    "isexe": {
+      "version": "2.0.0"
+    },
+    "isobject": {
+      "version": "3.0.1"
+    },
+    "istanbul-lib-coverage": {
+      "version": "3.0.0"
+    },
+    "istanbul-lib-instrument": {
+      "version": "4.0.3",
+      "requires": {
+        "@babel/core": "^7.7.5",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-coverage": "^3.0.0",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "istanbul-lib-report": {
+      "version": "3.0.0",
+      "requires": {
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "3.1.0",
+          "requires": {
+            "semver": "^6.0.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0"
+        }
+      }
+    },
+    "istanbul-lib-source-maps": {
+      "version": "4.0.0",
+      "requires": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      }
+    },
+    "istanbul-reports": {
+      "version": "3.0.2",
+      "requires": {
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
+      }
+    },
+    "jest": {
+      "version": "26.6.0",
+      "requires": {
+        "@jest/core": "^26.6.0",
+        "import-local": "^3.0.2",
+        "jest-cli": "^26.6.0"
+      }
+    },
+    "jest-changed-files": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "execa": "^4.0.0",
+        "throat": "^5.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-circus": {
+      "version": "26.6.0",
+      "requires": {
+        "@babel/traverse": "^7.1.0",
+        "@jest/environment": "^26.6.0",
+        "@jest/test-result": "^26.6.0",
+        "@jest/types": "^26.6.0",
+        "@types/babel__traverse": "^7.0.4",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^0.7.0",
+        "expect": "^26.6.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^26.6.0",
+        "jest-matcher-utils": "^26.6.0",
+        "jest-message-util": "^26.6.0",
+        "jest-runner": "^26.6.0",
+        "jest-runtime": "^26.6.0",
+        "jest-snapshot": "^26.6.0",
+        "jest-util": "^26.6.0",
+        "pretty-format": "^26.6.0",
+        "stack-utils": "^2.0.2",
+        "throat": "^5.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-cli": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/core": "^26.6.3",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "import-local": "^3.0.2",
+        "is-ci": "^2.0.0",
+        "jest-config": "^26.6.3",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "prompts": "^2.0.1",
+        "yargs": "^15.4.1"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-config": {
+      "version": "26.6.3",
+      "requires": {
+        "@babel/core": "^7.1.0",
+        "@jest/test-sequencer": "^26.6.3",
+        "@jest/types": "^26.6.2",
+        "babel-jest": "^26.6.3",
+        "chalk": "^4.0.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.1",
+        "graceful-fs": "^4.2.4",
+        "jest-environment-jsdom": "^26.6.2",
+        "jest-environment-node": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "jest-jasmine2": "^26.6.3",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "jest-diff": {
+      "version": "26.6.2",
+      "requires": {
+        "chalk": "^4.0.0",
+        "diff-sequences": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-docblock": {
+      "version": "26.0.0",
+      "requires": {
+        "detect-newline": "^3.0.0"
+      }
+    },
+    "jest-each": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "jest-util": "^26.6.2",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-environment-jsdom": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jsdom": "^16.4.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-environment-node": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "jest-mock": "^26.6.2",
+        "jest-util": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-get-type": {
+      "version": "26.3.0"
+    },
+    "jest-haste-map": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "@types/graceful-fs": "^4.1.2",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "fsevents": "^2.1.2",
+        "graceful-fs": "^4.2.4",
+        "jest-regex-util": "^26.0.0",
+        "jest-serializer": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "micromatch": "^4.0.2",
+        "sane": "^4.0.3",
+        "walker": "^1.0.7"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-jasmine2": {
+      "version": "26.6.3",
+      "requires": {
+        "@babel/traverse": "^7.1.0",
+        "@jest/environment": "^26.6.2",
+        "@jest/source-map": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "expect": "^26.6.2",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^26.6.2",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-runtime": "^26.6.3",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "pretty-format": "^26.6.2",
+        "throat": "^5.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-leak-detector": {
+      "version": "26.6.2",
+      "requires": {
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-matcher-utils": {
+      "version": "26.6.2",
+      "requires": {
+        "chalk": "^4.0.0",
+        "jest-diff": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-message-util": {
+      "version": "26.6.2",
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@jest/types": "^26.6.2",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "micromatch": "^4.0.2",
+        "pretty-format": "^26.6.2",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-mock": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-pnp-resolver": {
+      "version": "1.2.2",
+      "requires": {}
+    },
+    "jest-regex-util": {
+      "version": "26.0.0"
+    },
+    "jest-resolve": {
+      "version": "26.6.0",
+      "requires": {
+        "@jest/types": "^26.6.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^26.6.0",
+        "read-pkg-up": "^7.0.1",
+        "resolve": "^1.17.0",
+        "slash": "^3.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "jest-resolve-dependencies": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-snapshot": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-runner": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/console": "^26.6.2",
+        "@jest/environment": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.7.1",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.4",
+        "jest-config": "^26.6.3",
+        "jest-docblock": "^26.0.0",
+        "jest-haste-map": "^26.6.2",
+        "jest-leak-detector": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "jest-runtime": "^26.6.3",
+        "jest-util": "^26.6.2",
+        "jest-worker": "^26.6.2",
+        "source-map-support": "^0.5.6",
+        "throat": "^5.0.0"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "jest-runtime": {
+      "version": "26.6.3",
+      "requires": {
+        "@jest/console": "^26.6.2",
+        "@jest/environment": "^26.6.2",
+        "@jest/fake-timers": "^26.6.2",
+        "@jest/globals": "^26.6.2",
+        "@jest/source-map": "^26.6.2",
+        "@jest/test-result": "^26.6.2",
+        "@jest/transform": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/yargs": "^15.0.0",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^0.6.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.4",
+        "jest-config": "^26.6.3",
+        "jest-haste-map": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-mock": "^26.6.2",
+        "jest-regex-util": "^26.0.0",
+        "jest-resolve": "^26.6.2",
+        "jest-snapshot": "^26.6.2",
+        "jest-util": "^26.6.2",
+        "jest-validate": "^26.6.2",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0",
+        "yargs": "^15.4.1"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "jest-serializer": {
+      "version": "26.6.2",
+      "requires": {
+        "@types/node": "*",
+        "graceful-fs": "^4.2.4"
+      }
+    },
+    "jest-snapshot": {
+      "version": "26.6.2",
+      "requires": {
+        "@babel/types": "^7.0.0",
+        "@jest/types": "^26.6.2",
+        "@types/babel__traverse": "^7.0.4",
+        "@types/prettier": "^2.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^26.6.2",
+        "graceful-fs": "^4.2.4",
+        "jest-diff": "^26.6.2",
+        "jest-get-type": "^26.3.0",
+        "jest-haste-map": "^26.6.2",
+        "jest-matcher-utils": "^26.6.2",
+        "jest-message-util": "^26.6.2",
+        "jest-resolve": "^26.6.2",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^26.6.2",
+        "semver": "^7.3.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "jest-resolve": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "chalk": "^4.0.0",
+            "graceful-fs": "^4.2.4",
+            "jest-pnp-resolver": "^1.2.2",
+            "jest-util": "^26.6.2",
+            "read-pkg-up": "^7.0.1",
+            "resolve": "^1.18.1",
+            "slash": "^3.0.0"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        },
+        "read-pkg": {
+          "version": "5.2.0",
+          "requires": {
+            "@types/normalize-package-data": "^2.4.0",
+            "normalize-package-data": "^2.5.0",
+            "parse-json": "^5.0.0",
+            "type-fest": "^0.6.0"
+          },
+          "dependencies": {
+            "type-fest": {
+              "version": "0.6.0"
+            }
+          }
+        },
+        "read-pkg-up": {
+          "version": "7.0.1",
+          "requires": {
+            "find-up": "^4.1.0",
+            "read-pkg": "^5.2.0",
+            "type-fest": "^0.8.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1"
+        }
+      }
+    },
+    "jest-util": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.4",
+        "is-ci": "^2.0.0",
+        "micromatch": "^4.0.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-validate": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/types": "^26.6.2",
+        "camelcase": "^6.0.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^26.3.0",
+        "leven": "^3.1.0",
+        "pretty-format": "^26.6.2"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        },
+        "pretty-format": {
+          "version": "26.6.2",
+          "requires": {
+            "@jest/types": "^26.6.2",
+            "ansi-regex": "^5.0.0",
+            "ansi-styles": "^4.0.0",
+            "react-is": "^17.0.1"
+          }
+        }
+      }
+    },
+    "jest-watch-typeahead": {
+      "version": "0.6.1",
+      "requires": {
+        "ansi-escapes": "^4.3.1",
+        "chalk": "^4.0.0",
+        "jest-regex-util": "^26.0.0",
+        "jest-watcher": "^26.3.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "jest-watcher": {
+      "version": "26.6.2",
+      "requires": {
+        "@jest/test-result": "^26.6.2",
+        "@jest/types": "^26.6.2",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "jest-util": "^26.6.2",
+        "string-length": "^4.0.1"
+      },
+      "dependencies": {
+        "@jest/types": {
+          "version": "26.6.2",
+          "requires": {
+            "@types/istanbul-lib-coverage": "^2.0.0",
+            "@types/istanbul-reports": "^3.0.0",
+            "@types/node": "*",
+            "@types/yargs": "^15.0.0",
+            "chalk": "^4.0.0"
+          }
+        },
+        "@types/yargs": {
+          "version": "15.0.13",
+          "requires": {
+            "@types/yargs-parser": "*"
+          }
+        }
+      }
+    },
+    "jest-worker": {
+      "version": "26.6.2",
+      "requires": {
+        "@types/node": "*",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^7.0.0"
+      }
+    },
+    "js-tokens": {
+      "version": "4.0.0"
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsdom": {
+      "version": "16.6.0",
+      "requires": {
+        "abab": "^2.0.5",
+        "acorn": "^8.2.4",
+        "acorn-globals": "^6.0.0",
+        "cssom": "^0.4.4",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^2.0.0",
+        "decimal.js": "^10.2.1",
+        "domexception": "^2.0.1",
+        "escodegen": "^2.0.0",
+        "form-data": "^3.0.0",
+        "html-encoding-sniffer": "^2.0.1",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "^5.0.0",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.0",
+        "parse5": "6.0.1",
+        "saxes": "^5.0.1",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.0.0",
+        "w3c-hr-time": "^1.0.2",
+        "w3c-xmlserializer": "^2.0.0",
+        "webidl-conversions": "^6.1.0",
+        "whatwg-encoding": "^1.0.5",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.5.0",
+        "ws": "^7.4.5",
+        "xml-name-validator": "^3.0.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.4.1"
+        }
+      }
+    },
+    "jsesc": {
+      "version": "2.5.2"
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2"
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1"
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1"
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1"
+    },
+    "json3": {
+      "version": "3.3.3"
+    },
+    "json5": {
+      "version": "2.2.0",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "jsonfile": {
+      "version": "6.1.0",
+      "requires": {
+        "graceful-fs": "^4.1.6",
+        "universalify": "^2.0.0"
+      }
+    },
+    "jss": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "csstype": "^3.0.2",
+        "is-in-browser": "^1.1.3",
+        "tiny-warning": "^1.0.2"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.0.8"
+        }
+      }
+    },
+    "jss-plugin-camel-case": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "hyphenate-style-name": "^1.0.3",
+        "jss": "10.7.1"
+      }
+    },
+    "jss-plugin-default-unit": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "jss-plugin-global": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "jss-plugin-nested": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1",
+        "tiny-warning": "^1.0.2"
+      }
+    },
+    "jss-plugin-props-sort": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1"
+      }
+    },
+    "jss-plugin-rule-value-function": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "jss": "10.7.1",
+        "tiny-warning": "^1.0.2"
+      }
+    },
+    "jss-plugin-vendor-prefixer": {
+      "version": "10.7.1",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "css-vendor": "^2.0.8",
+        "jss": "10.7.1"
+      }
+    },
+    "jsx-ast-utils": {
+      "version": "3.2.0",
+      "requires": {
+        "array-includes": "^3.1.2",
+        "object.assign": "^4.1.2"
+      }
+    },
+    "killable": {
+      "version": "1.0.1"
+    },
+    "kind-of": {
+      "version": "6.0.3"
+    },
+    "kleur": {
+      "version": "3.0.3"
+    },
+    "klona": {
+      "version": "2.0.4"
+    },
+    "language-subtag-registry": {
+      "version": "0.3.21"
+    },
+    "language-tags": {
+      "version": "1.0.5",
+      "requires": {
+        "language-subtag-registry": "~0.3.2"
+      }
+    },
+    "last-call-webpack-plugin": {
+      "version": "3.0.0",
+      "requires": {
+        "lodash": "^4.17.5",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "leven": {
+      "version": "3.1.0"
+    },
+    "levn": {
+      "version": "0.4.1",
+      "requires": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.1.6"
+    },
+    "load-json-file": {
+      "version": "4.0.0",
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^4.0.0",
+        "pify": "^3.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "4.0.0",
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "pify": {
+          "version": "3.0.0"
+        },
+        "strip-bom": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0"
+    },
+    "loader-utils": {
+      "version": "2.0.0",
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      }
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21"
+    },
+    "lodash._reinterpolate": {
+      "version": "3.0.0"
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0"
+    },
+    "lodash.debounce": {
+      "version": "4.0.8"
+    },
+    "lodash.memoize": {
+      "version": "4.1.2"
+    },
+    "lodash.merge": {
+      "version": "4.6.2"
+    },
+    "lodash.template": {
+      "version": "4.5.0",
+      "requires": {
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.templatesettings": "^4.0.0"
+      }
+    },
+    "lodash.templatesettings": {
+      "version": "4.2.0",
+      "requires": {
+        "lodash._reinterpolate": "^3.0.0"
+      }
+    },
+    "lodash.truncate": {
+      "version": "4.4.2"
+    },
+    "lodash.uniq": {
+      "version": "4.5.0"
+    },
+    "loglevel": {
+      "version": "1.7.1"
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "2.0.2",
+      "requires": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "lru-cache": {
+      "version": "6.0.0",
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "magic-string": {
+      "version": "0.25.7",
+      "requires": {
+        "sourcemap-codec": "^1.4.4"
+      }
+    },
+    "make-dir": {
+      "version": "2.1.0",
+      "requires": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1"
+        }
+      }
+    },
+    "makeerror": {
+      "version": "1.0.11",
+      "requires": {
+        "tmpl": "1.0.x"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2"
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "mdn-data": {
+      "version": "2.0.4"
+    },
+    "media-typer": {
+      "version": "0.3.0"
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1"
+    },
+    "merge-stream": {
+      "version": "2.0.0"
+    },
+    "merge2": {
+      "version": "1.4.1"
+    },
+    "methods": {
+      "version": "1.1.2"
+    },
+    "microevent.ts": {
+      "version": "0.1.1"
+    },
+    "micromatch": {
+      "version": "4.0.4",
+      "requires": {
+        "braces": "^3.0.1",
+        "picomatch": "^2.2.3"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "mime": {
+      "version": "1.6.0"
+    },
+    "mime-db": {
+      "version": "1.48.0"
+    },
+    "mime-types": {
+      "version": "2.1.31",
+      "requires": {
+        "mime-db": "1.48.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "2.1.0"
+    },
+    "mini-create-react-context": {
+      "version": "0.4.1",
+      "requires": {
+        "@babel/runtime": "^7.12.1",
+        "tiny-warning": "^1.0.3"
+      }
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.11.3",
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1"
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1"
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5"
+    },
+    "minipass": {
+      "version": "3.1.3",
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "minipass-collect": {
+      "version": "1.0.2",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-flush": {
+      "version": "1.0.5",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-pipeline": {
+      "version": "1.2.4",
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minizlib": {
+      "version": "2.1.2",
+      "requires": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      }
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "requires": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "requires": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "ms": {
+      "version": "2.1.2"
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0"
+    },
+    "nanoid": {
+      "version": "3.1.23"
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "native-url": {
+      "version": "0.2.6",
+      "requires": {
+        "querystring": "^0.2.0"
+      }
+    },
+    "natural-compare": {
+      "version": "1.4.0"
+    },
+    "negotiator": {
+      "version": "0.6.2"
+    },
+    "neo-async": {
+      "version": "2.6.2"
+    },
+    "next-tick": {
+      "version": "1.0.0"
+    },
+    "nice-try": {
+      "version": "1.0.5"
+    },
+    "no-case": {
+      "version": "3.0.4",
+      "requires": {
+        "lower-case": "^2.0.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node-forge": {
+      "version": "0.10.0"
+    },
+    "node-int64": {
+      "version": "0.4.0"
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1"
+        }
+      }
+    },
+    "node-modules-regexp": {
+      "version": "1.0.0"
+    },
+    "node-notifier": {
+      "version": "8.0.2",
+      "optional": true,
+      "requires": {
+        "growly": "^1.3.0",
+        "is-wsl": "^2.2.0",
+        "semver": "^7.3.2",
+        "shellwords": "^0.1.1",
+        "uuid": "^8.3.0",
+        "which": "^2.0.2"
+      }
+    },
+    "node-releases": {
+      "version": "1.1.73"
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1"
+        }
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0"
+    },
+    "normalize-range": {
+      "version": "0.1.2"
+    },
+    "normalize-url": {
+      "version": "1.9.1",
+      "requires": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      }
+    },
+    "notistack": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/notistack/-/notistack-1.0.10.tgz",
+      "integrity": "sha512-z0y4jJaVtOoH3kc3GtNUlhNTY+5LE04QDeLVujX3VPhhzg67zw055mZjrBF+nzpv3V9aiPNph1EgRU4+t8kQTQ==",
+      "requires": {
+        "clsx": "^1.1.0",
+        "hoist-non-react-statics": "^3.3.0"
+      }
+    },
+    "npm-run-path": {
+      "version": "4.0.1",
+      "requires": {
+        "path-key": "^3.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "2.0.0",
+      "requires": {
+        "boolbase": "^1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2"
+    },
+    "nwsapi": {
+      "version": "2.2.0"
+    },
+    "object-assign": {
+      "version": "4.1.1"
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "5.1.0"
+            }
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-inspect": {
+      "version": "1.10.3"
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1"
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.2",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "object.entries": {
+      "version": "1.1.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2"
+      }
+    },
+    "object.fromentries": {
+      "version": "2.0.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2",
+        "has": "^1.0.3"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.1.2",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.0-next.2"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2"
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2"
+    },
+    "once": {
+      "version": "1.4.0",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "onetime": {
+      "version": "5.1.2",
+      "requires": {
+        "mimic-fn": "^2.1.0"
+      }
+    },
+    "open": {
+      "version": "7.4.2",
+      "requires": {
+        "is-docker": "^2.0.0",
+        "is-wsl": "^2.1.1"
+      }
+    },
+    "opn": {
+      "version": "5.5.0",
+      "requires": {
+        "is-wsl": "^1.1.0"
+      },
+      "dependencies": {
+        "is-wsl": {
+          "version": "1.1.0"
+        }
+      }
+    },
+    "optimize-css-assets-webpack-plugin": {
+      "version": "5.0.4",
+      "requires": {
+        "cssnano": "^4.1.10",
+        "last-call-webpack-plugin": "^3.0.0"
+      }
+    },
+    "optionator": {
+      "version": "0.9.1",
+      "requires": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.3"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0"
+    },
+    "p-each-series": {
+      "version": "2.2.0"
+    },
+    "p-finally": {
+      "version": "1.0.0"
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-map": {
+      "version": "4.0.0",
+      "requires": {
+        "aggregate-error": "^3.0.0"
+      }
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0"
+    },
+    "pako": {
+      "version": "1.0.11"
+    },
+    "parallel-transform": {
+      "version": "1.2.0",
+      "requires": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "3.0.4",
+      "requires": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "requires": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-json": {
+      "version": "5.2.0",
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      }
+    },
+    "parse5": {
+      "version": "6.0.1"
+    },
+    "parseurl": {
+      "version": "1.3.3"
+    },
+    "pascal-case": {
+      "version": "3.1.2",
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "pascalcase": {
+      "version": "0.1.1"
+    },
+    "path-browserify": {
+      "version": "0.0.1"
+    },
+    "path-dirname": {
+      "version": "1.0.2"
+    },
+    "path-exists": {
+      "version": "4.0.0"
+    },
+    "path-is-absolute": {
+      "version": "1.0.1"
+    },
+    "path-is-inside": {
+      "version": "1.0.2"
+    },
+    "path-key": {
+      "version": "3.1.1"
+    },
+    "path-parse": {
+      "version": "1.0.7"
+    },
+    "path-to-regexp": {
+      "version": "1.8.0",
+      "requires": {
+        "isarray": "0.0.1"
+      }
+    },
+    "path-type": {
+      "version": "4.0.0"
+    },
+    "pbkdf2": {
+      "version": "3.1.2",
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0"
+    },
+    "picomatch": {
+      "version": "2.3.0"
+    },
+    "pify": {
+      "version": "4.0.1"
+    },
+    "pinkie": {
+      "version": "2.0.4"
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pirates": {
+      "version": "4.0.1",
+      "requires": {
+        "node-modules-regexp": "^1.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "2.0.0",
+      "requires": {
+        "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0"
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "pkg-up": {
+      "version": "2.0.0",
+      "requires": {
+        "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0"
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "requires": {
+        "ts-pnp": "^1.1.6"
+      }
+    },
+    "popper.js": {
+      "version": "1.16.1-lts"
+    },
+    "portfinder": {
+      "version": "1.0.28",
+      "requires": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1"
+    },
+    "postcss": {
+      "version": "7.0.36",
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "5.5.0",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5"
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "postcss-attribute-case-insensitive": {
+      "version": "4.0.2",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^6.0.2"
+      }
+    },
+    "postcss-browser-comments": {
+      "version": "3.0.0",
+      "requires": {
+        "postcss": "^7"
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.5",
+      "requires": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "postcss-color-functional-notation": {
+      "version": "2.0.1",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-color-gray": {
+      "version": "5.0.0",
+      "requires": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-color-hex-alpha": {
+      "version": "5.0.3",
+      "requires": {
+        "postcss": "^7.0.14",
+        "postcss-values-parser": "^2.0.1"
+      }
+    },
+    "postcss-color-mod-function": {
+      "version": "3.0.3",
+      "requires": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-color-rebeccapurple": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-custom-media": {
+      "version": "7.0.8",
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "postcss-custom-properties": {
+      "version": "8.0.11",
+      "requires": {
+        "postcss": "^7.0.17",
+        "postcss-values-parser": "^2.0.1"
+      }
+    },
+    "postcss-custom-selectors": {
+      "version": "5.1.2",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0"
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-dir-pseudo-class": {
+      "version": "5.0.0",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0"
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-double-position-gradients": {
+      "version": "1.0.0",
+      "requires": {
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-env-function": {
+      "version": "2.0.2",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-flexbugs-fixes": {
+      "version": "4.2.1",
+      "requires": {
+        "postcss": "^7.0.26"
+      }
+    },
+    "postcss-focus-visible": {
+      "version": "4.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-focus-within": {
+      "version": "3.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-font-variant": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-gap-properties": {
+      "version": "2.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-image-set-function": {
+      "version": "3.0.1",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-initial": {
+      "version": "3.0.4",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-lab-function": {
+      "version": "2.0.1",
+      "requires": {
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.2",
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "cosmiconfig": {
+          "version": "5.2.1",
+          "requires": {
+            "import-fresh": "^2.0.0",
+            "is-directory": "^0.3.1",
+            "js-yaml": "^3.13.1",
+            "parse-json": "^4.0.0"
+          }
+        },
+        "import-fresh": {
+          "version": "2.0.0",
+          "requires": {
+            "caller-path": "^2.0.0",
+            "resolve-from": "^3.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "4.0.0",
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "resolve-from": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "postcss-logical": {
+      "version": "3.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-media-minmax": {
+      "version": "4.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-merge-longhand": {
+      "version": "4.0.11",
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-minify-font-values": {
+      "version": "4.0.2",
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "requires": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.2.0",
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "3.0.0",
+      "requires": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-nesting": {
+      "version": "7.0.1",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-normalize": {
+      "version": "8.0.1",
+      "requires": {
+        "@csstools/normalize.css": "^10.1.0",
+        "browserslist": "^4.6.2",
+        "postcss": "^7.0.17",
+        "postcss-browser-comments": "^3.0.0",
+        "sanitize.css": "^10.0.0"
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "requires": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "normalize-url": {
+          "version": "3.3.0"
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-overflow-shorthand": {
+      "version": "2.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-page-break": {
+      "version": "2.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-place": {
+      "version": "4.0.1",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      }
+    },
+    "postcss-preset-env": {
+      "version": "6.7.0",
+      "requires": {
+        "autoprefixer": "^9.6.1",
+        "browserslist": "^4.6.4",
+        "caniuse-lite": "^1.0.30000981",
+        "css-blank-pseudo": "^0.1.4",
+        "css-has-pseudo": "^0.10.0",
+        "css-prefers-color-scheme": "^3.1.1",
+        "cssdb": "^4.4.0",
+        "postcss": "^7.0.17",
+        "postcss-attribute-case-insensitive": "^4.0.1",
+        "postcss-color-functional-notation": "^2.0.1",
+        "postcss-color-gray": "^5.0.0",
+        "postcss-color-hex-alpha": "^5.0.3",
+        "postcss-color-mod-function": "^3.0.3",
+        "postcss-color-rebeccapurple": "^4.0.1",
+        "postcss-custom-media": "^7.0.8",
+        "postcss-custom-properties": "^8.0.11",
+        "postcss-custom-selectors": "^5.1.2",
+        "postcss-dir-pseudo-class": "^5.0.0",
+        "postcss-double-position-gradients": "^1.0.0",
+        "postcss-env-function": "^2.0.2",
+        "postcss-focus-visible": "^4.0.0",
+        "postcss-focus-within": "^3.0.0",
+        "postcss-font-variant": "^4.0.0",
+        "postcss-gap-properties": "^2.0.0",
+        "postcss-image-set-function": "^3.0.1",
+        "postcss-initial": "^3.0.0",
+        "postcss-lab-function": "^2.0.1",
+        "postcss-logical": "^3.0.0",
+        "postcss-media-minmax": "^4.0.0",
+        "postcss-nesting": "^7.0.0",
+        "postcss-overflow-shorthand": "^2.0.0",
+        "postcss-page-break": "^2.0.0",
+        "postcss-place": "^4.0.1",
+        "postcss-pseudo-class-any-link": "^6.0.0",
+        "postcss-replace-overflow-wrap": "^3.0.0",
+        "postcss-selector-matches": "^4.0.0",
+        "postcss-selector-not": "^4.0.0"
+      }
+    },
+    "postcss-pseudo-class-any-link": {
+      "version": "6.0.0",
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0"
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-replace-overflow-wrap": {
+      "version": "3.0.0",
+      "requires": {
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-safe-parser": {
+      "version": "5.0.2",
+      "requires": {
+        "postcss": "^8.1.0"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "8.3.5",
+          "requires": {
+            "colorette": "^1.2.2",
+            "nanoid": "^3.1.23",
+            "source-map-js": "^0.6.2"
+          }
+        }
+      }
+    },
+    "postcss-selector-matches": {
+      "version": "4.0.0",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-selector-not": {
+      "version": "4.0.1",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.6",
+      "requires": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.3",
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1"
+        }
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.1.0"
+    },
+    "postcss-values-parser": {
+      "version": "2.0.1",
+      "requires": {
+        "flatten": "^1.0.2",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      }
+    },
+    "prelude-ls": {
+      "version": "1.2.1"
+    },
+    "prepend-http": {
+      "version": "1.0.4"
+    },
+    "pretty-bytes": {
+      "version": "5.6.0"
+    },
+    "pretty-error": {
+      "version": "2.1.2",
+      "requires": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      }
+    },
+    "process": {
+      "version": "0.11.10"
+    },
+    "process-nextick-args": {
+      "version": "2.0.1"
+    },
+    "progress": {
+      "version": "2.0.3"
+    },
+    "promise": {
+      "version": "8.1.0",
+      "requires": {
+        "asap": "~2.0.6"
+      }
+    },
+    "promise-inflight": {
+      "version": "1.0.1"
+    },
+    "prompts": {
+      "version": "2.4.0",
+      "requires": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      }
+    },
+    "prop-types": {
+      "version": "15.7.2",
+      "requires": {
+        "loose-envify": "^1.4.0",
+        "object-assign": "^4.1.1",
+        "react-is": "^16.8.1"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "16.13.1"
+        }
+      }
+    },
+    "proxy-addr": {
+      "version": "2.0.7",
+      "requires": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "prr": {
+      "version": "1.0.1"
+    },
+    "psl": {
+      "version": "1.8.0"
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0"
+        }
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1"
+    },
+    "q": {
+      "version": "1.5.1"
+    },
+    "qs": {
+      "version": "6.7.0"
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.1"
+    },
+    "querystring-es3": {
+      "version": "0.2.1"
+    },
+    "querystringify": {
+      "version": "2.2.0"
+    },
+    "queue-microtask": {
+      "version": "1.2.3"
+    },
+    "raf": {
+      "version": "3.4.1",
+      "requires": {
+        "performance-now": "^2.1.0"
+      }
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1"
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0"
+        }
+      }
+    },
+    "react": {
+      "version": "17.0.2",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "react-app-polyfill": {
+      "version": "2.0.0",
+      "requires": {
+        "core-js": "^3.6.5",
+        "object-assign": "^4.1.1",
+        "promise": "^8.1.0",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "whatwg-fetch": "^3.4.1"
+      }
+    },
+    "react-dev-utils": {
+      "version": "11.0.4",
+      "requires": {
+        "@babel/code-frame": "7.10.4",
+        "address": "1.1.2",
+        "browserslist": "4.14.2",
+        "chalk": "2.4.2",
+        "cross-spawn": "7.0.3",
+        "detect-port-alt": "1.1.6",
+        "escape-string-regexp": "2.0.0",
+        "filesize": "6.1.0",
+        "find-up": "4.1.0",
+        "fork-ts-checker-webpack-plugin": "4.1.6",
+        "global-modules": "2.0.0",
+        "globby": "11.0.1",
+        "gzip-size": "5.1.1",
+        "immer": "8.0.1",
+        "is-root": "2.1.0",
+        "loader-utils": "2.0.0",
+        "open": "^7.0.2",
+        "pkg-up": "3.1.0",
+        "prompts": "2.4.0",
+        "react-error-overlay": "^6.0.9",
+        "recursive-readdir": "2.2.2",
+        "shell-quote": "1.7.2",
+        "strip-ansi": "6.0.0",
+        "text-table": "0.2.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          },
+          "dependencies": {
+            "escape-string-regexp": {
+              "version": "1.0.5"
+            }
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "escape-string-regexp": {
+          "version": "2.0.0"
+        },
+        "globby": {
+          "version": "11.0.1",
+          "requires": {
+            "array-union": "^2.1.0",
+            "dir-glob": "^3.0.1",
+            "fast-glob": "^3.1.1",
+            "ignore": "^5.1.4",
+            "merge2": "^1.3.0",
+            "slash": "^3.0.0"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "ignore": {
+          "version": "5.1.8"
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        },
+        "pkg-up": {
+          "version": "3.1.0",
+          "requires": {
+            "find-up": "^3.0.0"
+          },
+          "dependencies": {
+            "find-up": {
+              "version": "3.0.0",
+              "requires": {
+                "locate-path": "^3.0.0"
+              }
+            }
+          }
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "react-dom": {
+      "version": "17.0.2",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1",
+        "scheduler": "^0.20.2"
+      }
+    },
+    "react-error-overlay": {
+      "version": "6.0.9"
+    },
+    "react-is": {
+      "version": "17.0.2"
+    },
+    "react-refresh": {
+      "version": "0.8.3"
+    },
+    "react-router": {
+      "version": "5.2.0",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "hoist-non-react-statics": "^3.1.0",
+        "loose-envify": "^1.3.1",
+        "mini-create-react-context": "^0.4.0",
+        "path-to-regexp": "^1.7.0",
+        "prop-types": "^15.6.2",
+        "react-is": "^16.6.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "16.13.1"
+        }
+      }
+    },
+    "react-router-dom": {
+      "version": "5.2.0",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "loose-envify": "^1.3.1",
+        "prop-types": "^15.6.2",
+        "react-router": "5.2.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      }
+    },
+    "react-scripts": {
+      "version": "4.0.3",
+      "requires": {
+        "@babel/core": "7.12.3",
+        "@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
+        "@svgr/webpack": "5.5.0",
+        "@typescript-eslint/eslint-plugin": "^4.5.0",
+        "@typescript-eslint/parser": "^4.5.0",
+        "babel-eslint": "^10.1.0",
+        "babel-jest": "^26.6.0",
+        "babel-loader": "8.1.0",
+        "babel-plugin-named-asset-import": "^0.3.7",
+        "babel-preset-react-app": "^10.0.0",
+        "bfj": "^7.0.2",
+        "camelcase": "^6.1.0",
+        "case-sensitive-paths-webpack-plugin": "2.3.0",
+        "css-loader": "4.3.0",
+        "dotenv": "8.2.0",
+        "dotenv-expand": "5.1.0",
+        "eslint": "^7.11.0",
+        "eslint-config-react-app": "^6.0.0",
+        "eslint-plugin-flowtype": "^5.2.0",
+        "eslint-plugin-import": "^2.22.1",
+        "eslint-plugin-jest": "^24.1.0",
+        "eslint-plugin-jsx-a11y": "^6.3.1",
+        "eslint-plugin-react": "^7.21.5",
+        "eslint-plugin-react-hooks": "^4.2.0",
+        "eslint-plugin-testing-library": "^3.9.2",
+        "eslint-webpack-plugin": "^2.5.2",
+        "file-loader": "6.1.1",
+        "fs-extra": "^9.0.1",
+        "fsevents": "^2.1.3",
+        "html-webpack-plugin": "4.5.0",
+        "identity-obj-proxy": "3.0.0",
+        "jest": "26.6.0",
+        "jest-circus": "26.6.0",
+        "jest-resolve": "26.6.0",
+        "jest-watch-typeahead": "0.6.1",
+        "mini-css-extract-plugin": "0.11.3",
+        "optimize-css-assets-webpack-plugin": "5.0.4",
+        "pnp-webpack-plugin": "1.6.4",
+        "postcss-flexbugs-fixes": "4.2.1",
+        "postcss-loader": "3.0.0",
+        "postcss-normalize": "8.0.1",
+        "postcss-preset-env": "6.7.0",
+        "postcss-safe-parser": "5.0.2",
+        "prompts": "2.4.0",
+        "react-app-polyfill": "^2.0.0",
+        "react-dev-utils": "^11.0.3",
+        "react-refresh": "^0.8.3",
+        "resolve": "1.18.1",
+        "resolve-url-loader": "^3.1.2",
+        "sass-loader": "^10.0.5",
+        "semver": "7.3.2",
+        "style-loader": "1.3.0",
+        "terser-webpack-plugin": "4.2.3",
+        "ts-pnp": "1.2.0",
+        "url-loader": "4.1.1",
+        "webpack": "4.44.2",
+        "webpack-dev-server": "3.11.1",
+        "webpack-manifest-plugin": "2.2.0",
+        "workbox-webpack-plugin": "5.1.4"
+      },
+      "dependencies": {
+        "@babel/core": {
+          "version": "7.12.3",
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/generator": "^7.12.1",
+            "@babel/helper-module-transforms": "^7.12.1",
+            "@babel/helpers": "^7.12.1",
+            "@babel/parser": "^7.12.3",
+            "@babel/template": "^7.10.4",
+            "@babel/traverse": "^7.12.1",
+            "@babel/types": "^7.12.1",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.1",
+            "json5": "^2.1.2",
+            "lodash": "^4.17.19",
+            "resolve": "^1.3.2",
+            "semver": "^5.4.1",
+            "source-map": "^0.5.0"
+          },
+          "dependencies": {
+            "semver": {
+              "version": "5.7.1"
+            }
+          }
+        },
+        "source-map": {
+          "version": "0.5.7"
+        }
+      }
+    },
+    "react-transition-group": {
+      "version": "4.4.2",
+      "requires": {
+        "@babel/runtime": "^7.5.5",
+        "dom-helpers": "^5.0.1",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      }
+    },
+    "read-pkg": {
+      "version": "3.0.0",
+      "requires": {
+        "load-json-file": "^4.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^3.0.0"
+      },
+      "dependencies": {
+        "path-type": {
+          "version": "3.0.0",
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        },
+        "pify": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "3.0.0",
+      "requires": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^3.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0"
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "1.0.0"
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        }
+      }
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "optional": true,
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "recursive-readdir": {
+      "version": "2.2.2",
+      "requires": {
+        "minimatch": "3.0.4"
+      }
+    },
+    "regenerate": {
+      "version": "1.4.2"
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.2.0",
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.7"
+    },
+    "regenerator-transform": {
+      "version": "0.14.5",
+      "requires": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regex-parser": {
+      "version": "2.2.11"
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.1",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "regexpp": {
+      "version": "3.2.0"
+    },
+    "regexpu-core": {
+      "version": "4.7.1",
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.2.0",
+        "regjsgen": "^0.5.1",
+        "regjsparser": "^0.6.4",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.2.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.2"
+    },
+    "regjsparser": {
+      "version": "0.6.9",
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0"
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7"
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0"
+    },
+    "renderkid": {
+      "version": "2.0.7",
+      "requires": {
+        "css-select": "^4.1.3",
+        "dom-converter": "^0.2.0",
+        "htmlparser2": "^6.1.0",
+        "lodash": "^4.17.21",
+        "strip-ansi": "^3.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1"
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.4"
+    },
+    "repeat-string": {
+      "version": "1.6.1"
+    },
+    "require-directory": {
+      "version": "2.1.1"
+    },
+    "require-from-string": {
+      "version": "2.0.2"
+    },
+    "require-main-filename": {
+      "version": "2.0.0"
+    },
+    "requires-port": {
+      "version": "1.0.0"
+    },
+    "resolve": {
+      "version": "1.18.1",
+      "requires": {
+        "is-core-module": "^2.0.0",
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "3.0.0",
+      "requires": {
+        "resolve-from": "^5.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "5.0.0"
+    },
+    "resolve-pathname": {
+      "version": "3.0.0"
+    },
+    "resolve-url": {
+      "version": "0.2.1"
+    },
+    "resolve-url-loader": {
+      "version": "3.1.4",
+      "requires": {
+        "adjust-sourcemap-loader": "3.0.0",
+        "camelcase": "5.3.1",
+        "compose-function": "3.0.3",
+        "convert-source-map": "1.7.0",
+        "es6-iterator": "2.0.3",
+        "loader-utils": "1.2.3",
+        "postcss": "7.0.36",
+        "rework": "1.0.1",
+        "rework-visit": "1.0.0",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1"
+        },
+        "convert-source-map": {
+          "version": "1.7.0",
+          "requires": {
+            "safe-buffer": "~5.1.1"
+          }
+        },
+        "emojis-list": {
+          "version": "2.1.0"
+        },
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.2.3",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^2.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
+    "ret": {
+      "version": "0.1.15"
+    },
+    "retry": {
+      "version": "0.12.0"
+    },
+    "reusify": {
+      "version": "1.0.4"
+    },
+    "rework": {
+      "version": "1.0.1",
+      "requires": {
+        "convert-source-map": "^0.3.3",
+        "css": "^2.0.0"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "0.3.5"
+        },
+        "css": {
+          "version": "2.2.4",
+          "requires": {
+            "inherits": "^2.0.3",
+            "source-map": "^0.6.1",
+            "source-map-resolve": "^0.5.2",
+            "urix": "^0.1.0"
+          }
+        },
+        "source-map-resolve": {
+          "version": "0.5.3",
+          "requires": {
+            "atob": "^2.1.2",
+            "decode-uri-component": "^0.2.0",
+            "resolve-url": "^0.2.1",
+            "source-map-url": "^0.4.0",
+            "urix": "^0.1.0"
+          }
+        }
+      }
+    },
+    "rework-visit": {
+      "version": "1.0.0"
+    },
+    "rgb-regex": {
+      "version": "1.0.1"
+    },
+    "rgba-regex": {
+      "version": "1.0.0"
+    },
+    "rimraf": {
+      "version": "3.0.2",
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "rollup": {
+      "version": "1.32.1",
+      "requires": {
+        "@types/estree": "*",
+        "@types/node": "*",
+        "acorn": "^7.1.0"
+      }
+    },
+    "rollup-plugin-babel": {
+      "version": "4.4.0",
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "rollup-pluginutils": "^2.8.1"
+      }
+    },
+    "rollup-plugin-terser": {
+      "version": "5.3.1",
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "jest-worker": "^24.9.0",
+        "rollup-pluginutils": "^2.8.2",
+        "serialize-javascript": "^4.0.0",
+        "terser": "^4.6.2"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "jest-worker": {
+          "version": "24.9.0",
+          "requires": {
+            "merge-stream": "^2.0.0",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "serialize-javascript": {
+          "version": "4.0.0",
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "rollup-pluginutils": {
+      "version": "2.8.2",
+      "requires": {
+        "estree-walker": "^0.6.1"
+      },
+      "dependencies": {
+        "estree-walker": {
+          "version": "0.6.1"
+        }
+      }
+    },
+    "rsvp": {
+      "version": "4.8.5"
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2"
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2"
+    },
+    "sane": {
+      "version": "4.1.0",
+      "requires": {
+        "@cnakazawa/watch": "^1.0.3",
+        "anymatch": "^2.0.0",
+        "capture-exit": "^2.0.0",
+        "exec-sh": "^0.3.2",
+        "execa": "^1.0.0",
+        "fb-watchman": "^2.0.0",
+        "micromatch": "^3.1.4",
+        "minimist": "^1.1.1",
+        "walker": "~1.0.5"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          }
+        },
+        "braces": {
+          "version": "2.3.2",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-stream": {
+          "version": "1.1.0"
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "normalize-path": {
+          "version": "2.1.1",
+          "requires": {
+            "remove-trailing-separator": "^1.0.1"
+          }
+        },
+        "npm-run-path": {
+          "version": "2.0.2",
+          "requires": {
+            "path-key": "^2.0.0"
+          }
+        },
+        "path-key": {
+          "version": "2.0.1"
+        },
+        "semver": {
+          "version": "5.7.1"
+        },
+        "shebang-command": {
+          "version": "1.2.0",
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0"
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "which": {
+          "version": "1.3.1",
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "sanitize.css": {
+      "version": "10.0.0"
+    },
+    "sass-loader": {
+      "version": "10.2.0",
+      "requires": {
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.0.0",
+        "semver": "^7.3.2"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.0.0",
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
+      }
+    },
+    "sax": {
+      "version": "1.2.4"
+    },
+    "saxes": {
+      "version": "5.0.1",
+      "requires": {
+        "xmlchars": "^2.2.0"
+      }
+    },
+    "scheduler": {
+      "version": "0.20.2",
+      "requires": {
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
+      }
+    },
+    "schema-utils": {
+      "version": "2.7.1",
+      "requires": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0"
+    },
+    "selfsigned": {
+      "version": "1.10.11",
+      "requires": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "semver": {
+      "version": "7.3.2"
+    },
+    "send": {
+      "version": "0.17.1",
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0"
+            }
+          }
+        },
+        "ms": {
+          "version": "2.1.1"
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "5.0.1",
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "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"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3"
+        },
+        "ms": {
+          "version": "2.0.0"
+        },
+        "setprototypeof": {
+          "version": "1.1.0"
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0"
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5"
+    },
+    "setprototypeof": {
+      "version": "1.1.1"
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shebang-command": {
+      "version": "2.0.0",
+      "requires": {
+        "shebang-regex": "^3.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "3.0.0"
+    },
+    "shell-quote": {
+      "version": "1.7.2"
+    },
+    "shellwords": {
+      "version": "0.1.1",
+      "optional": true
+    },
+    "side-channel": {
+      "version": "1.0.4",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.3"
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2"
+        }
+      }
+    },
+    "sisteransi": {
+      "version": "1.0.5"
+    },
+    "slash": {
+      "version": "3.0.0"
+    },
+    "slice-ansi": {
+      "version": "4.0.0",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      }
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "kind-of": {
+          "version": "5.1.0"
+        },
+        "ms": {
+          "version": "2.0.0"
+        },
+        "source-map": {
+          "version": "0.5.7"
+        },
+        "source-map-resolve": {
+          "version": "0.5.3",
+          "requires": {
+            "atob": "^2.1.2",
+            "decode-uri-component": "^0.2.0",
+            "resolve-url": "^0.2.1",
+            "source-map-url": "^0.4.0",
+            "urix": "^0.1.0"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.21",
+      "requires": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^3.4.0",
+        "websocket-driver": "^0.7.4"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "3.4.0"
+        }
+      }
+    },
+    "sockjs-client": {
+      "version": "1.5.1",
+      "requires": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "1.1.2",
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1"
+    },
+    "source-map": {
+      "version": "0.6.1"
+    },
+    "source-map-js": {
+      "version": "0.6.2"
+    },
+    "source-map-support": {
+      "version": "0.5.19",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.1"
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8"
+    },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0"
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.9"
+    },
+    "spdy": {
+      "version": "4.0.2",
+      "requires": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      }
+    },
+    "spdy-transport": {
+      "version": "3.0.0",
+      "requires": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3"
+    },
+    "ssri": {
+      "version": "8.0.1",
+      "requires": {
+        "minipass": "^3.1.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8"
+    },
+    "stack-utils": {
+      "version": "2.0.3",
+      "requires": {
+        "escape-string-regexp": "^2.0.0"
+      },
+      "dependencies": {
+        "escape-string-regexp": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "stackframe": {
+      "version": "1.2.0"
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0"
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0"
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.1"
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0"
+    },
+    "string_decoder": {
+      "version": "1.3.0",
+      "requires": {
+        "safe-buffer": "~5.2.0"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.2.1"
+        }
+      }
+    },
+    "string-length": {
+      "version": "4.0.2",
+      "requires": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "string-natural-compare": {
+      "version": "3.0.1"
+    },
+    "string-width": {
+      "version": "4.2.2",
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "8.0.0"
+        }
+      }
+    },
+    "string.prototype.matchall": {
+      "version": "4.0.5",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.18.2",
+        "get-intrinsic": "^1.1.1",
+        "has-symbols": "^1.0.2",
+        "internal-slot": "^1.0.3",
+        "regexp.prototype.flags": "^1.3.1",
+        "side-channel": "^1.0.4"
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "stringify-object": {
+      "version": "3.3.0",
+      "requires": {
+        "get-own-enumerable-property-symbols": "^3.0.0",
+        "is-obj": "^1.0.1",
+        "is-regexp": "^1.0.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.0",
+      "requires": {
+        "ansi-regex": "^5.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "4.0.0"
+    },
+    "strip-comments": {
+      "version": "1.0.2",
+      "requires": {
+        "babel-extract-comments": "^1.0.0",
+        "babel-plugin-transform-object-rest-spread": "^6.26.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0"
+    },
+    "strip-final-newline": {
+      "version": "2.0.0"
+    },
+    "strip-json-comments": {
+      "version": "3.1.1"
+    },
+    "style-loader": {
+      "version": "1.3.0",
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0"
+      }
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "supports-color": {
+      "version": "7.2.0",
+      "requires": {
+        "has-flag": "^4.0.0"
+      }
+    },
+    "supports-hyperlinks": {
+      "version": "2.2.0",
+      "requires": {
+        "has-flag": "^4.0.0",
+        "supports-color": "^7.0.0"
+      }
+    },
+    "svg-parser": {
+      "version": "2.0.4"
+    },
+    "svgo": {
+      "version": "1.3.2",
+      "requires": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.37",
+        "csso": "^4.0.2",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "css-select": {
+          "version": "2.1.0",
+          "requires": {
+            "boolbase": "^1.0.0",
+            "css-what": "^3.2.1",
+            "domutils": "^1.7.0",
+            "nth-check": "^1.0.2"
+          }
+        },
+        "css-what": {
+          "version": "3.4.2"
+        },
+        "dom-serializer": {
+          "version": "0.2.2",
+          "requires": {
+            "domelementtype": "^2.0.1",
+            "entities": "^2.0.0"
+          }
+        },
+        "domutils": {
+          "version": "1.7.0",
+          "requires": {
+            "dom-serializer": "0",
+            "domelementtype": "1"
+          },
+          "dependencies": {
+            "domelementtype": {
+              "version": "1.3.1"
+            }
+          }
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5"
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "nth-check": {
+          "version": "1.0.2",
+          "requires": {
+            "boolbase": "~1.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "symbol-tree": {
+      "version": "3.2.4"
+    },
+    "table": {
+      "version": "6.7.1",
+      "requires": {
+        "ajv": "^8.0.1",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "8.6.0",
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "json-schema-traverse": "^1.0.0",
+            "require-from-string": "^2.0.2",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "json-schema-traverse": {
+          "version": "1.0.0"
+        }
+      }
+    },
+    "tapable": {
+      "version": "1.1.3"
+    },
+    "tar": {
+      "version": "6.1.0",
+      "requires": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4"
+        }
+      }
+    },
+    "temp-dir": {
+      "version": "1.0.0"
+    },
+    "tempy": {
+      "version": "0.3.0",
+      "requires": {
+        "temp-dir": "^1.0.0",
+        "type-fest": "^0.3.1",
+        "unique-string": "^1.0.0"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.3.1"
+        }
+      }
+    },
+    "terminal-link": {
+      "version": "2.1.1",
+      "requires": {
+        "ansi-escapes": "^4.2.1",
+        "supports-hyperlinks": "^2.0.0"
+      }
+    },
+    "terser": {
+      "version": "4.8.0",
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3"
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "4.2.3",
+      "requires": {
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "jest-worker": "^26.5.0",
+        "p-limit": "^3.0.2",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^5.0.1",
+        "source-map": "^0.6.1",
+        "terser": "^5.3.4",
+        "webpack-sources": "^1.4.3"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3"
+        },
+        "find-cache-dir": {
+          "version": "3.3.1",
+          "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^3.0.2",
+            "pkg-dir": "^4.1.0"
+          }
+        },
+        "make-dir": {
+          "version": "3.1.0",
+          "requires": {
+            "semver": "^6.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "pkg-dir": {
+          "version": "4.2.0",
+          "requires": {
+            "find-up": "^4.0.0"
+          }
+        },
+        "schema-utils": {
+          "version": "3.0.0",
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
+        "semver": {
+          "version": "6.3.0"
+        },
+        "terser": {
+          "version": "5.7.1",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.7.2",
+            "source-map-support": "~0.5.19"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.7.3"
+            }
+          }
+        }
+      }
+    },
+    "test-exclude": {
+      "version": "6.0.0",
+      "requires": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "text-table": {
+      "version": "0.2.0"
+    },
+    "throat": {
+      "version": "5.0.0"
+    },
+    "through2": {
+      "version": "2.0.5",
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.1.0"
+    },
+    "timers-browserify": {
+      "version": "2.0.12",
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0"
+    },
+    "tiny-invariant": {
+      "version": "1.1.0"
+    },
+    "tiny-warning": {
+      "version": "1.0.3"
+    },
+    "tmpl": {
+      "version": "1.0.4"
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1"
+    },
+    "to-fast-properties": {
+      "version": "2.0.0"
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0"
+    },
+    "tough-cookie": {
+      "version": "4.0.0",
+      "requires": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.1.2"
+      },
+      "dependencies": {
+        "universalify": {
+          "version": "0.1.2"
+        }
+      }
+    },
+    "tr46": {
+      "version": "2.1.0",
+      "requires": {
+        "punycode": "^2.1.1"
+      }
+    },
+    "tryer": {
+      "version": "1.0.1"
+    },
+    "ts-pnp": {
+      "version": "1.2.0"
+    },
+    "tsconfig-paths": {
+      "version": "3.9.0",
+      "requires": {
+        "@types/json5": "^0.0.29",
+        "json5": "^1.0.1",
+        "minimist": "^1.2.0",
+        "strip-bom": "^3.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0"
+        }
+      }
+    },
+    "tslib": {
+      "version": "2.3.0"
+    },
+    "tsutils": {
+      "version": "3.21.0",
+      "requires": {
+        "tslib": "^1.8.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1"
+        }
+      }
+    },
+    "tty-browserify": {
+      "version": "0.0.0"
+    },
+    "type": {
+      "version": "1.2.0"
+    },
+    "type-check": {
+      "version": "0.4.0",
+      "requires": {
+        "prelude-ls": "^1.2.1"
+      }
+    },
+    "type-detect": {
+      "version": "4.0.8"
+    },
+    "type-fest": {
+      "version": "0.21.3"
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6"
+    },
+    "typedarray-to-buffer": {
+      "version": "3.1.5",
+      "requires": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "typescript": {
+      "version": "4.3.4",
+      "peer": true
+    },
+    "unbox-primitive": {
+      "version": "1.0.1",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4"
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.2.0"
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.1.0"
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "0.1.1"
+        }
+      }
+    },
+    "uniq": {
+      "version": "1.0.1"
+    },
+    "uniqs": {
+      "version": "2.0.0"
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unique-string": {
+      "version": "1.0.0",
+      "requires": {
+        "crypto-random-string": "^1.0.0"
+      }
+    },
+    "universalify": {
+      "version": "2.0.0"
+    },
+    "unpipe": {
+      "version": "1.0.0"
+    },
+    "unquote": {
+      "version": "1.1.1"
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4"
+        },
+        "isarray": {
+          "version": "1.0.0"
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0"
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0"
+    },
+    "url": {
+      "version": "0.11.0",
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2"
+        },
+        "querystring": {
+          "version": "0.2.0"
+        }
+      }
+    },
+    "url-loader": {
+      "version": "4.1.1",
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "mime-types": "^2.1.27",
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.0.0",
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.5.1",
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "use": {
+      "version": "3.1.1"
+    },
+    "util": {
+      "version": "0.11.1",
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3"
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2"
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0"
+    },
+    "utils-merge": {
+      "version": "1.0.1"
+    },
+    "uuid": {
+      "version": "8.3.2",
+      "optional": true
+    },
+    "v8-compile-cache": {
+      "version": "2.3.0"
+    },
+    "v8-to-istanbul": {
+      "version": "7.1.2",
+      "requires": {
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^1.6.0",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.7.3"
+        }
+      }
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "value-equal": {
+      "version": "1.0.1"
+    },
+    "vary": {
+      "version": "1.1.2"
+    },
+    "vendors": {
+      "version": "1.0.4"
+    },
+    "vm-browserify": {
+      "version": "1.1.2"
+    },
+    "w3c-hr-time": {
+      "version": "1.0.2",
+      "requires": {
+        "browser-process-hrtime": "^1.0.0"
+      }
+    },
+    "w3c-xmlserializer": {
+      "version": "2.0.0",
+      "requires": {
+        "xml-name-validator": "^3.0.0"
+      }
+    },
+    "walker": {
+      "version": "1.0.7",
+      "requires": {
+        "makeerror": "1.0.x"
+      }
+    },
+    "watchpack": {
+      "version": "1.7.5",
+      "requires": {
+        "chokidar": "^3.4.1",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.1"
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.1",
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "optional": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "optional": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "optional": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "optional": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "optional": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "optional": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "optional": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "optional": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "optional": true
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "optional": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "optional": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "optional": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "optional": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "optional": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        }
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "webidl-conversions": {
+      "version": "6.1.0"
+    },
+    "webpack": {
+      "version": "4.44.2",
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.3.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.2"
+        },
+        "braces": {
+          "version": "2.3.2",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "cacache": {
+          "version": "12.0.4",
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "chownr": {
+          "version": "1.1.4"
+        },
+        "eslint-scope": {
+          "version": "4.0.3",
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-wsl": {
+          "version": "1.1.0"
+        },
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "lru-cache": {
+          "version": "5.1.1",
+          "requires": {
+            "yallist": "^3.0.2"
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "serialize-javascript": {
+          "version": "4.0.0",
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        },
+        "ssri": {
+          "version": "6.0.2",
+          "requires": {
+            "figgy-pudding": "^3.5.1"
+          }
+        },
+        "terser-webpack-plugin": {
+          "version": "1.4.5",
+          "requires": {
+            "cacache": "^12.0.2",
+            "find-cache-dir": "^2.1.0",
+            "is-wsl": "^1.1.0",
+            "schema-utils": "^1.0.0",
+            "serialize-javascript": "^4.0.0",
+            "source-map": "^0.6.1",
+            "terser": "^4.1.2",
+            "webpack-sources": "^1.4.0",
+            "worker-farm": "^1.7.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "yallist": {
+          "version": "3.1.1"
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.3",
+      "requires": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.5.2"
+        }
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.11.1",
+      "requires": {
+        "ansi-html": "0.0.7",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
+        "http-proxy-middleware": "0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.8",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1"
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1"
+        },
+        "braces": {
+          "version": "2.3.2",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "camelcase": {
+          "version": "5.3.1"
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "cliui": {
+          "version": "5.0.0",
+          "requires": {
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0"
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3"
+        },
+        "emoji-regex": {
+          "version": "7.0.3"
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0"
+        },
+        "import-local": {
+          "version": "2.0.0",
+          "requires": {
+            "pkg-dir": "^3.0.0",
+            "resolve-cwd": "^2.0.0"
+          }
+        },
+        "is-absolute-url": {
+          "version": "3.0.3"
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1"
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0"
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0"
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        },
+        "resolve-cwd": {
+          "version": "2.0.0",
+          "requires": {
+            "resolve-from": "^3.0.0"
+          }
+        },
+        "resolve-from": {
+          "version": "3.0.0"
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0"
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0"
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0"
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.2",
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      },
+      "dependencies": {
+        "ansi-colors": {
+          "version": "3.2.4"
+        },
+        "uuid": {
+          "version": "3.4.0"
+        }
+      }
+    },
+    "webpack-manifest-plugin": {
+      "version": "2.2.0",
+      "requires": {
+        "fs-extra": "^7.0.0",
+        "lodash": ">=3.5 <5",
+        "object.entries": "^1.1.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "7.0.1",
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "jsonfile": {
+          "version": "4.0.0",
+          "requires": {
+            "graceful-fs": "^4.1.6"
+          }
+        },
+        "universalify": {
+          "version": "0.1.2"
+        }
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.4",
+      "requires": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.4"
+    },
+    "whatwg-encoding": {
+      "version": "1.0.5",
+      "requires": {
+        "iconv-lite": "0.4.24"
+      }
+    },
+    "whatwg-fetch": {
+      "version": "3.6.2"
+    },
+    "whatwg-mimetype": {
+      "version": "2.3.0"
+    },
+    "whatwg-url": {
+      "version": "8.7.0",
+      "requires": {
+        "lodash": "^4.7.0",
+        "tr46": "^2.1.0",
+        "webidl-conversions": "^6.1.0"
+      }
+    },
+    "which": {
+      "version": "2.0.2",
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "requires": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0"
+    },
+    "word-wrap": {
+      "version": "1.2.3"
+    },
+    "workbox-background-sync": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-broadcast-update": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-build": {
+      "version": "5.1.4",
+      "requires": {
+        "@babel/core": "^7.8.4",
+        "@babel/preset-env": "^7.8.4",
+        "@babel/runtime": "^7.8.4",
+        "@hapi/joi": "^15.1.0",
+        "@rollup/plugin-node-resolve": "^7.1.1",
+        "@rollup/plugin-replace": "^2.3.1",
+        "@surma/rollup-plugin-off-main-thread": "^1.1.1",
+        "common-tags": "^1.8.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "fs-extra": "^8.1.0",
+        "glob": "^7.1.6",
+        "lodash.template": "^4.5.0",
+        "pretty-bytes": "^5.3.0",
+        "rollup": "^1.31.1",
+        "rollup-plugin-babel": "^4.3.3",
+        "rollup-plugin-terser": "^5.3.1",
+        "source-map": "^0.7.3",
+        "source-map-url": "^0.4.0",
+        "stringify-object": "^3.3.0",
+        "strip-comments": "^1.0.2",
+        "tempy": "^0.3.0",
+        "upath": "^1.2.0",
+        "workbox-background-sync": "^5.1.4",
+        "workbox-broadcast-update": "^5.1.4",
+        "workbox-cacheable-response": "^5.1.4",
+        "workbox-core": "^5.1.4",
+        "workbox-expiration": "^5.1.4",
+        "workbox-google-analytics": "^5.1.4",
+        "workbox-navigation-preload": "^5.1.4",
+        "workbox-precaching": "^5.1.4",
+        "workbox-range-requests": "^5.1.4",
+        "workbox-routing": "^5.1.4",
+        "workbox-strategies": "^5.1.4",
+        "workbox-streams": "^5.1.4",
+        "workbox-sw": "^5.1.4",
+        "workbox-window": "^5.1.4"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "8.1.0",
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "jsonfile": {
+          "version": "4.0.0",
+          "requires": {
+            "graceful-fs": "^4.1.6"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3"
+        },
+        "universalify": {
+          "version": "0.1.2"
+        }
+      }
+    },
+    "workbox-cacheable-response": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-core": {
+      "version": "5.1.4"
+    },
+    "workbox-expiration": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-google-analytics": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-background-sync": "^5.1.4",
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4",
+        "workbox-strategies": "^5.1.4"
+      }
+    },
+    "workbox-navigation-preload": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-precaching": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-range-requests": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-routing": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "workbox-strategies": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4"
+      }
+    },
+    "workbox-streams": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4",
+        "workbox-routing": "^5.1.4"
+      }
+    },
+    "workbox-sw": {
+      "version": "5.1.4"
+    },
+    "workbox-webpack-plugin": {
+      "version": "5.1.4",
+      "requires": {
+        "@babel/runtime": "^7.5.5",
+        "fast-json-stable-stringify": "^2.0.0",
+        "source-map-url": "^0.4.0",
+        "upath": "^1.1.2",
+        "webpack-sources": "^1.3.0",
+        "workbox-build": "^5.1.4"
+      }
+    },
+    "workbox-window": {
+      "version": "5.1.4",
+      "requires": {
+        "workbox-core": "^5.1.4"
+      }
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "worker-rpc": {
+      "version": "0.1.1",
+      "requires": {
+        "microevent.ts": "~0.1.1"
+      }
+    },
+    "wrap-ansi": {
+      "version": "6.2.0",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2"
+    },
+    "write-file-atomic": {
+      "version": "3.0.3",
+      "requires": {
+        "imurmurhash": "^0.1.4",
+        "is-typedarray": "^1.0.0",
+        "signal-exit": "^3.0.2",
+        "typedarray-to-buffer": "^3.1.5"
+      }
+    },
+    "ws": {
+      "version": "7.5.1",
+      "requires": {}
+    },
+    "xml-name-validator": {
+      "version": "3.0.0"
+    },
+    "xmlchars": {
+      "version": "2.2.0"
+    },
+    "xtend": {
+      "version": "4.0.2"
+    },
+    "y18n": {
+      "version": "4.0.3"
+    },
+    "yallist": {
+      "version": "4.0.0"
+    },
+    "yaml": {
+      "version": "1.10.2"
+    },
+    "yargs": {
+      "version": "15.4.1",
+      "requires": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      }
+    },
+    "yargs-parser": {
+      "version": "18.1.3",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1"
+        }
+      }
+    },
+    "yocto-queue": {
+      "version": "0.1.0"
+    }
+  }
+}
diff --git a/react-components/oodt_opsui_sample_app/package.json b/react-components/oodt_opsui_sample_app/package.json
new file mode 100644
index 0000000..38958c3
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/package.json
@@ -0,0 +1,42 @@
+{
+  "name": "oodt_opsui_sample_app",
+  "version": "0.1.0",
+  "private": true,
+  "dependencies": {
+    "@material-ui/core": "^4.11.4",
+    "@material-ui/icons": "^4.11.2",
+    "axios": "^0.21.1",
+    "clsx": "^1.1.1",
+    "notistack": "^1.0.10",
+    "prop-types": "^15.7.2",
+    "react": "^17.0.2",
+    "react-dom": "^17.0.2",
+    "react-router-dom": "^5.2.0",
+    "react-scripts": "^4.0.3"
+  },
+  "scripts": {
+    "start": "react-scripts start",
+    "build": "react-scripts build",
+    "test": "react-scripts test",
+    "eject": "react-scripts eject"
+  },
+  "eslintConfig": {
+    "extends": "react-app"
+  },
+  "browserslist": {
+    "production": [
+      ">0.2%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  },
+  "description": "ReactJs based OPSUI dashboard for Apache OODT",
+  "main": "index.js",
+  "author": "Apache Software Foundation",
+  "license": "Apache-2.0"
+}
diff --git a/react-components/oodt_opsui_sample_app/pom.xml b/react-components/oodt_opsui_sample_app/pom.xml
new file mode 100644
index 0000000..ccdead1
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more contributor
+  license agreements.  See the NOTICE.txt file distributed with this work for
+  additional information regarding copyright ownership.  The ASF licenses this
+  file to you under the Apache License, Version 2.0 (the "License"); you may not
+  use this file except in compliance with the License.  You may obtain a copy of
+  the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.oodt</groupId>
+        <artifactId>oodt-core</artifactId>
+        <version>1.10-SNAPSHOT</version>
+        <relativePath>../../core/pom.xml</relativePath>
+    </parent>
+    <artifactId>oodt-reactjs-opsui</artifactId>
+    <packaging>pom</packaging>
+    <name>OODT ReactJs OPSUI</name>
+    <description>OODT OPSUI implemented with ReactJs</description>
+
+    <properties>
+        <docker.build.disabled>false</docker.build.disabled>
+        <docker.image.name>oodt/opsui:latest</docker.image.name>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/public/favicon.ico b/react-components/oodt_opsui_sample_app/public/favicon.ico
new file mode 100644
index 0000000..b6b6c2c
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/public/favicon.ico
Binary files differ
diff --git a/react-components/oodt_opsui_sample_app/public/images/oodt_logo.png b/react-components/oodt_opsui_sample_app/public/images/oodt_logo.png
new file mode 100644
index 0000000..dda5ca2
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/public/images/oodt_logo.png
Binary files differ
diff --git a/react-components/oodt_opsui_sample_app/public/index.html b/react-components/oodt_opsui_sample_app/public/index.html
new file mode 100644
index 0000000..034dff1
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/public/index.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
+    <!--    <meta name="theme-color" content="#000000" />-->
+    <!--
+      manifest.json provides metadata used when your web app is installed on a
+      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
+    -->
+<!--    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />-->
+    <!--
+      Notice the use of %PUBLIC_URL% in the tags above.
+      It will be replaced with the URL of the `public` folder during the build.
+      Only files inside the `public` folder can be referenced from the HTML.
+
+      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
+      work correctly both with client-side routing and a non-root public URL.
+      Learn how to configure a non-root public URL by running `npm run build`.
+    -->
+    <title>OODT OPSUI</title>
+  </head>
+  <body>
+    <noscript>You need to enable JavaScript to run this app.</noscript>
+    <div id="root"></div>
+    <!--
+      This HTML file is a template.
+      If you open it directly in the browser, you will see an empty page.
+
+      You can add webfonts, meta tags, or analytics to this file.
+      The build step will place the bundled scripts into the <body> tag.
+
+      To begin the development, run `npm start` or `yarn start`.
+      To create a production bundle, use `npm run build` or `yarn build`.
+    -->
+  </body>
+</html>
diff --git a/react-components/oodt_opsui_sample_app/public/manifest.json b/react-components/oodt_opsui_sample_app/public/manifest.json
new file mode 100644
index 0000000..1f2f141
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/public/manifest.json
@@ -0,0 +1,15 @@
+{
+  "short_name": "React App",
+  "name": "Create React App Sample",
+  "icons": [
+    {
+      "src": "favicon.ico",
+      "sizes": "64x64 32x32 24x24 16x16",
+      "type": "image/x-icon"
+    }
+  ],
+  "start_url": ".",
+  "display": "standalone",
+  "theme_color": "#000000",
+  "background_color": "#ffffff"
+}
diff --git a/react-components/oodt_opsui_sample_app/src/App.js b/react-components/oodt_opsui_sample_app/src/App.js
new file mode 100644
index 0000000..0522ea9
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/App.js
@@ -0,0 +1,71 @@
+import React, {Component} from "react";
+import {BrowserRouter, Route, Switch} from "react-router-dom";
+import { SnackbarProvider } from 'notistack';
+import OPSUIHome from "./components/OPSUIHome";
+import ComponentStatus from "./components/ComponentStatus";
+import {WorkflowList} from "./components/workflowManager";
+import {ProductIngest, ProductIngestWithMetaFile, ProductList} from "./components/fileManager";
+
+class MyApp extends Component {
+  render() {
+    return (
+      <BrowserRouter>
+        <SnackbarProvider
+          maxSnack={3}
+          autoHideDuration={3000}
+          anchorOrigin={{
+            vertical: "top",
+            horizontal: "center",
+          }}
+        >
+          <OPSUIHome>
+            <Switch>
+              <Route
+                exact
+                path={"/"}
+                render={() => (
+                  <div>
+                    <h1>Dashboard</h1>
+                    <ComponentStatus />
+                  </div>
+                )}
+              />
+
+              <Route
+                path={"/products"}
+                render={(props) => (
+                  <ProductList
+                    selectedProductId={this.setSelectedProductId}
+                    {...props}
+                  />
+                )}
+              />
+
+              <Route
+                path={"/productIngest"}
+                render={() => (
+                  <div>
+                    <ProductIngest />
+                    <br />
+                    <ProductIngestWithMetaFile />
+                  </div>
+                )}
+              />
+
+              <Route
+                path={"/workflows"}
+                render={() => (
+                  <div>
+                    <WorkflowList />
+                  </div>
+                )}
+              />
+            </Switch>
+          </OPSUIHome>
+        </SnackbarProvider>
+      </BrowserRouter>
+    );
+  }
+}
+
+export default MyApp;
diff --git a/react-components/oodt_opsui_sample_app/src/App.test.js b/react-components/oodt_opsui_sample_app/src/App.test.js
new file mode 100644
index 0000000..a754b20
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/App.test.js
@@ -0,0 +1,9 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import App from './App';
+
+it('renders without crashing', () => {
+  const div = document.createElement('div');
+  ReactDOM.render(<App />, div);
+  ReactDOM.unmountComponentAtNode(div);
+});
diff --git a/react-components/oodt_opsui_sample_app/src/components/ComponentStatus.js b/react-components/oodt_opsui_sample_app/src/components/ComponentStatus.js
new file mode 100644
index 0000000..a7dbced
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/ComponentStatus.js
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, {Component} from "react";
+import Grid from "@material-ui/core/Grid";
+import Chip from "@material-ui/core/Chip";
+import Typography from "@material-ui/core/Typography";
+import {Paper, withStyles} from "@material-ui/core";
+import {fmconnection,wmconnection} from "constants/connection"
+
+const styles = theme => ({
+  root: {
+    flexGrow: 1,
+  },
+  paper: {
+    padding: theme.spacing(2),
+    textAlign: 'left'
+  },
+  grid: {
+    padding: theme.spacing(2)
+  },
+  chip: {
+    margin: theme.spacing(1),
+    textAlign: 'center'
+  },
+  online: {
+    color: 'white',
+    backgroundColor: 'green'
+  },
+  offline: {
+    color: 'white',
+    backgroundColor: 'red'
+  }
+});
+
+class ComponentStatus extends Component {
+
+  state = {
+    fmAvailable: false,
+    wmAvailable: false
+  };
+
+  constructor(props) {
+    super(props);
+    this.handleChange = this.handleChange.bind(this);
+  }
+
+  componentDidMount() {
+    this.handleChange();
+  }
+
+  handleChange() {
+    fmconnection.get("/fmprodstatus")
+    .then(result => {
+      if (result.data.FMStatus.serverUp) {
+        this.setState({fmAvailable: true});
+      } else {
+        this.setState({fmAvailable: false});
+      }
+    })
+    .catch(error => {
+      console.error("Unable to get file manager status", error);
+    });
+
+    wmconnection.get("/workflow/status")
+    .then(result => {
+      if (result.data.WorkflowManagerStatus.serverUp) {
+        this.setState({wmAvailable: true});
+      } else {
+        this.setState({wmAvailable: false});
+      }
+    })
+    .catch(error => {
+      console.error("Unable to get workflow manager status", error);
+    });
+  };
+
+  render() {
+    const {classes} = this.props;
+
+    return (
+        <div className={classes.root}>
+          <Grid container spacing={2}>
+            <Grid item xs={2}/>
+            <Grid item xs={8}>
+              <Paper className={classes.paper}>
+                <Grid container>
+                  <Grid item xs={8}>
+                    <Typography variant="h6">File Manager Status</Typography>
+                  </Grid>
+                  <Grid item xs={4} style={{textAlign: 'center'}}>
+                    <Chip label={this.state.fmAvailable ? 'Online' : 'Offline'}
+                          className={this.state.fmAvailable ? classes.online : classes.offline}/>
+                  </Grid>
+                </Grid>
+              </Paper>
+            </Grid>
+            <Grid item xs={2}/>
+
+            <Grid item xs={2}/>
+            <Grid item xs={8}>
+              <Paper className={classes.paper}>
+                <Grid container>
+                  <Grid item xs={8}>
+                    <Typography variant="h6">Workflow Manager Status</Typography>
+                  </Grid>
+                  <Grid item xs={4} style={{textAlign: 'center'}}>
+                    <Chip label={this.state.wmAvailable ? 'Online' : 'Offline'}
+                          className={this.state.wmAvailable ? classes.online : classes.offline}/>
+                  </Grid>
+                </Grid>
+              </Paper>
+            </Grid>
+            <Grid item xs={2}/>
+          </Grid>
+        </div>
+    )
+  }
+}
+
+export default withStyles(styles)(ComponentStatus);
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/OPSUIHome.js b/react-components/oodt_opsui_sample_app/src/components/OPSUIHome.js
new file mode 100644
index 0000000..ad20e2e
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/OPSUIHome.js
@@ -0,0 +1,215 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React from 'react';
+import clsx from 'clsx';
+import {withStyles} from '@material-ui/core/styles';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import Drawer from '@material-ui/core/Drawer';
+import AppBar from '@material-ui/core/AppBar';
+import Toolbar from '@material-ui/core/Toolbar';
+import List from '@material-ui/core/List';
+import Typography from '@material-ui/core/Typography';
+import Divider from '@material-ui/core/Divider';
+import IconButton from '@material-ui/core/IconButton';
+import Container from '@material-ui/core/Container';
+import MenuIcon from '@material-ui/icons/Menu';
+import {fmMenuListItems,wmMenuListItems} from './listItems';
+import ChevronLeftIcon from '@material-ui/icons/ChevronLeft';
+import {Link} from "react-router-dom";
+import ListItem from "@material-ui/core/ListItem";
+import ListItemIcon from "@material-ui/core/ListItemIcon";
+import DashboardIcon from "@material-ui/icons/Dashboard";
+import ListItemText from "@material-ui/core/ListItemText";
+import PropTypes from "prop-types";
+
+const drawerWidth = 240;
+
+const styles = (theme => ({
+    root: {
+        display: 'flex',
+    },
+    toolbar: {
+        paddingRight: 24
+    },
+    toolbarIcon: {
+        display: 'flex',
+        alignItems: 'center',
+        justifyContent: 'flex-end',
+        padding: '0 8px',
+        ...theme.mixins.toolbar,
+    },
+    appBar: {
+        zIndex: theme.zIndex.drawer + 1,
+        transition: theme.transitions.create(['width', 'margin'], {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.leavingScreen,
+        }),
+        backgroundColor: "#1a1a59"
+    },
+    appBarShift: {
+        marginLeft: drawerWidth,
+        width: `calc(100% - ${drawerWidth}px)`,
+        transition: theme.transitions.create(['width', 'margin'], {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.enteringScreen,
+        }),
+    },
+    menuButton: {
+        marginRight: 36,
+    },
+    menuButtonHidden: {
+        display: 'none',
+    },
+    title: {
+        flexGrow: 1,
+    },
+    drawerPaper: {
+        position: 'relative',
+        whiteSpace: 'nowrap',
+        width: drawerWidth,
+        transition: theme.transitions.create('width', {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.enteringScreen,
+        }),
+    },
+    drawerPaperClose: {
+        overflowX: 'hidden',
+        transition: theme.transitions.create('width', {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.leavingScreen,
+        }),
+        width: theme.spacing(7),
+        [theme.breakpoints.up('sm')]: {
+            width: theme.spacing(9),
+        },
+    },
+    appBarSpacer: theme.mixins.toolbar,
+    content: {
+        flexGrow: 1,
+        height: '100vh',
+        overflow: 'auto',
+    },
+    container: {
+        paddingTop: theme.spacing(4),
+        paddingBottom: theme.spacing(4),
+    },
+    paper: {
+        padding: theme.spacing(2),
+        display: 'flex',
+        overflow: 'auto',
+        flexDirection: 'column',
+    },
+    fixedHeight: {
+        height: 'auto',
+    },
+    logo: {
+        color: 'blue',
+        textAlign: 'center'
+    },
+    button: {
+        color: 'yellow',
+    },
+}));
+
+
+class OPSUIHome extends React.Component {
+
+    constructor(props) {
+        super(props);
+        this.state = {
+            open: true,
+        };
+    }
+
+    handleDrawerOpen = () => {
+        this.setState({open: true});
+    };
+
+    handleDrawerClose = () => {
+        this.setState({open: false});
+    };
+
+    render() {
+        const {classes} = this.props;
+
+        return (
+            <div className={classes.root}>
+                <CssBaseline/>
+                <AppBar position="absolute" className={clsx(classes.appBar, this.state.open && classes.appBarShift)}>
+                    <Toolbar className={classes.toolbar}>
+                        <IconButton
+                            edge="start"
+                            color="inherit"
+                            aria-label="Open drawer"
+                            onClick={this.handleDrawerOpen}
+                            className={clsx(classes.menuButton, this.state.open && classes.menuButtonHidden)}
+                        >
+                            <MenuIcon/>
+                        </IconButton>
+                        <Typography component="h1" variant="h6" color="inherit" noWrap className={classes.title}>
+                            Apache OODT - OPSUI
+                        </Typography>
+                    </Toolbar>
+                </AppBar>
+                <Drawer variant="permanent" className={classes.logo}
+                        classes={{paper: clsx(classes.drawerPaper, !this.state.open && classes.drawerPaperClose),}}
+                        open={this.state.open}>
+                    <div>
+                        <IconButton onClick={this.handleDrawerClose}>
+                            <div>
+                                <img src="/images/oodt_logo.png" alt="Apache OODT Logo" width="110px"/>
+                            </div>
+                            <ChevronLeftIcon/>
+                        </IconButton>
+                    </div>
+
+                    <List>
+                        <div>
+                            <ListItem button component={Link} to={"/"} >
+                                <ListItemIcon>
+                                    <DashboardIcon/>
+                                </ListItemIcon>
+                                <ListItemText primary="Dashboard"/>
+                            </ListItem>
+                        </div>
+                    </List>
+                    <Divider/>
+
+                    {/*FileManager Menu List*/}
+                    <List>{fmMenuListItems}</List>
+                    <Divider/>
+
+                    {/*Workflow Manager Menu List*/}
+                    <List>{wmMenuListItems}</List>
+                </Drawer>
+                <main className={classes.content}>
+                    <div className={classes.appBarSpacer}/>
+                    <Container maxWidth="lg" className={classes.container}>
+                        {this.props.children}
+                    </Container>
+                </main>
+            </div>
+        );
+    }
+}
+
+OPSUIHome.propTypes = {
+    classes: PropTypes.object.isRequired,
+};
+
+export default withStyles(styles)(OPSUIHome);
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/ProgressBar.js b/react-components/oodt_opsui_sample_app/src/components/ProgressBar.js
new file mode 100644
index 0000000..8557ca5
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/ProgressBar.js
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React, { Component } from "react";
+import LinearProgress from "@material-ui/core/LinearProgress";
+import Typography from "@material-ui/core/Typography";
+import Box from "@material-ui/core/Box";
+
+class ProgressBar extends Component {
+  render() {
+    return (
+      <Box display="flex" alignItems="center" ml={3}>
+        <Box width="100%" mr={1}>
+          <LinearProgress
+            variant="determinate"
+            style={{ width: "10vw" }}
+            {...this.props}
+          />
+        </Box>
+        <Box minWidth={35}>
+          <Typography variant="body2" color="textSecondary">{`${Math.round(
+            this.props.value
+          )}%`}</Typography>
+        </Box>
+      </Box>
+    );
+  }
+}
+
+export default ProgressBar;
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/Product.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/Product.js
new file mode 100644
index 0000000..3e62d6b
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/Product.js
@@ -0,0 +1,275 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import Card from "@material-ui/core/Card";
+import CardContent from "@material-ui/core/CardContent";
+import Button from "@material-ui/core/Button";
+import Typography from "@material-ui/core/Typography";
+import { withStyles } from "@material-ui/core";
+import PropTypes from "prop-types";
+import * as fmservice from "services/fmservice"
+import Grid from "@material-ui/core/Grid";
+import CloudDownloadIcon from '@material-ui/icons/CloudDownload';
+import DeleteIcon from '@material-ui/icons/Delete';
+import { withSnackbar } from 'notistack';
+import CloseIcon from "@material-ui/icons/Close"
+import Drawer from '@material-ui/core/Drawer';
+
+const styles = theme => ({
+  root: {
+    flexGrow: 1,
+    backgroundColor: theme.palette.background.paper
+  },
+  bullet: {
+    display: "inline-block",
+    margin: "0 2px",
+    transform: "scale(0.8)"
+  },
+  title: {
+    fontSize: 14
+  },
+  pos: {
+    marginBottom: 12
+  },
+  button: {
+    margin: theme.spacing(1),
+  },
+  noResultsText: {
+    width: "100%",
+    display: "flex",
+    justifyContent: "center"
+  },
+  drawerCloseIcon: {
+    cursor: "pointer",
+    float: "right",
+    margin: "1%",
+    fontSize: 25
+  },
+  productDrawerContent: {
+    width: "75vw",
+    overflowX: "hidden",
+    minHeight: "100%"
+  }
+});
+
+class Product extends Component {
+  constructor(props) {
+    super(props);
+    this.loadProduct = this.loadProduct.bind(this);
+    this.removeProduct = this.removeProduct.bind(this);
+  }
+
+  state = {
+    productData: {},
+    productMetaData: {},
+    productRefData: {},
+    noResultsText: "No products"
+  };
+
+  componentDidMount() {
+    if (this.props.productId) {
+      this.loadProduct(this.props.productId);
+    } 
+  }
+
+  componentDidUpdate(prevProps) {
+    if (this.props !== prevProps) {
+      this.loadProduct(this.props.productId);
+    } 
+  }
+
+  removeProduct() {
+    let result = window.confirm("Are you Sure to Remove the Product " +this.props.productId + "?")
+    if (result) {
+      fmservice
+        .removeProductById(this.props.productId)
+        .then((isDeleted) => {
+          this.props.enqueueSnackbar("Sucessfully removed productID: " + this.props.productId,{
+            variant: "success"
+          })
+          this.setState({
+            productData: {},
+            productMetaData: {},
+            productRefData: {},
+          });
+          this.props.onClose()
+          this.props.history.push("/products")
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    }
+  }
+
+  loadProduct(productId) {
+    this.setState({ noResultsText: "Searching..." });
+    fmservice
+      .getProductById(productId)
+      .then((productData) => {
+        this.setState({
+          productData: productData,
+          productMetaData: productData.metadata,
+          productRefData: productData.references,
+        });
+      })
+      .catch((err) => {
+        this.setState({ noResultsText: "No products" });
+        console.error(err);
+      });
+  }
+
+
+  getProdDataBySection = (sectionTitle) => {
+    let productData = {
+      "File info": {
+        "File name": this.state.productData?.name,
+        "Product ID": this.state.productData?.id,
+        "Structure": this.state.productData?.structure,
+        "Transfer Status": this.state.productData?.transferStatus
+      },
+      "Metadata info": {
+        "File location": this.state.productMetaData?.FileLocation,
+        "Product type": this.state.productMetaData?.ProductType,
+        "MIME type": this.state.productMetaData?.MimeType[0],
+      },
+      "Reference info": {
+        "Data store ref. location": this.state.productRefData?.dataStoreReference,
+        "File size": this.state.productRefData?.fileSize,
+        "Original reference": this.state.productRefData?.originalReference,
+      },
+    };
+
+    return Object.entries(productData[sectionTitle]).map(([key, val]) => (
+      <React.Fragment key={key}>
+      <Typography
+        variant="subtitle1"
+        color="textPrimary"
+        gutterBottom
+      >
+        {key}
+      </Typography>
+      <Typography
+        variant="subtitle2"
+        color="textPrimary"
+        style={{wordWrap: "break-word"}}
+        gutterBottom
+      >
+        <strong>{val}</strong>
+      </Typography>
+    </React.Fragment>
+    ))
+  };
+
+  isObjEmpty = (obj) => {
+    return Object.keys(obj).length === 0
+  }
+
+  render() {
+    const { classes } = this.props;
+    return (
+      <Drawer
+        anchor="right"
+        open={this.props.productId}
+        onClose={this.props.onClose}
+      >
+        <div className={classes.productDrawerContent}>
+          <div
+            style={{
+              display: "flex",
+              flexDirection: "row",
+              justifyContent: "flex-end",
+              height: "8vh",
+              alignItems: "center",
+            }}
+          >
+            <Button
+              startIcon={<CloudDownloadIcon />}
+              variant="contained"
+              size="large"
+              className={classes.button}
+              color="primary"
+            >
+              Download File
+            </Button>
+
+            <Button
+              startIcon={<DeleteIcon />}
+              onClick={this.removeProduct}
+              variant="contained"
+              size="large"
+              className={classes.button}
+              color="secondary"
+            >
+              Remove Record
+            </Button>
+            <div style={{ flexGrow: 1 }}></div>
+            <CloseIcon
+              onClick={this.props.onClose}
+              className={classes.drawerCloseIcon}
+            />
+          </div>
+          <div className={classes.root}>
+            <br />
+            {!this.isObjEmpty(this.state.productData) ? (
+              <Grid container spacing={10}>
+                <Grid item lg="4">
+                  <CardContent>
+                    <Typography variant="h6" color="textPrimary" gutterBottom>
+                      <strong>FILE INFO</strong>
+                    </Typography>
+                    {this.getProdDataBySection("File info")}
+                  </CardContent>
+                </Grid>
+
+                <Grid item lg="4">
+                  <CardContent>
+                    <Typography variant="h6" color="textPrimary" gutterBottom>
+                      <strong>METADATA INFO</strong>
+                    </Typography>
+                    {this.getProdDataBySection("Metadata info")}
+                  </CardContent>
+                </Grid>
+
+                <Grid item lg="4">
+                  <CardContent>
+                    <Typography variant="h6" color="textPrimary" gutterBottom>
+                      <strong>REFERENCE INFO</strong>
+                    </Typography>
+                    {this.getProdDataBySection("Reference info")}
+                  </CardContent>
+                </Grid>
+              </Grid>
+            ) : (
+              <div className={classes.noResultsText}>
+                <Typography variant="h6" gutterBottom>
+                  {this.state.noResultsText}
+                </Typography>
+              </div>
+            )}
+          </div>
+        </div>
+      </Drawer>
+    );
+  }
+}
+
+Product.propTypes = {
+  classes: PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(withSnackbar(Product));
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/index.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/index.js
new file mode 100644
index 0000000..ea9b498
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/Product/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the Product component from this folder and send it down to ./components/index.js
+import Product from "./Product";
+
+export {Product};
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/ProductIngest.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/ProductIngest.js
new file mode 100644
index 0000000..33d8d6a
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/ProductIngest.js
@@ -0,0 +1,283 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import { OutlinedInput, Paper, withStyles } from "@material-ui/core";
+import Typography from "@material-ui/core/Typography";
+import PropTypes from "prop-types";
+import Button from "@material-ui/core/Button";
+import * as fmservice from "services/fmservice"
+import ProgressBar from "components/ProgressBar"
+import FormControl from "@material-ui/core/FormControl";
+import MenuItem from "@material-ui/core/MenuItem";
+import InputLabel from "@material-ui/core/InputLabel";
+import Select from "@material-ui/core/Select";
+import {shrinkString} from "utils/utils"
+import { withSnackbar } from 'notistack';
+
+const styles = theme => ({
+  root: {
+    flexGrow: 1,
+    backgroundColor: theme.palette.background.paper,
+    padding: 20
+  },
+  button: {
+    marginLeft: 20
+  },
+  textField: {
+    marginLeft: 2,
+    marginRight: 2
+  },
+  layout: {
+    display: "flex",
+    flexDirection: "row",
+    alignItems: "center",
+    height: "15vh",
+    justifyContent: "space-between",
+    padding: 0
+  },
+  progress: {
+    margin: 2
+  },
+  formControlContainer: {
+    display: "flex",
+    justifyContent: "space-between",
+    width: "40%",
+  },
+});
+
+class ProductIngest extends Component {
+  constructor(props) {
+    super(props);
+    this.handleFile = this.handleFile.bind(this);
+    this.handleProductStructure = this.handleProductStructure.bind(this);
+    this.handleProductType = this.handleProductType.bind(this);
+    this.ingestProduct = this.ingestProduct.bind(this);
+  }
+
+  state = {
+    ingestedFile: null,
+    ingestedFileName: "",
+    productId: "",
+    productType: "",
+    productStructure: "Flat",
+    isIngested: false,
+    isIngestButtonClicked: false,
+    ingestedPercentage: 0,
+    productTypes: [],
+  };
+
+  componentDidMount() {
+    fmservice
+      .getAllProductTypes()
+      .then((productTypes) =>
+        this.setState({ productTypes, productType: productTypes[0].name })
+      )
+      .catch((err) => {
+        console.error(err)
+        this.props.enqueueSnackbar("Couldn't get the available product types",{
+          variant: "warning"
+        })
+      });
+  }
+
+  handleFile(e) {
+    let file = e.target.files[0];
+    this.setState({ ingestedFile: file,ingestedFileName: shrinkString(file.name,25,6) });
+  }
+
+  handleProductStructure(e) {
+    let productStructure = e.target.value;
+    this.setState({ productStructure: productStructure });
+  }
+
+  handleProductType(e) {
+    let productType = e.target.value;
+    this.setState({ productType: productType });
+  }
+
+  keyPress(e) {
+    if (e.keyCode === 13) {
+      this.handleProductStructure();
+    }
+  }
+
+  ingestProduct() {
+    this.setState({ isIngested: false, isIngestButtonClicked: true });
+    if(!this.state.ingestedFile){
+      this.props.enqueueSnackbar("No product selected", { 
+        variant: 'error',
+    });
+      this.setState({isIngestButtonClicked: false})
+      return;
+    }
+    if(!this.state.productType){
+      this.props.enqueueSnackbar("Product type is not selected",{
+        variant: "error"
+      })
+      this.setState({isIngestButtonClicked: false})
+      return;
+    }
+    let formData = new FormData();
+    formData.append("productFile", this.state.ingestedFile);
+
+    let onUploadProgress = (progressEvent) => {
+      let percentCompleted = Math.round(
+        (progressEvent.loaded * 100) / progressEvent.total
+      );
+      this.setState({ ingestedPercentage: percentCompleted });
+    };
+
+    fmservice
+      .ingestProduct(
+        formData,
+        this.state.productType,
+        this.state.productStructure,
+        onUploadProgress
+      )
+      .then((res) => {
+        this.setState({
+          productId: res.productId,
+          isIngestButtonClicked: false,
+          isIngested: true,
+          ingestedFile: null,
+          ingestedFileName: "",
+          ingestedPercentage: 0,
+        });
+        this.props.enqueueSnackbar("Successfully Ingested Product "+res.productId,{
+          variant: "success"
+        })
+      })
+      .catch((error) => {
+        console.error(error);
+        this.setState({
+          isIngested: false,
+          ingestedPercentage: 0,
+          isIngestButtonClicked: false,
+        });
+        this.props.enqueueSnackbar("Product Ingestion Failed",{
+          variant: "error"
+        })
+      });
+  }
+
+  render() {
+    const { classes } = this.props;
+
+    return (
+      <Paper className={classes.root}>
+        <div style={{display: "flex",justifyContent: "space-between"}}>
+        <Typography variant="subtitle1">
+          <strong>Product Ingest with Single File</strong>
+        </Typography>
+        {this.state.isIngestButtonClicked && (
+            <ProgressBar value={this.state.ingestedPercentage} />
+          )}
+        </div>
+
+        <br />
+
+        <div className={classes.layout}>
+          <div className={classes.formControlContainer}>
+          <FormControl
+            variant="outlined"
+            style={{ width: "180px" }}
+          >
+            <InputLabel htmlFor="outlined-product-Type-simple">
+              Product Type
+            </InputLabel>
+            <Select
+              value={this.state.productType}
+              onChange={this.handleProductType}
+              input={
+                <OutlinedInput
+                  labelWidth={100}
+                  name="Product Type"
+                  id="outlined-product-Type-simple"
+                />
+              }
+            >
+              {this.state.productTypes.map((productType) => {
+                return (
+                  <MenuItem value={productType.name}>
+                    {productType.name}
+                  </MenuItem>
+                );
+              })}
+            </Select>
+          </FormControl>
+
+          <FormControl
+            variant="outlined"
+            style={{ width: "180px" }}
+          >
+            <InputLabel htmlFor="outlined-product-structure-simple">
+              Product Structure
+            </InputLabel>
+            <Select
+              value={this.state.productStructure}
+              onChange={this.handleProductStructure}
+              input={
+                <OutlinedInput
+                  labelWidth={130}
+                  name="Product Structure"
+                  id="outlined-product-structure-simple"
+                />
+              }
+            >
+              <MenuItem selected={true} value={"Flat"}>
+                Flat
+              </MenuItem>
+            </Select>
+          </FormControl>
+          </div>
+
+          <Button variant="contained" component="label">
+            Upload File
+            <input
+              className={classes.button}
+              type="file"
+              name="fileToUpload"
+              id="fileToUpload"
+              onChange={(e) => this.handleFile(e)}
+              hidden
+            />
+          </Button>
+
+          <div style={{width: "18%"}}>
+          {this.state.ingestedFileName}
+          </div>
+
+          <Button
+            variant="contained"
+            disabled={this.state.isIngestButtonClicked}
+            color="primary"
+            onClick={this.ingestProduct}
+          >
+            Ingest Product
+          </Button>
+        </div>
+      </Paper>
+    );
+  }
+}
+
+ProductIngest.propTypes = {
+  classes: PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(withSnackbar(ProductIngest));
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/index.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/index.js
new file mode 100644
index 0000000..81092a9
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngest/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the Product component from this folder and send it down to ./components/index.js
+import ProductIngest from "./ProductIngest";
+
+export {ProductIngest};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/ProductIngestWithMetaFile.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/ProductIngestWithMetaFile.js
new file mode 100644
index 0000000..978cff7
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/ProductIngestWithMetaFile.js
@@ -0,0 +1,212 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import { Paper, withStyles } from "@material-ui/core";
+import Typography from "@material-ui/core/Typography";
+import PropTypes from "prop-types";
+import Button from "@material-ui/core/Button";
+import * as fmservice from "services/fmservice"
+import ProgressBar from "components/ProgressBar"
+import {shrinkString} from "utils/utils"
+import { withSnackbar } from 'notistack';
+
+const styles = theme => ({
+  root: {
+    flexGrow: 1,
+    backgroundColor: theme.palette.background.paper,
+    padding: 20
+  },
+  filename: {
+    width: "20%",
+    whiteSpace: "nowrap",
+    overflow: "hidden",
+    textAlign: "left",
+    textOverflow: "ellipsis",
+  },
+  textField: {
+    marginLeft: 2,
+    marginRight: 2
+  },
+  layout: {
+    display: "flex",
+    flexDirection: "row",
+    padding: 0,
+    width: "100%",
+    justifyContent: "space-between",
+    alignItems: "flex-end",
+  },
+  titleContainer: {
+    display: "flex",
+    flexDirection: "row",
+    justifyContent: "space-between",
+  },
+});
+
+class ProductIngestWithMetaFile extends Component {
+  constructor(props) {
+    super(props);
+    this.handleFile = this.handleFile.bind(this);
+    this.handleMetaFile = this.handleMetaFile.bind(this);
+    this.ingestProduct = this.ingestProduct.bind(this);
+  }
+
+  state = {
+    ingestedFile: null,
+    ingestedFileName: "",
+    metaFile: null,
+    metaFileName: "",
+    productId: "",
+    isIngested: false,
+    isIngestButtonClicked: false,
+    ingestedPercentage: 0
+  };
+
+  handleFile(e) {
+    let file = e.target.files[0];
+    this.setState({ ingestedFile: file,ingestedFileName: shrinkString(file.name,25,6) });
+  }
+
+  handleMetaFile(e) {
+    let metaFile = e.target.files[0];
+    this.setState({ metaFile: metaFile,metaFileName: shrinkString(metaFile.name,25,6) });
+  }
+
+  ingestProduct() {
+    this.setState({ isIngested: false,isIngestButtonClicked: true });
+    if (!this.state.ingestedFile) {
+      this.props.enqueueSnackbar("No product selected",{
+        variant: "error"
+      })
+      this.setState({isIngestButtonClicked: false})
+      return;
+    }
+    if(!this.state.metaFile){
+      this.props.enqueueSnackbar("No metadata file selected",{
+        variant: "error"
+      })
+      this.setState({isIngestButtonClicked: false})
+      return;
+    }
+    let formData = new FormData();
+    formData.append("productFile", this.state.ingestedFile);
+    formData.append("metadataFile", this.state.metaFile);
+
+    let onUploadProgress = (progressEvent) => {
+      let percentCompleted = Math.round(
+        (progressEvent.loaded * 100) / progressEvent.total
+      );
+      this.setState({ ingestedPercentage: percentCompleted });
+    };
+
+    fmservice
+      .ingestProductWithMetaFile(formData, onUploadProgress)
+      .then((res) => {
+        const { productId } = res;
+        this.setState({
+          isIngested: true,
+          productId: productId,
+          ingestedFile: null,
+          metaFile: null,
+          ingestedFileName: "",
+          metaFileName: "",
+          isIngestButtonClicked: false,
+        });
+        this.props.enqueueSnackbar("Sucessfully Ingested product "+productId,{
+          variant: "success"
+        })
+      })
+      .catch((error) => {
+        console.error(error);
+        this.setState({ isIngested: false, isIngestButtonClicked: false });
+        this.props.enqueueSnackbar("Error while ingesting product with metadata",{
+          variant: "error"
+        })
+      });
+  }
+
+  render() {
+    const { classes } = this.props;
+
+    return (
+      <Paper className={classes.root}>
+        <div className={classes.titleContainer}>
+          <Typography variant="subtitle1">
+            <strong>Product Ingest with Meta File</strong>
+          </Typography>
+          {this.state.isIngestButtonClicked && (
+            <ProgressBar value={this.state.ingestedPercentage} />
+          )}
+        </div>
+        <br />
+        <div className={classes.layout}>
+          <div>
+            <Typography variant="body1">File</Typography>
+            <Button variant="contained" component="label">
+              Upload File
+              <input
+                type="file"
+                name={"fileToUpload"}
+                id={"fileToUpload"}
+                onChange={(e) => this.handleFile(e)}
+                hidden
+              />
+            </Button>
+          </div>
+          <Typography variant="body1" className={classes.filename}>
+            {this.state.ingestedFileName}
+          </Typography>
+
+          <div>
+            <Typography variant="body1">Metadata File</Typography>
+            <Button variant="contained" component="label">
+              Select Metadata File
+              <input
+                type="file"
+                name={"metaFileToUpload"}
+                id={"metaFileToUpload"}
+                onChange={(e) => this.handleMetaFile(e)}
+                hidden
+              />
+            </Button>
+          </div>
+
+          <Typography variant="body1" className={classes.filename}>
+            {this.state.metaFileName}
+          </Typography>
+
+          <div>
+            <Button
+              disabled={this.state.isIngestButtonClicked}
+              variant="contained"
+              color="primary"
+              onClick={this.ingestProduct}
+            >
+              Ingest Product with metadata
+            </Button>
+          </div>
+        </div>
+      </Paper>
+    );
+  }
+}
+
+ProductIngestWithMetaFile.propTypes = {
+  classes: PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(withSnackbar(ProductIngestWithMetaFile));
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/index.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/index.js
new file mode 100644
index 0000000..05c3747
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductIngestWithMetaFile/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the Product component from this folder and send it down to ./components/index.js
+import ProductIngestWithMetaFile from "./ProductIngestWithMetaFile";
+
+export {ProductIngestWithMetaFile};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/ProductList.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/ProductList.js
new file mode 100644
index 0000000..599ec4c
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/ProductList.js
@@ -0,0 +1,293 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import * as fmservice  from "services/fmservice";
+import PropTypes from "prop-types";
+import { withStyles,TablePagination } from "@material-ui/core";
+import clsx from "clsx";
+import Grid from "@material-ui/core/Grid";
+import Table from '@material-ui/core/Table';
+import TableBody from '@material-ui/core/TableBody';
+import TableCell from '@material-ui/core/TableCell';
+import TableContainer from '@material-ui/core/TableContainer';
+import TableHead from '@material-ui/core/TableHead';
+import TableRow from '@material-ui/core/TableRow';
+import Paper from "@material-ui/core/Paper";
+import CircularProgress from "@material-ui/core/CircularProgress";
+import SearchBar from "./SearchBar"
+import {shrinkString} from "utils/utils"
+import { NavLink } from "react-router-dom";
+import { withSnackbar } from 'notistack';
+import { Product as ProductDrawer } from "components/fileManager/Product"
+
+const styles = (theme) => ({
+  root: {
+    flexGrow: 1,
+    backgroundColor: theme.palette.background.paper
+  },
+  card: {
+    minWidth: 275,
+    backgroundColor: "#dcdcdc"
+  },
+  bullet: {
+    display: "inline-block",
+    margin: "0 2px",
+    transform: "scale(0.8)"
+  },
+  title: {
+    fontSize: 14
+  },
+  pos: {
+    marginBottom: 12
+  },
+  productcontainer: {
+    display: "flex",
+    flexDirection: "row",
+    padding: 0
+  },
+  paper: {
+    padding: 12,
+    display: "flex",
+    overflow: "auto",
+    flexDirection: "column"
+  },
+  fixedHeight: {
+    height: "auto"
+  },
+  formControl: {
+    margin: 1,
+    minWidth: 120
+  },
+  button: {
+    padding: 5,
+    margin: 20
+  },
+  progress: {
+    width: "inherit",
+    display: "flex",
+    justifyContent: "center",
+    minHeight: "10vh",
+    alignItems: "center",
+  },
+  nameCell: {
+    cursor: "pointer",
+    textDecoration: "underline",
+  },
+});
+
+class ProductBrowser extends Component {
+  constructor(props) {
+    super(props);
+    this.snackBarRef = React.createRef();
+  }
+
+  state = {
+    productData: [],
+    productDetailsArray: [],
+    selectedProductId: "",
+    currentProductPage: 0,
+    totalProductCount: 0,
+    productTypeArray: [],
+    isQueryTimedOut: true,
+    noProductsText: "Loading..."
+  };
+
+  componentDidMount() {
+    const params = new URLSearchParams(window.location.search);
+    this.setState({selectedProductId: params.get("id")})
+    this.loadNextProducts();
+  }
+
+  componentDidUpdate(prevProps){
+    if(this.props !== prevProps) {
+      const params = new URLSearchParams(window.location.search);
+      this.setState({selectedProductId: params.get("id")})
+    }
+  }
+
+  onProductDrawerClose = () => {
+    this.props.history.push("/products")
+    this.loadNextProducts()
+  }
+
+  onProductSearch = (productName) => {
+    fmservice.getProductPage({
+      productName: productName
+    }).then(productPage => {
+        let productsArr = productPage.products.product
+        if (typeof(productsArr) === "undefined"){
+          this.setState({noProductsText: "No products"})
+          return;
+        }
+        if (!Array.isArray(productsArr)) {
+          productsArr = [productsArr]
+        }
+        
+        this.setState({
+          productData: productPage,
+          totalProductCount: productPage.totalProducts,
+          productDetailsArray: productsArr || [],
+        });
+    }).catch(err => {
+      this.props.enqueueSnackbar("Product search failed",{
+        variant: "error"
+      })
+    })
+  } 
+
+  loadNextProducts = () => {
+    this.setState({
+      productFoldersArray: [],
+      productData: [],
+      productFilesArray: [],
+      productDetailsArray: [],
+    });
+ 
+    fmservice
+      .getProductPage({
+        productType: "GenericFile",
+        productPageNo: this.state.currentProductPage + 1
+      })
+      .then((productPage) => {
+        let productsArr = productPage.products.product
+        // Backend returns a product object when the object count is 1
+        // and returns an array of products when the object count is more than 1.
+        // This check converts object to array to avoid this problem
+        // Need to fix this in the backend
+        if (typeof(productsArr) === "undefined"){
+          this.setState({noProductsText: "No products"})
+          return;
+        }
+        if (!Array.isArray(productsArr)) {
+          productsArr = [productsArr]
+        }
+        this.setState({
+          productData: productPage,
+          totalProductCount: productPage.totalProducts,
+          productDetailsArray: productsArr || [],
+        });
+      })
+      .catch(error => {
+        if (error.response) {
+          console.error("err: ",error.response.data);
+          this.props.enqueueSnackbar("Couldn't fetch products",{
+            variant: "error"
+          })
+        }
+      });
+  }
+
+  handleChangePage = (event,newPageNo) => {
+    this.setState({currentProductPage: newPageNo},() => this.loadNextProducts())
+  }
+
+  render() {
+    const { classes } = this.props;
+
+    return (
+      <div className={classes.root}>
+        <Paper className={clsx(classes.paper, classes.fixedHeight)}>
+          <SearchBar
+            onSearch={this.onProductSearch}
+            onQueryTimeout={({ isQueryTimedOut }) =>
+              this.setState({ isQueryTimedOut })
+            }
+          />
+
+          <TableContainer style={{ marginTop: "2%",width: "100%" }}>
+            <Table className={classes.productTable} aria-label="a dense table">
+              <TableHead>
+                <TableRow>
+                  <TableCell align="left">
+                    <strong>Product ID</strong>
+                  </TableCell>
+                  <TableCell align="left">
+                    <strong>Name</strong>
+                  </TableCell>
+                  <TableCell align="left">
+                    <strong>Received at</strong>
+                  </TableCell>
+                </TableRow>
+              </TableHead>
+              <TableBody>
+                {this.state.productDetailsArray.length > 0 && 
+                  this.state.productDetailsArray.map((product) => {
+                    const productReceivedTime = product.metadata?.keyval.find(
+                      (meta) => meta.key === "CAS.ProductReceivedTime"
+                    ).val;
+                    return (
+                      <TableRow key={product.id}>
+                        <TableCell>{product.id}</TableCell>
+                        <TableCell className={classes.nameCell}>
+                        <NavLink to={"/products?id=" + product.id}>
+                            {shrinkString(product.name, 40, 10)}
+                        </NavLink>
+                        </TableCell>
+                        <TableCell>{productReceivedTime}</TableCell>
+                      </TableRow>
+                    );
+                  } 
+              )}
+                {this.state.productDetailsArray.length === 0 && (
+                   <TableRow>
+                   <TableCell></TableCell>
+                   <TableCell>
+                   <div className={classes.progress}>
+                   <p>{this.state.noProductsText}</p>
+                  </div>
+                   </TableCell>
+                   <TableCell></TableCell>
+                 </TableRow>
+                )}
+              </TableBody>
+            </Table>
+          </TableContainer>
+
+          <Grid
+            style={{ width: "100%" }}
+            container
+            spacing={1}
+            direction="column"
+            alignItems="center"
+          >
+            <Grid item>
+              <TablePagination
+                component="div"
+                count={this.state.totalProductCount}
+                page={this.state.currentProductPage}
+                onChangePage={this.handleChangePage}
+                rowsPerPage={20}
+                rowsPerPageOptions={[]}
+              />
+            </Grid>
+          </Grid>
+        </Paper>
+        <ProductDrawer 
+          productId={this.state.selectedProductId}
+          onClose={this.onProductDrawerClose}
+        />
+      </div>
+    );
+  }
+}
+
+ProductBrowser.propTypes = {
+  classes: PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(withSnackbar(ProductBrowser));
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/SearchBar.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/SearchBar.js
new file mode 100644
index 0000000..db15491
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/SearchBar.js
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import {Button,TextField } from "@material-ui/core";
+import SearchIcon from "@material-ui/icons/Search";
+import { withStyles } from "@material-ui/core";
+import { fmconnection } from "constants/connection";
+import PropTypes from "prop-types";
+
+const styles = theme => ({
+  root: {
+    padding: "2px 4px",
+    display: "flex",
+    alignItems: "center",
+    width: 400
+  },
+  row: {
+    width: "60%",
+    display: "flex",
+    flexDirection: "row"
+  },
+  formControl: {
+    minWidth: 180
+  },
+  input: {
+    marginLeft: 8,
+    flex: 1
+  },
+  iconButton: {
+    padding: 10
+  },
+  divider: {
+    width: 1,
+    height: 28,
+    margin: 4
+  },
+  button: {
+    marginLeft: theme.spacing(1)
+  }
+});
+
+class SearchBar extends Component {
+
+  state = {
+    productName: "",
+    isSearching: false
+  };
+
+  componentDidMount(){
+    fmconnection.get("/productTypes").then(res => {
+      const {productTypes} = res.data.productTypeList 
+      this.setState({
+        productTypes: productTypes,
+        productTypeName: productTypes[0].name})
+    }).catch(err => console.error(err))
+  }
+
+
+  handleChange = (e) => {
+    this.setState({ [e.target.name]: e.target.value });
+  }
+
+  onSearch = () => {
+    setTimeout(() => {
+        this.props.onQueryTimeout({ isQueryTimedOut: true });
+    },3000);
+    this.setState({isSearching: true})
+    this.props.onSearch(this.state.productName)
+  }
+
+  render() {
+    const { classes } = this.props;
+    return (
+      <div className={classes.row}>
+        <div style={{width: "60%"}}>
+        <TextField
+          id="outlined-basic"
+          label="Product name"
+          fullWidth
+          className={classes.formControl}
+          value={this.state.productName}
+          onChange={this.handleChange}
+          name="productName"
+          variant="outlined"
+        />
+        </div>
+      
+        <Button
+          startIcon={<SearchIcon />}
+          variant="contained"
+          size="large"
+          className={classes.button}
+          onClick={this.onSearch}
+          color="primary"
+        >
+          Search products
+        </Button>
+      </div>
+    );
+  }
+}
+
+SearchBar.propTypes = {
+  classes: PropTypes.object.isRequired,
+  onSearch: PropTypes.func.isRequired,
+  onQueryTimeout:PropTypes.func,
+};
+
+export default withStyles(styles)(SearchBar);
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/index.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/index.js
new file mode 100644
index 0000000..c55ee45
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/ProductList/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the Product component from this folder and send it down to ./components/index.js
+import ProductList from "./ProductList";
+
+export {ProductList};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/fileManager/index.js b/react-components/oodt_opsui_sample_app/src/components/fileManager/index.js
new file mode 100644
index 0000000..0cd5cd4
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/fileManager/index.js
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export {Product} from './Product'
+export {ProductIngest} from './ProductIngest'
+export {ProductIngestWithMetaFile} from './ProductIngestWithMetaFile'
+export {ProductList} from './ProductList'
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/listItems.js b/react-components/oodt_opsui_sample_app/src/components/listItems.js
new file mode 100644
index 0000000..319cd1a
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/listItems.js
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React from 'react';
+import ListItem from '@material-ui/core/ListItem';
+import ListItemIcon from '@material-ui/core/ListItemIcon';
+import ListItemText from '@material-ui/core/ListItemText';
+import ListSubheader from '@material-ui/core/ListSubheader';
+import NoteAddIcon from '@material-ui/icons/NoteAdd';
+import StorageIcon from '@material-ui/icons/Storage';
+import WorkIcon from "@material-ui/icons/Work"
+import FindInPage from '@material-ui/icons/FindInPage';
+import {Link} from "react-router-dom";
+
+export const fmMenuListItems = (
+  <div>
+    <ListSubheader>File Manager</ListSubheader>
+
+    <ListItem button component={Link} to={"/productIngest"}>
+      <ListItemIcon>
+        <NoteAddIcon />
+      </ListItemIcon>
+      <ListItemText primary="Product Ingest" />
+    </ListItem>
+
+    <ListItem button component={Link} to={"/products"}>
+      <ListItemIcon>
+        <StorageIcon />
+      </ListItemIcon>
+      <ListItemText primary="Product Browser" />
+    </ListItem>
+  </div>
+);
+
+export const wmMenuListItems = (
+  <div>
+    <ListSubheader>WorkFlow Manager</ListSubheader>
+
+    <ListItem button component={Link} to={"/workflows"}>
+      <ListItemIcon>
+        <WorkIcon />
+      </ListItemIcon>
+      <ListItemText primary="Workflow Browser" />
+    </ListItem>
+  </div>
+);
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/NewWorkflow.js b/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/NewWorkflow.js
new file mode 100644
index 0000000..7b06dd6
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/NewWorkflow.js
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import {
+  MenuItem,
+  InputLabel,
+  Button,
+  FormControl,
+  withStyles,
+  Select,
+} from "@material-ui/core";
+import * as wmservice from "services/wmservice";
+import {withSnackbar} from "notistack"
+
+const styles = (theme) => ({
+  root: {
+    paddingBottom: "2%",
+    paddingTop: "1%",
+    minHeight: "10vh",
+    display: "flex",
+    alignItems: "center",
+  },
+  formControl: {
+    minWidth: "30%",
+  },
+  selectEmpty: {
+    marginTop: theme.spacing(2),
+  },
+  button: {
+    marginLeft: theme.spacing(1),
+    padding: theme.spacing(1),
+  },
+});
+
+class NewWorkflow extends Component {
+  state = {
+    selectedEvent: "",
+    workflowEvents: [],
+    isSubmitted: false,
+  };
+
+  componentDidMount() {
+    wmservice
+      .getRegisteredEvents()
+      .then((eventsArr) => {
+        this.setState({
+          selectedEvent: eventsArr[0],
+          workflowEvents: eventsArr || [],
+        });
+      })
+      .catch((err) => console.error(err));
+  }
+
+  handleEventChange = (e) => {
+    this.setState({ selectedEvent: e.target.value });
+  };
+
+  triggerWorkflow = () => {
+    this.setState({isSubmitted: true})
+    wmservice
+      .handleEvent(this.state.selectedEvent)
+      .then((isOk) => {
+        this.setState({isSubmitted: false})
+        this.props.enqueueSnackbar("Event " + this.state.selectedEvent +" triggered successfully",{
+          variant: "success"
+        })
+        this.setState({isSubmitted: false})
+      })
+      .catch((err) => {
+        console.error(err)
+        this.props.enqueueSnackbar("Error occured when triggering event "+this.state.selectedEvent,{
+          variant: "error"
+        })
+        this.setState({isSubmitted: false})
+      });
+  };
+
+  render() {
+    const { classes } = this.props;
+
+    return (
+      <div className={classes.root}>
+        <FormControl variant="outlined" className={classes.formControl}>
+          <InputLabel>Event name</InputLabel>
+          <Select
+            value={this.state.selectedEvent}
+            onChange={this.handleEventChange}
+            label="Workflow event"
+          >
+            {this.state.workflowEvents.map((event) => {
+              return <MenuItem value={event}>{event}</MenuItem>;
+            })}
+          </Select>
+        </FormControl>
+
+        <Button
+          variant="contained"
+          onClick={this.triggerWorkflow}
+          color="primary"
+          disabled={this.state.isSubmitted}
+          className={classes.button}
+        >
+          Trigger workflow
+        </Button>
+      </div>
+    );
+  }
+}
+
+export default withStyles(styles)(withSnackbar(NewWorkflow));
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/index.js b/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/index.js
new file mode 100644
index 0000000..5c85fba
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/workflowManager/NewWorkflow/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the WorkflowList component from this folder and send it down to ./components/index.js
+import NewWorkflow from "./NewWorkflow";
+
+export {NewWorkflow};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/WorkflowList.js b/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/WorkflowList.js
new file mode 100644
index 0000000..5b1dd2f
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/WorkflowList.js
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { Component } from "react";
+import { Button, withStyles, TablePagination, Typography, Grid } from "@material-ui/core";
+import Table from "@material-ui/core/Table";
+import TableBody from "@material-ui/core/TableBody";
+import TableCell from "@material-ui/core/TableCell";
+import TableHead from "@material-ui/core/TableHead";
+import TableRow from "@material-ui/core/TableRow";
+import Paper from "@material-ui/core/Paper";
+import PropTypes from "prop-types";
+import * as wmservice from "services/wmservice"
+import {NewWorkflow} from "components/workflowManager/NewWorkflow"
+import CircularProgress from "@material-ui/core/CircularProgress";
+
+const styles = theme => ({
+  root: {
+    width: "100%",
+    marginTop: 0,
+    padding: 20
+  },
+  table: {
+    minWidth: 650
+  },
+  progress: {
+    margin: 2
+  },
+  loading: {
+    display: "flex",
+    width: "100%",
+    justifyContent: "center"
+  }
+});
+
+class WorkflowList extends Component {
+  state = {
+    rows: [],
+    currentPage: 1,
+    totalPages: 0,
+    totalCount: 0,
+    workflowState: [],
+    noWorkflowsText: "Loading..."
+  };
+
+  componentDidMount() {
+    this.loadNextWorkflows()
+  }
+
+  loadNextWorkflows = () => {
+    wmservice.getWorkflowList(this.state.currentPage).then(
+      workflowData => {
+        let workflowArr = workflowData.pageWorkflows
+        if (typeof(workflowArr) === "undefined"){
+          this.setState({noWorkflowsText: "No workflows found"})
+          return;
+        }
+        // Backend returns a product object when the object count is 1
+        // and returns an array of products when the object count is more than 1.
+        // This check converts object to array to avoid this problem
+        // Need to fix this in the backend
+        if (!Array.isArray(workflowArr)) {
+          workflowArr = [workflowArr]
+        }
+        this.setState({
+          rows: workflowArr || [],
+          totalPages: workflowData.totalPages,
+          totalCount: workflowData.totalCount
+        })
+      }
+    ).catch(err => {
+      console.error(err)
+    })
+  }
+
+  updateWorkflowStatus = (workflowInstanceId, state) => {
+    let result = window.confirm("Are you sure to change workflow " + workflowInstanceId + " state to " + state);
+    if(result){
+      wmservice.updateWorkflowStatus(workflowInstanceId, state)
+      .then((result) => {
+        wmservice.getWorkflowList().then(
+          workflows => {
+            this.setState({rows: workflows})
+          }
+        ).catch(err => {
+          console.error(err)
+        })
+      })
+      .catch((err) => console.error(err));
+    }
+  }
+
+  handleChangePage = (event,newPageNo) => {
+    this.setState({currentPage: newPageNo+1},() => this.loadNextWorkflows())
+  }
+
+  render() {
+    const { classes } = this.props;
+    return (
+      <Paper className={classes.root}>
+        <Typography variant="h6">New workflow</Typography>
+        <NewWorkflow />
+        
+        <Typography variant="h6">Past workflows</Typography>
+        <Table className={classes.table}>
+          <TableHead>
+            <TableRow>
+              <TableCell><strong>Workflow Instance Id</strong></TableCell>
+              <TableCell align="center"><strong>Workflow Name</strong></TableCell>
+              <TableCell align="center"><strong>Task Id</strong></TableCell>
+              <TableCell align="center"><strong>Workflow State</strong></TableCell>
+              <TableCell align="center"><strong>Actions</strong></TableCell>
+            </TableRow>
+          </TableHead>
+
+            <TableBody>
+              {this.state.rows.length > 0 && this.state.rows.map(row => (
+                <TableRow key={row.workflowInstanceId}>
+                  <TableCell component="th" scope="row">
+                    {row.workflowInstanceId}
+                  </TableCell>
+                  <TableCell align="right">
+                    {row.sharedContext.keyval[0].val}
+                  </TableCell>
+                  <TableCell align="right">
+                    {row.sharedContext.keyval[1].val}
+                  </TableCell>
+                  <TableCell align="right">{row.workflowState.name}</TableCell>
+                  <TableCell align="center">
+                    <div>
+                      {row.workflowState.name === "Running" && (
+                        <Button
+                          color={"primary"}
+                          onClick={() =>
+                            this.updateWorkflowStatus(
+                              row.workflowInstanceId,
+                              "PAUSED"
+                            )
+                          }
+                        >
+                          Pause
+                        </Button>
+                      )}
+                      {row.workflowState.name === "Running" && (
+                        <Button
+                          color={"secondary"}
+                          onClick={() =>
+                            this.updateWorkflowStatus(
+                              row.workflowInstanceId,
+                              "FINISHED"
+                            )
+                          }
+                        >
+                          Stop
+                        </Button>
+                      )}
+                      {row.workflowState.name === "PAUSED" && (
+                        <Button
+                          color={"secondary"}
+                          onClick={() =>
+                            this.updateWorkflowStatus(
+                              row.workflowInstanceId,
+                              "Running"
+                            )
+                          }
+                        >
+                          Resume
+                        </Button>
+                      )}
+                    </div>
+                  </TableCell>
+                </TableRow>
+              ))}
+            </TableBody>
+        </Table>
+        {this.state.rows.length === 0 && (
+                <div className={classes.loading}>
+                  <CircularProgress className={classes.progress} />
+                </div>                  
+          )}
+                  <Grid
+            style={{ width: "100%" }}
+            container
+            spacing={1}
+            direction="column"
+            alignItems="center"
+          >
+            <Grid item>
+              <TablePagination
+                component="div"
+                count={this.state.totalCount }
+                page={this.state.currentPage - 1}
+                onChangePage={this.handleChangePage}
+                rowsPerPage={20}
+                rowsPerPageOptions={[]}
+              />
+            </Grid>
+          </Grid>
+      </Paper>
+    );
+  }
+}
+
+WorkflowList.propTypes = {
+  classes: PropTypes.object.isRequired
+};
+
+export default withStyles(styles)(WorkflowList);
diff --git a/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/index.js b/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/index.js
new file mode 100644
index 0000000..b2eee1f
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/workflowManager/WorkflowList/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Import the WorkflowList component from this folder and send it down to ./components/index.js
+import WorkflowList from "./WorkflowList";
+
+export {WorkflowList};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/components/workflowManager/index.js b/react-components/oodt_opsui_sample_app/src/components/workflowManager/index.js
new file mode 100644
index 0000000..a3a988a
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/components/workflowManager/index.js
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Export all the explicitly exported components, this file will contain our
+// components when built by webpack and sent off to the world.
+export {WorkflowList} from "./WorkflowList";
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/constants/connection.js b/react-components/oodt_opsui_sample_app/src/constants/connection.js
new file mode 100644
index 0000000..208a0e1
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/constants/connection.js
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import axios from "axios";
+
+export const fmconnection = axios.create({
+  baseURL: process.env.REACT_APP_FM_REST_API_URL
+});
+
+export const wmconnection = axios.create({
+    baseURL: process.env.REACT_APP_WM_REST_API_URL
+});
diff --git a/react-components/oodt_opsui_sample_app/src/index.js b/react-components/oodt_opsui_sample_app/src/index.js
new file mode 100644
index 0000000..61d0f73
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/index.js
@@ -0,0 +1,11 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import App from './App';
+// import * as serviceWorker from './serviceWorker';
+
+ReactDOM.render(<App/>, document.getElementById('root'));
+
+// If you want your app to work offline and load faster, you can change
+// unregister() to register() below. Note this comes with some pitfalls.
+// Learn more about service workers: https://bit.ly/CRA-PWA
+// serviceWorker.unregister();
diff --git a/react-components/oodt_opsui_sample_app/src/services/fmservice.js b/react-components/oodt_opsui_sample_app/src/services/fmservice.js
new file mode 100644
index 0000000..5113c24
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/services/fmservice.js
@@ -0,0 +1,110 @@
+import { fmconnection } from "constants/connection";
+
+
+export const getAllProductTypes = () => {
+  return new Promise((resolve, reject) => {
+    fmconnection
+      .get("/productTypes")
+      .then((res) => {
+        const { productTypes } = res.data.productTypeList;
+        resolve(productTypes);
+      })
+      .catch((err) => {
+        reject(err);
+      });
+  });
+};
+
+export const getProductById = (productId) => {
+  return new Promise((resolve, reject) => {
+    fmconnection
+      .get("/product", {
+        params: { productId },
+      })
+      .then((res) => {
+        const productData = res.data.product;
+        const metadataArr = productData.metadata.keyval;
+        const metadataInfoObj = {};
+        for (let i = 0, len = metadataArr.length; i < len; i++) {
+          metadataInfoObj[metadataArr[i].key] = metadataArr[i].val;
+        }
+        productData["metadata"] = metadataInfoObj;
+        productData["references"] = productData.references.reference
+        resolve(productData);
+      })
+      .catch((err) => {
+        reject(err);
+      });
+  });
+};
+
+export const getProductPage = (productParams) => {
+  const {productType,productName, productPageNo} = productParams;
+  return new Promise((resolve, reject) => {
+    fmconnection
+      .get("/products", {
+        params: {
+          productTypeName: productType,
+          productName,
+          currentProductPage: productPageNo
+        },
+      })
+      .then((res) => {
+        resolve(res.data.productPage);
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+};
+
+export const ingestProduct = (
+  product,
+  productType,
+  productStructure,
+  onUploadProgress
+) => {
+  return new Promise((resolve, reject) => {
+    fmconnection
+      .post("/productWithFile", product, {
+        params: {
+          productType,
+          productStructure,
+        },
+        onUploadProgress,
+      })
+      .then((result) => {
+        resolve({ productId: result.data });
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+};
+
+export const ingestProductWithMetaFile = (files,onUploadProgress) => {
+  return new Promise((resolve,reject) => {
+    fmconnection.post("/productWithMeta",files,{
+      onUploadProgress
+    }).then(res => {
+      resolve({productId: res.data})
+    }).catch(err => {
+      reject(err)
+    })
+  })
+}
+
+export const removeProductById = (productId) => {
+  return new Promise((resolve, reject) => {
+    fmconnection
+      .delete("/removeProduct", {
+        params: { productId },
+      })
+      .then((res) => {
+        resolve(true);
+      })
+      .catch((err) => {
+        reject(err);
+      });
+  });
+};
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/services/wmservice.js b/react-components/oodt_opsui_sample_app/src/services/wmservice.js
new file mode 100644
index 0000000..a3a66c4
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/services/wmservice.js
@@ -0,0 +1,66 @@
+import { wmconnection } from "constants/connection";
+
+export const updateWorkflowStatus = (workflowInstanceId, state) => {
+  return new Promise((resolve, reject) => {
+    wmconnection
+      .post(
+        "/workflow/updatestatus?workflowInstanceId=" +
+          workflowInstanceId +
+          "&status=" +
+          state
+      )
+      .then((result) => {
+        resolve(result);
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+};
+
+export const getWorkflowList = (pageNo) => {
+  return new Promise((resolve, reject) => {
+    wmconnection
+      .get("/workflow/page",{
+        params: {
+          workflowPage: pageNo
+        }
+      })
+      .then((result) => {
+        resolve(result.data.workflowPageInstance);
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+};
+
+export const getRegisteredEvents = () => {
+  return new Promise((resolve, reject) => {
+    wmconnection
+      .get("/workflow/events")
+      .then((result) => {
+        resolve(result.data.workflowEvents.events);
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+}
+
+export const handleEvent = (eventName) => {
+  return new Promise((resolve, reject) => {
+    wmconnection
+      .post("/workflow/event",null,{
+        params: {
+          eventName: eventName
+        }
+      })
+      .then((result) => {
+        resolve(result);
+      })
+      .catch((error) => {
+        reject(error);
+      });
+  });
+}
\ No newline at end of file
diff --git a/react-components/oodt_opsui_sample_app/src/utils/utils.js b/react-components/oodt_opsui_sample_app/src/utils/utils.js
new file mode 100644
index 0000000..8fec007
--- /dev/null
+++ b/react-components/oodt_opsui_sample_app/src/utils/utils.js
@@ -0,0 +1,12 @@
+export const shrinkString = (originStr, maxChars, trailingCharCount) => {
+    let shrinkedStr = originStr;
+    const shrinkedLength = maxChars - trailingCharCount - 3;
+    if (originStr.length > shrinkedLength) {
+      const front = originStr.substr(0, shrinkedLength);
+      const mid = '...';
+      const end = originStr.substr(-trailingCharCount);
+      shrinkedStr = front + mid + end;
+    }
+
+    return shrinkedStr;
+}
\ No newline at end of file
diff --git a/react-components/swagger-implementations/file_manager.yaml b/react-components/swagger-implementations/file_manager.yaml
new file mode 100644
index 0000000..6268f09
--- /dev/null
+++ b/react-components/swagger-implementations/file_manager.yaml
@@ -0,0 +1,206 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#     the License.  You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#     Unless required by applicable law or agreed to in writing, software
+#     distributed under the License is distributed on an "AS IS" BASIS,
+#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#     See the License for the specific language governing permissions and
+#     limitations under the License.
+#
+
+swagger: '2.0'
+info:
+  description: |
+    This is a sandbox for  Apache OODT File Manager server. Find more on
+    [Apache OODT](https://oodt.apache.org/)
+  version: 1.0.0
+  title: Apache OODT File Manager Server
+  contact:
+    email: dev@oodt.apache.org
+  license:
+    name: Apache 2.0
+    url: http://www.apache.org/licenses/LICENSE-2.0.html
+host: 13.76.225.151:8080
+basePath: /cas_product_war/jaxrs/v2
+tags:
+  - name: Products
+    description: Everything about your Products
+  - name: ServerStatus
+    description: Everything about File Manager Health
+
+schemes:
+  - http
+paths:
+  /productWithFile:
+    post:
+      tags:
+        - Products
+      summary: Ingest new Products to the File Mananger
+      operationId: ingestProducts
+      consumes:
+        - multipart/form-data
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: productType
+          type: string
+          description: Product Type of the File (eg:GenerticFile)
+          required: true
+        - in: query
+          name: productStructure
+          type: string
+          description: Product Structure of the File (eg:Flat)
+          required: true
+        - in: formData
+          name: productFile
+          type: file
+          description: File object that needs to be ingested to the Server
+          required: true
+      responses:
+        500:
+          description: Internal Server Error
+
+  /productWithMeta:
+    post:
+      tags:
+        - Products
+      summary: Ingest new Products with corresponding Metadata to the File Mananger
+      operationId: ingestProductsWithMetadata
+      consumes:
+        - multipart/form-data
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: formData
+          name: productFile
+          type: file
+          description: File object that needs to be ingested to the Server
+          required: true
+        - in: formData
+          name: metadataFile
+          type: file
+          description: Corresponding Metadata file object that needs to be ingested to the Server
+          required: true
+      responses:
+        500:
+          description:  Internal Server Error
+
+  /productTypes:
+    get:
+      tags:
+        - Products
+      summary: Get product types
+      description: Get all available product types
+      operationId: findAllProductTypes
+      produces:
+        - application/json
+        - application/atom+xml
+        - application/rdf+xml
+        - application/rss+xml
+        - application/zip
+      responses:
+        200:
+          description: Successful operation
+        404:
+          description: No product type was found
+
+  /product:
+    get:
+      tags:
+        - Products
+      summary: Finds Product by productId
+      description: Retrieve product to a given productId
+      operationId: findProductById
+      produces:
+        - application/json
+        - application/atom+xml
+        - application/rdf+xml
+        - application/rss+xml
+        - application/zip
+      parameters:
+        - name: productId
+          in: query
+          description: productId of the needed product.(eg:d66b281c-c679-11e9-adce-cbb1c44aedca)
+          required: true
+          type: string
+      responses:
+        200:
+          description: Successful operation
+        404:
+          description: Product not Found
+
+  /products:
+    get:
+      tags:
+        - Products
+      summary: Finds Products by product Type name
+      description: Retrieve the first/next pages of ingested products by product Type name.
+      operationId: findProductssByProductName
+      produces:
+        - application/json
+        - application/atom+xml
+        - application/rdf+xml
+        - application/rss+xml
+      parameters:
+        - name: productTypeName
+          in: query
+          description: Product Type Name of needed products.(eg. GenericFile)
+          required: true
+          type: string
+        - name: currentProductPage
+          in: query
+          description: Product Type Name of needed products.(eg. GenericFile)
+          required: false
+          type: integer
+          format: int64
+      responses:
+        200:
+          description: successful operation
+        404:
+          description: Product not Found
+
+  /fmprodstatus:
+    get:
+      tags:
+        - ServerStatus
+      summary: Gives server status
+      description: Finds the server status,url,port of File Manager server
+      operationId: getFMServerStatus
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        200:
+          description: Successful operation
+
+  /removeProduct:
+    delete:
+      tags:
+        - Products
+      summary: Deletes a Product
+      operationId: deleteProducts
+      description: Removes a single Product by given productId
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - name: productId
+          in: query
+          description: productId of the needed product.(eg:d66b281c-c679-11e9-adce-cbb1c44aedca)
+          required: true
+          type: string
+      responses:
+        200:
+          description: sucessfully removed
+        404:
+          description: Product not found
\ No newline at end of file
diff --git a/react-components/swagger-implementations/workflow_manager.yaml b/react-components/swagger-implementations/workflow_manager.yaml
new file mode 100644
index 0000000..2c0345b
--- /dev/null
+++ b/react-components/swagger-implementations/workflow_manager.yaml
@@ -0,0 +1,230 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#     the License.  You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#     Unless required by applicable law or agreed to in writing, software
+#     distributed under the License is distributed on an "AS IS" BASIS,
+#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#     See the License for the specific language governing permissions and
+#     limitations under the License.
+#
+
+swagger: '2.0'
+info:
+  description: |
+    This is a sandbox for  Apache OODT Workflow Manager server. Find more on
+    [Apache OODT](https://oodt.apache.org/)
+  version: 1.0.0
+  title: Apache OODT Workflow Manager Server
+  contact:
+    email: dev@oodt.apache.org
+  license:
+    name: Apache 2.0
+    url: http://www.apache.org/licenses/LICENSE-2.0.html
+host: 13.76.225.151:8080
+basePath: /workflow_services_war/jaxrs/v2
+tags:
+  - name: Workflows
+    description: Everything about your Workflows
+
+
+schemes:
+  - http
+paths:
+
+  /workflowInst:
+    get:
+      tags:
+        - Workflows
+      summary: Finds workflow instance by workflow Instance Id
+      description: Retrieve workflow Instance to a given workflow Instance Id
+      operationId: findWorkflowInstanceByWFInsId
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - name: workflowInstId
+          in: query
+          description: workflowInstance Id of the needed workflow Instance.(eg:8100ba38-c302-11e9-b3ab-3be3a154a1d1)
+          required: true
+          type: string
+      responses:
+        200:
+          description: Successful operation
+        404:
+          description: Workflow not Found
+
+  /workflow/firstpage:
+    get:
+      tags:
+        - Workflows
+      summary: Retrieves Workflows
+      description: Retrieve the first page of running/finished/paused Workflow Instances
+      operationId: findWorkflows
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        200:
+          description: successful operation
+        404:
+          description: workflows not Found
+
+  /workflow/page:
+    get:
+      tags:
+        - Workflows
+      summary: get workflow instance page
+      description: Retrieve the specified page of running/finished/paused Workflow Instances
+      operationId: findWorkflows
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: workflowPage
+          schema:
+            type: integer
+          description: The page number of the desired workflow list page
+      responses:
+        200:
+          description: successful operation
+        404:
+          description: workflows not Found
+
+  /workflow/event:
+    post:
+      tags:
+        - Workflows
+      summary: Trigger workflow by event
+      description: Trigger the tasks in a configured workflow by a registered event 
+      operationId: triggerEvent
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: eventName
+          schema:
+            type: string
+          description: The workflow event name to trigger workflow
+      responses:
+        200:
+          description: successful operation
+        404:
+          description: Error triggering the event
+
+  /workflow/events:
+    get:
+      tags:
+        - Workflows
+      summary: get events
+      description: Get all registered workflow events
+      operationId: findAllEvents
+      produces:
+        - application/json
+        - application/xml
+      responses:
+        200:
+          description: successful operation
+        404:
+          description: getting events failed
+
+  /stop/workflow:
+    post:
+      tags:
+        - Workflows
+      summary: Stop running Workflows.
+      description: Stop a running workflow Instance to a given workflow Instance Id
+      operationId: stopWorkflows
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: workflowInstanceId
+          type: string
+          description: workflowInstance Id of the needed workflow Instance.(eg:8100ba38-c302-11e9-b3ab-3be3a154a1d1)
+          required: true
+      responses:
+        200:
+          description: successful operation
+        500:
+          description: Internal Server Error
+
+  /pause/workflow:
+    post:
+      tags:
+        - Workflows
+      summary: Pause running Workflows.
+      description: Pause a running workflow Instance to a given workflow Instance Id
+      operationId: pauseWorkflows
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: workflowInstanceId
+          type: string
+          description: workflowInstance Id of the needed workflow Instance.(eg:8100ba38-c302-11e9-b3ab-3be3a154a1d1)
+          required: true
+      responses:
+        200:
+          description: successful operation
+        500:
+          description: Internal Server Error
+
+  /resume/workflow:
+    post:
+      tags:
+        - Workflows
+      summary: Resume paused Workflows.
+      description: Resume a paused workflow Instance to a given workflow Instance Id
+      operationId: resumeWorkflows
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: workflowInstanceId
+          type: string
+          description: workflowInstance Id of the needed workflow Instance.(eg:8100ba38-c302-11e9-b3ab-3be3a154a1d1)
+          required: true
+      responses:
+        200:
+          description: successful operation
+        500:
+          description: Internal Server Error
+
+  /updatestatus/workflow:
+    post:
+      tags:
+        - Workflows
+      summary: Update status Workflows.
+      description: Update the status of  workflow Instance to a given workflow Instance Id and given status
+      operationId: updateStautsWorkflows
+      produces:
+        - application/json
+        - application/xml
+      parameters:
+        - in: query
+          name: workflowInstanceId
+          type: string
+          description: workflowInstance Id of the needed workflow Instance.(eg:8100ba38-c302-11e9-b3ab-3be3a154a1d1)
+          required: true
+        - in: query
+          name: status
+          type: string
+          description: Status of the Workflow to be set.(eg:Running/FINISHED/PAUSED...)
+          required: true
+      responses:
+        200:
+          description: successful operation
+        500:
+          description: Internal Server Error
\ No newline at end of file
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/batchmgr/AvroRpcBatchMgrProxy.java b/resource/src/main/java/org/apache/oodt/cas/resource/batchmgr/AvroRpcBatchMgrProxy.java
index 704eec6..7a87daf 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/batchmgr/AvroRpcBatchMgrProxy.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/batchmgr/AvroRpcBatchMgrProxy.java
@@ -41,9 +41,9 @@
 
     private ResourceNode remoteHost;
 
-    private Transceiver client;
+    private transient Transceiver client;
 
-    private AvroRpcBatchStub proxy;
+    private transient AvroRpcBatchStub proxy;
 
     private AvroRpcBatchMgr parent;
 
@@ -57,7 +57,7 @@
     public boolean nodeAlive() {
 
         try {
-            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getPort()));
+            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getHost(), remoteHost.getIpAddr().getPort()));
             this.proxy = (AvroRpcBatchStub) SpecificRequestor.getClient(AvroRpcBatchStub.class, client);
         } catch (IOException e) {
             e.printStackTrace();
@@ -80,7 +80,7 @@
     public boolean killJob() {
 
         try {
-            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getPort()));
+            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getHost(), remoteHost.getIpAddr().getPort()));
             this.proxy = (AvroRpcBatchStub) SpecificRequestor.getClient(AvroRpcBatchStub.class, client);
         } catch (IOException e) {
             LOG.log(Level.SEVERE, "Failed connection with the server.", e);
@@ -104,7 +104,7 @@
 
     public void run() {
         try {
-            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getPort()));
+            this.client = new NettyTransceiver(new InetSocketAddress(remoteHost.getIpAddr().getHost(), remoteHost.getIpAddr().getPort()));
             this.proxy = (AvroRpcBatchStub) SpecificRequestor.getClient(AvroRpcBatchStub.class, client);
         } catch (IOException e) {
             LOG.log(Level.SEVERE, "Failed connection with the server.", e);
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/cli/action/ResourceCliAction.java b/resource/src/main/java/org/apache/oodt/cas/resource/cli/action/ResourceCliAction.java
index 114be7f..ed6761e 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/cli/action/ResourceCliAction.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/cli/action/ResourceCliAction.java
@@ -47,11 +47,7 @@
         if (client != null) {
             return client;
         } else {
-            try {
-                return ResourceManagerFactory.getResourceManagerClient(new URL(getUrl()));
-            } catch (Exception e) {
-                throw new IllegalStateException("Unable to create client", e);
-            }
+            return ResourceManagerFactory.getResourceManagerClient(new URL(getUrl()));
         }
     }
 
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManager.java b/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManager.java
index 73dabde..2f73c69 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManager.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManager.java
@@ -466,7 +466,7 @@
         try {
             this.scheduler.getMonitor().getNodeById(nodeId).setCapacity(capacity);
         } catch (MonitorException e) {
-            logger.warn("Exception setting capacity on node {}: ", nodeId, e.getMessage());
+            logger.warn("Exception setting capacity on node {}: {}", nodeId, e.getMessage());
             return false;
         }
         return true;
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManagerClient.java b/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManagerClient.java
index 4dd0f33..a2f0033 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManagerClient.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/system/AvroRpcResourceManagerClient.java
@@ -46,13 +46,13 @@
 
     /* our log stream */
     private static Logger LOG = Logger
-            .getLogger(XmlRpcResourceManagerClient.class.getName());
+            .getLogger(AvroRpcResourceManagerClient.class.getName());
 
     /* resource manager url */
     private URL resMgrUrl = null;
 
-    Transceiver client;
-    ResourceManager proxy;
+    transient Transceiver client;
+    transient ResourceManager proxy;
 
     public AvroRpcResourceManagerClient(URL url) {
         // set up the configuration, if there is any
@@ -73,7 +73,7 @@
         }
 
         try {
-            this.client = new NettyTransceiver(new InetSocketAddress(url.getPort()));
+            this.client = new NettyTransceiver(new InetSocketAddress(url.getHost(), url.getPort()));
             proxy = (ResourceManager) SpecificRequestor.getClient(ResourceManager.class, client);
         } catch (IOException e) {
             e.printStackTrace();
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/system/ResourceManagerClient.java b/resource/src/main/java/org/apache/oodt/cas/resource/system/ResourceManagerClient.java
index d5cacbe..d54749c 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/system/ResourceManagerClient.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/system/ResourceManagerClient.java
@@ -26,10 +26,11 @@
 import org.apache.oodt.cas.resource.structs.exceptions.MonitorException;
 import org.apache.oodt.cas.resource.structs.exceptions.QueueManagerException;
 
+import java.io.Serializable;
 import java.net.URL;
 import java.util.List;
 
-public interface ResourceManagerClient {
+public interface ResourceManagerClient extends Serializable {
 
     boolean isJobComplete(String jobId) throws JobRepositoryException;
 
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/system/rpc/ResourceManagerFactory.java b/resource/src/main/java/org/apache/oodt/cas/resource/system/rpc/ResourceManagerFactory.java
index dd632b6..b7bc24c 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/system/rpc/ResourceManagerFactory.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/system/rpc/ResourceManagerFactory.java
@@ -17,10 +17,10 @@
 
 package org.apache.oodt.cas.resource.system.rpc;
 
+import org.apache.oodt.cas.resource.system.AvroRpcResourceManager;
+import org.apache.oodt.cas.resource.system.AvroRpcResourceManagerClient;
 import org.apache.oodt.cas.resource.system.ResourceManager;
 import org.apache.oodt.cas.resource.system.ResourceManagerClient;
-import org.apache.oodt.cas.resource.system.XmlRpcResourceManager;
-import org.apache.oodt.cas.resource.system.XmlRpcResourceManagerClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,7 +51,7 @@
     public static ResourceManager getResourceManager(int port) throws Exception {
         loadProperties();
         String resourceManagerClass = System.getProperty(ResourceManager.RESMGR_SYSTEM_PROPERTY,
-                XmlRpcResourceManager.class.getName());
+                AvroRpcResourceManager.class.getName());
 
         logger.info("Creating resource manager {} at port: {}", resourceManagerClass, port);
 
@@ -67,10 +67,10 @@
         return manager;
     }
 
-    public static ResourceManagerClient getResourceManagerClient(URL url) throws Exception {
+    public static ResourceManagerClient getResourceManagerClient(URL url) throws IllegalStateException {
         loadProperties();
         String resMgrClientClass = System.getProperty(ResourceManager.RESMGR_CLIENT_SYSTEM_PROPERTY,
-                XmlRpcResourceManagerClient.class.getName());
+                AvroRpcResourceManagerClient.class.getName());
 
         logger.info("Creating resource manager client {}", resMgrClientClass);
 
@@ -80,7 +80,7 @@
             client = (ResourceManagerClient) constructor.newInstance(url);
         } catch (Exception e) {
             logger.error("Unable to create resource manager", e);
-            throw e;
+            throw new IllegalStateException("Unable to create client", e);
         }
 
         return client;
diff --git a/resource/src/main/resources/logging.properties b/resource/src/main/resources/logging.properties
index c417673..17ac2cf 100644
--- a/resource/src/main/resources/logging.properties
+++ b/resource/src/main/resources/logging.properties
@@ -26,7 +26,7 @@
 # .level = DEBUG
     
 # Set the default logging level for SLF4JBridgeHandler instances
-# org.slf4j.bridge.SLF4JBridgeHandler.level = DEBUG
+# org.slf4j.bridge.SLF4JBridgeHandler.level = INFO
 
 # Set the default logging level for the subsystems
 
diff --git a/resource/src/main/resources/resource.properties b/resource/src/main/resources/resource.properties
index 071a13f..2355163 100644
--- a/resource/src/main/resources/resource.properties
+++ b/resource/src/main/resources/resource.properties
@@ -17,8 +17,8 @@
 # Properties required to configure the Resource Manager
 
 # Client and server classes to be used as resource managers
-resmgr.manager=org.apache.oodt.cas.resource.system.XmlRpcResourceManager
-resmgr.manager.client=org.apache.oodt.cas.resource.system.XmlRpcResourceManagerClient
+resmgr.manager=org.apache.oodt.cas.resource.system.AvroRpcResourceManager
+resmgr.manager.client=org.apache.oodt.cas.resource.system.AvroRpcResourceManagerClient
 
 # resource spark master
 resource.runner.spark.host = mesos://<ip>:5050
@@ -66,14 +66,14 @@
 org.apache.oodt.cas.resource.system.xmlrpc.connectionTimeout.minutes=60
 
 # XStream JobRepo configuration props
-org.apache.oodt.cas.resource.jobrepo.xstream.working.dir=[HOME]/job-repo
+org.apache.oodt.cas.resource.jobrepo.xstream.working.dir=[OODT_HOME]/job-repo
 org.apache.oodt.cas.resource.jobrepo.xstream.max.history=4000
 
 # XML Node Repository config properties
-org.apache.oodt.cas.resource.nodes.dirs=file://[HOME]/nodes,file://[HOME]/nodes2
+org.apache.oodt.cas.resource.nodes.dirs=file://[OODT_HOME]/nodes,file://[HOME]/nodes2
 
 # XML Queue Repository config properties
-org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[HOME]/nodes,file://[HOME]/nodes2
+org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[OODT_HOME]/nodes,file://[HOME]/nodes2
 
 # Load calculation weights
 org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadone=1
diff --git a/resource/src/test/resources/test.logging.properties b/resource/src/test/resources/test.logging.properties
index a602ce5..e4a9cef 100644
--- a/resource/src/test/resources/test.logging.properties
+++ b/resource/src/test/resources/test.logging.properties
@@ -21,9 +21,10 @@
 
 # Set the default logging level for the root logger
 .level = ALL
-    
+
 # Set the default logging level for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/webapp/components/pom.xml b/webapp/components/pom.xml
index 07ba846..6318541 100644
--- a/webapp/components/pom.xml
+++ b/webapp/components/pom.xml
@@ -27,6 +27,10 @@
   <artifactId>oodt-webapp-components</artifactId>
   <packaging>jar</packaging>
   <name>OODT Wicket Web Components</name>
+
+  <properties>
+    <docker.build.disabled>true</docker.build.disabled>
+  </properties>
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
      For example, within core/pom.xml:
diff --git a/webapp/fmbrowser/pom.xml b/webapp/fmbrowser/pom.xml
index 068b8d3..a6200aa 100644
--- a/webapp/fmbrowser/pom.xml
+++ b/webapp/fmbrowser/pom.xml
@@ -32,6 +32,8 @@
     <jetty.version>6.1.25</jetty.version>
     <slf4j.version>1.5.8</slf4j.version>
     <log4j.version>1.2.14</log4j.version>
+    <!-- Disable docker build -->
+    <docker.build.disabled>true</docker.build.disabled>
   </properties>
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
diff --git a/webapp/fmprod/README.md b/webapp/fmprod/README.md
new file mode 100644
index 0000000..f1858b3
--- /dev/null
+++ b/webapp/fmprod/README.md
@@ -0,0 +1,10 @@
+# FM Prod
+
+Following environment variable are required to be set
+
+```bash
+FILEMGR_URL=http://localhost:9000
+WORKFLOW_URL=http://localhost:9001
+FILEMGR_WORKINGDIR=/tmp
+
+```
\ No newline at end of file
diff --git a/webapp/fmprod/pom.xml b/webapp/fmprod/pom.xml
index 84f0cac..2ca2c58 100644
--- a/webapp/fmprod/pom.xml
+++ b/webapp/fmprod/pom.xml
@@ -31,6 +31,11 @@
     component. All-in-all, this project contributes an OODT LargeProductHandler
     component, that can be used to deliver and format a CAS product structure
     into an OODT XML Query Result Set.</description>
+  
+  <properties>
+    <docker.build.disabled>true</docker.build.disabled>
+  </properties>
+  
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
      For example, within core/pom.xml:
@@ -83,6 +88,10 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-transports-http-jetty</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpclient</artifactId>
     </dependency>
@@ -135,6 +144,9 @@
       <resource>
         <directory>${basedir}/src/main/dtd</directory>
       </resource>
+      <resource>
+        <directory>${basedir}/src/main/resources</directory>
+      </resource>
     </resources>
     <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
     <plugins>
@@ -143,8 +155,8 @@
         groupId org.apache.maven.plugins is assumed by default.
       -->
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-war-plugin</artifactId>
-        <version>2.4</version>
         <configuration>
           <webResources>
             <resource>
@@ -156,10 +168,14 @@
               </includes>
               <targetPath>META-INF/</targetPath>
             </resource>
+            <resource>
+              <directory>src/main/resources</directory>
+            </resource>
           </webResources>
         </configuration>
       </plugin>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <configuration>
           <descriptorRefs>
@@ -168,6 +184,7 @@
         </configuration>
       </plugin>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <systemProperties>
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/enums/ErrorType.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/enums/ErrorType.java
new file mode 100644
index 0000000..2a2339b
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/enums/ErrorType.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.enums;
+
+/**
+ * This is the Enumeration file for storing HTTP Exception types. Use these constants instead of
+ * hardcoding errors in REST API implementations
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+public enum ErrorType {
+  BAD_REQUEST_EXCEPTION("Malformed message"),
+  BAD_REQUEST_EXCEPTION_REFERENCE_RESOURCE(
+      "This URL requires a productId query parameter with a product ID value,"
+          + " e.g. /reference?productId=1787a257-df87-11e2-8a2d-e3f6264e86c5"),
+
+  BAD_REQUEST_EXCEPTION_PRODUCT_RESOURCE(
+      "Failed to load resource: the server responded with a status of 400"),
+  BAD_REQUEST_EXCEPTION_DATASET_RESOURCE(
+      "This URL requires a productTypeId query parameter and either a "
+          + "product type ID value or 'ALL' for all product types"),
+
+  BAD_REQUEST_EXCEPTION_TRANSFER_RESOURCE(
+      "This URL requires a dataStoreRef query parameter "
+          + "and a data store reference value, e.g. /transfer?dataStoreRef=file:/repository/test.txt/test.txt"),
+
+  INTERNAL_SERVER_ERROR("General Server Error"),
+
+  NOT_FOUND_EXCEPTION("Couldn’t find resource"),
+  NOT_FOUND_EXCEPTION_TRANSFER_RESOURCE(
+      "Unable to find a current file transfer status for data store reference: "),
+
+  CAS_PRODUCT_EXCEPTION_FILEMGR_CLIENT_UNAVILABLE(
+      "Unable to get the file manager client from the servlet context."),
+  CAS_PRODUCT_EXCEPTION_FILEMGR_WORKING_DIR_UNAVILABLE(
+      "Unable to get the file manager's" + " working directory from the servlet context.");
+
+  private String errorType;
+
+  ErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+
+  /** @return the errorType */
+  public String getErrorType() {
+    return errorType;
+  }
+
+  /** @param errorType the errorType to set */
+  public void setErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/errors/ErrorMessage.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/errors/ErrorMessage.java
new file mode 100644
index 0000000..604edf6
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/errors/ErrorMessage.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.errors;
+
+import javax.xml.bind.annotation.XmlRootElement;
+/**
+ * This is the Corresponding JAVA object for HTTP exception response payload
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement
+public class ErrorMessage {
+
+  /** Status code = 400,404,500 etc. */
+  private int errorStatusCode;
+
+  /** Basic Description for the Error = InternalServerException etc. */
+  private String errorType;
+
+  /** More Information regarding the thrown exception = Reason for exception in Server side */
+  private String exception;
+
+  public ErrorMessage() {}
+
+  public ErrorMessage(int errorStatusCode, String errorType, String exception) {
+    this.setErrorStatusCode(errorStatusCode);
+    this.setErrorType(errorType);
+    this.setException(exception);
+  }
+
+  public ErrorMessage(int errorStatusCode, String message) {
+    this.setErrorStatusCode(errorStatusCode);
+    this.setErrorType(message);
+  }
+
+  /** @return the errorStatusCode */
+  public int getErrorStatusCode() {
+    return errorStatusCode;
+  }
+
+  /** @param errorStatusCode the errorStatusCode to set */
+  public void setErrorStatusCode(int errorStatusCode) {
+    this.errorStatusCode = errorStatusCode;
+  }
+
+  /** @return the errorType */
+  public String getErrorType() {
+    return errorType;
+  }
+
+  /** @param errorType the errorType to set */
+  public void setErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+
+  /** @return the exception */
+  public String getException() {
+    return exception;
+  }
+
+  /** @param exception the exception to set */
+  public void setException(String exception) {
+    this.exception = exception;
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/BadRequestExceptionMapper.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/BadRequestExceptionMapper.java
new file mode 100644
index 0000000..f6f3ac6
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/BadRequestExceptionMapper.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.product.jaxrs.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.product.jaxrs.enums.ErrorType;
+import org.apache.oodt.cas.product.jaxrs.errors.ErrorMessage;
+import org.apache.oodt.cas.product.jaxrs.exceptions.BadRequestException;
+
+/**
+ * This is an exception mapper which maps "BadRequestException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class BadRequestExceptionMapper implements ExceptionMapper<BadRequestException> {
+
+  /** Maps BadRequestException to HTTP Response */
+  @Override
+  public Response toResponse(BadRequestException exception) {
+
+    /* Initialising ErrorMessage Entity for Mapping to Response */
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.BAD_REQUEST.getStatusCode(),
+            ErrorType.BAD_REQUEST_EXCEPTION.getErrorType(),
+            exception.getMessage());
+
+    /* Maps Error Status 400 to Response */
+    return Response.status(Response.Status.BAD_REQUEST)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/CasProductExceptionMapper.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/CasProductExceptionMapper.java
new file mode 100644
index 0000000..f9fe52a
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/CasProductExceptionMapper.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.product.exceptions.CasProductException;
+import org.apache.oodt.cas.product.jaxrs.errors.ErrorMessage;
+
+/**
+ * This is an exception mapper which maps "BadRequestException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class CasProductExceptionMapper implements ExceptionMapper<CasProductException> {
+
+  /** Maps CasProductException to HTTP Response */
+  @Override
+  public Response toResponse(CasProductException exception) {
+
+    /* Initialising ErrorMessage Entity for Mapping to Response */
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), exception.getMessage());
+
+    /* Maps Error Status 500 to Response */
+    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/InternalServerErrorExceptionMapper.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/InternalServerErrorExceptionMapper.java
new file mode 100644
index 0000000..4baa40c
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/InternalServerErrorExceptionMapper.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.product.jaxrs.errors.ErrorMessage;
+import org.apache.oodt.cas.product.jaxrs.exceptions.InternalServerErrorException;
+
+/**
+ * This is an exception mapper which maps "InternalServerException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class InternalServerErrorExceptionMapper
+    implements ExceptionMapper<InternalServerErrorException> {
+
+  /** Maps InternalServerException to HTTP Response */
+  @Override
+  public Response toResponse(InternalServerErrorException exception) {
+
+    /* Initialising ErrorMessage Entity for Mapping to Response */
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), exception.getMessage());
+
+    /* Maps Error Status 500 to Response */
+    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/NotFoundExceptionMapper.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/NotFoundExceptionMapper.java
new file mode 100644
index 0000000..291f123
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptionmappers/NotFoundExceptionMapper.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.product.jaxrs.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.product.jaxrs.enums.ErrorType;
+import org.apache.oodt.cas.product.jaxrs.errors.ErrorMessage;
+import org.apache.oodt.cas.product.jaxrs.exceptions.NotFoundException;
+
+/**
+ * This is an exception mapper which maps "NotFoundException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
+
+  /** Maps NotFoundException to HTTP Response */
+  @Override
+  public Response toResponse(NotFoundException exception) {
+
+    /* Initialising ErrorMessage Entity for Mapping to Response */
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.NOT_FOUND.getStatusCode(),
+            ErrorType.NOT_FOUND_EXCEPTION.getErrorType(),
+            exception.getMessage());
+
+    /* Maps Error Status 404 to Response */
+    return Response.status(Response.Status.NOT_FOUND)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/BadRequestException.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/BadRequestException.java
index 2e2de7a..d2424e7 100644
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/BadRequestException.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/BadRequestException.java
@@ -13,33 +13,30 @@
  * 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.oodt.cas.product.jaxrs.exceptions;
 
 import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
 /**
- * This type of exception returns an HTTP 'bad request' response (status code
- * 400) with an additional message.
+ * This type of exception returns an HTTP 'bad request' response (status code 400) with an
+ * additional message.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
-public class BadRequestException extends WebApplicationException
-{
-  // Auto-generated ID for serialization.
+public class BadRequestException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
   private static final long serialVersionUID = -705065311316100022L;
 
   /**
-   * Constructor that adds a message to the 'bad request' (status code 400)
-   * HTTP response.
+   * Constructor that adds a message to the 'bad request' (status code 400) HTTP response.
+   *
    * @param message the message to add to the response
    */
-  public BadRequestException(String message)
-  {
-    super(Response.status(Response.Status.BAD_REQUEST).entity(message)
-      .type(MediaType.TEXT_PLAIN).build());
+  public BadRequestException(String message) {
+    super(message);
   }
 }
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/InternalServerErrorException.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/InternalServerErrorException.java
index 5af0842..2e29fed 100644
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/InternalServerErrorException.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/InternalServerErrorException.java
@@ -13,33 +13,30 @@
  * 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.oodt.cas.product.jaxrs.exceptions;
 
 import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
 /**
- * This type of exception returns an HTTP 'internal server error' response
- * (status code 500) with an additional message.
+ * This type of exception returns an HTTP 'internal server error' response (status code 500) with an
+ * additional message.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
-public class InternalServerErrorException extends WebApplicationException
-{
-  // Auto-generated ID for serialization.
+public class InternalServerErrorException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
   private static final long serialVersionUID = -6132240509391531373L;
 
   /**
-   * Constructor that adds a message to the 'internal server error' (status code
-   * 500) HTTP response.
+   * Constructor that adds a message to the 'internal server error' (status code 500) HTTP response.
+   *
    * @param message the message to add to the response
    */
-  public InternalServerErrorException(String message)
-  {
-    super(Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(message)
-      .type(MediaType.TEXT_PLAIN).build());
+  public InternalServerErrorException(String message) {
+    super(message);
   }
 }
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/NotFoundException.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/NotFoundException.java
index 108ed97..d8fbf31 100644
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/NotFoundException.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/NotFoundException.java
@@ -13,33 +13,30 @@
  * 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.oodt.cas.product.jaxrs.exceptions;
 
 import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 
 /**
- * This type of exception returns an HTTP 'not found' response (status code 404)
- * with an additional message.
+ * This type of exception returns an HTTP 'not found' response (status code 404) with an additional
+ * message.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
-public class NotFoundException extends WebApplicationException
-{
-  // Auto-generated ID for serialization.
+public class NotFoundException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
   private static final long serialVersionUID = -3835077083758525919L;
 
   /**
-   * Constructor that adds a message to the 'not found' (status code 404)
-   * HTTP response.
+   * Constructor that adds a message to the 'not found' (status code 404) HTTP response.
+   *
    * @param message the message to add to the response
    */
-  public NotFoundException(String message)
-  {
-    super(Response.status(Response.Status.NOT_FOUND).entity(message)
-      .type(MediaType.TEXT_PLAIN).build());
+  public NotFoundException(String message) {
+    super(message);
   }
 }
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/package-info.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/package-info.java
index 7a69729..582f782 100644
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/package-info.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/exceptions/package-info.java
@@ -13,11 +13,12 @@
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
-*/
+ */
 
 /**
- * Contains classes that extend javax.ws.rs.WebApplicationException to provide
- * specific response status codes and messages.
+ * Contains classes that extend javax.ws.rs.WebApplicationException to provide specific response
+ * status codes and messages.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/filters/CORSFilter.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/filters/CORSFilter.java
new file mode 100644
index 0000000..0bc0323
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/filters/CORSFilter.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.filters;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.ext.Provider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * CORS Filter class for Proposing Apache OODT-2.0 FileManager REST-APIs This is the CORS
+ * (Cross-origin Resource Sharing) Filter class for FMProd REST APIs
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class CORSFilter implements Filter {
+
+  private static Logger logger = LoggerFactory.getLogger(CORSFilter.class);
+
+  @Override
+  public void init(FilterConfig filterConfig) throws ServletException {}
+
+  /**
+   * @param servletRequest
+   * @param servletResponse
+   * @param filterChain
+   * @throws IOException
+   * @throws ServletException
+   */
+  @Override
+  public void doFilter(
+      ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
+      throws IOException, ServletException {
+    HttpServletRequest request = (HttpServletRequest) servletRequest;
+    logger.debug("CORSFilter HTTP Request: {}", request.getMethod());
+
+    HttpServletResponse resp = (HttpServletResponse) servletResponse;
+
+    // Authorize (allow) all domains to consume the content
+    resp.addHeader("Access-Control-Allow-Origin", "*");
+    resp.addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST, DELETE");
+
+    // For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
+    if (request.getMethod().equals("OPTIONS")) {
+      resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+      return;
+    }
+
+    // pass the request along the filter chain
+    filterChain.doFilter(request, servletResponse);
+  }
+
+  @Override
+  public void destroy() {}
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/FMStatusResource.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/FMStatusResource.java
new file mode 100644
index 0000000..d1dd1ac
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/FMStatusResource.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.resources;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "FMStatus")
+@XmlType(propOrder = {"url", "serverUp", "message"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class FMStatusResource {
+
+  private String url;
+  private boolean serverUp;
+  private String message;
+
+  public FMStatusResource() {}
+
+  public FMStatusResource(String url, boolean serverUp, String message) {
+    this.url = url;
+    this.serverUp = serverUp;
+    this.message = message;
+  }
+
+  @XmlElement(name = "url")
+  public String getUrl() {
+    return url;
+  }
+
+  @XmlElement(name = "serverUp")
+  public boolean isServerUp() {
+    return serverUp;
+  }
+
+  @XmlElement(name = "message")
+  public String getMessage() {
+    return message;
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResource.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResource.java
new file mode 100644
index 0000000..47ef47f
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResource.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.resources;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.ProductPage;
+import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.metadata.Metadata;
+
+/**
+ * A JAX-RS resource representing a {@link ProductPage}.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement(name = "productPage")
+@XmlType(
+    propOrder = {
+      "pageSize",
+      "pageNum",
+      "totalPages",
+      "totalProducts",
+      "numOfHits",
+      "metadataResource",
+      "productResources"
+    })
+@XmlAccessorType(XmlAccessType.NONE)
+public class ProductPageResource {
+
+  private MetadataResource metadataResource;
+  private List<ProductResource> productResources = new ArrayList<ProductResource>();
+  private int pageSize;
+  private int pageNum;
+  private int totalPages;
+  private int totalProducts;
+  private long numOfHits;
+
+  /* The file manager's working directory for this resource, used for example
+   when creating zip archives.
+  */
+  private File workingDir;
+
+  /** Default constructor required by JAXB. */
+  public ProductPageResource() {}
+
+  /**
+   * Constructor that sets the ProductPage, metadata and working directory for the ProductPage
+   * resource.
+   *
+   * @param page the productpage for the dataset
+   * @param productMetaDataList the metadata for the dataset
+   * @param productReferencesList the References for the dataset
+   * @param workingDir the working directory for creating temporary files to attach to responses
+   */
+  public ProductPageResource(
+      ProductPage page,
+      List<Metadata> productMetaDataList,
+      List<List<Reference>> productReferencesList,
+      File workingDir) {
+
+    this.pageSize = page.getPageSize();
+    this.pageNum = page.getPageNum();
+    this.totalPages = page.getTotalPages();
+    this.numOfHits = page.getNumOfHits();
+
+    this.workingDir = workingDir;
+
+    List<Product> pageProducts = page.getPageProducts();
+    for (int i = 0; i < pageProducts.size(); i++) {
+
+      Product product = pageProducts.get(i);
+      Metadata metadata = productMetaDataList.get(i);
+      List<Reference> references = productReferencesList.get(i);
+
+      this.productResources.add(
+          new ProductResource(product, metadata, productReferencesList.get(0), workingDir));
+    }
+  }
+    
+  /**
+   * Sets the total no. of products in the repository
+   *
+   * @param total no. of products to be set
+   */
+  public void setTotalProducts(int totalProducts){
+    this.totalProducts = totalProducts;
+  }
+
+  /**
+   * Adds a {@link ProductResource} to the list of product resources for the dataset.
+   *
+   * @param resource the resource to add to the dataset.
+   */
+  public void addProductResource(ProductResource resource) {
+    productResources.add(resource);
+  }
+
+  /**
+   * Gets the working directory for the dataset.
+   *
+   * @return the working directory
+   */
+  public File getWorkingDir() {
+    return workingDir;
+  }
+
+  @XmlElement(name = "pageSize")
+  public int getPageSize() {
+    return this.pageSize;
+  }
+
+  @XmlElement(name = "pageNum")
+  public int getPageNum() {
+    return pageNum;
+  }
+
+  @XmlElement(name = "totalPages")
+  public int getTotalPages() {
+    return totalPages;
+  }
+    
+  /**
+   * Gets the total no. of products in the repository
+   *
+   * @return the total no. of products 
+   */
+  @XmlElement(name = "totalProducts")
+  public int getTotalProducts() {
+    return totalProducts;
+  }
+
+  @XmlElement(name = "numOfHits")
+  public long getNumOfHits() {
+    return numOfHits;
+  }
+
+  /**
+   * Gets the product resources for the dataset.
+   *
+   * @return the productResources
+   */
+  @XmlElementWrapper(name = "products")
+  @XmlElement(name = "product")
+  public List<ProductResource> getProductResources() {
+    return productResources;
+  }
+
+  /**
+   * Gets the metadata resource for the dataset.
+   *
+   * @return the metadata resource
+   */
+  @XmlElement(name = "metadata")
+  public MetadataResource getMetadataResource() {
+    return metadataResource;
+  }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductTypeListResource.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductTypeListResource.java
new file mode 100644
index 0000000..fafe685
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/resources/ProductTypeListResource.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.product.jaxrs.resources;
+
+import org.apache.oodt.cas.filemgr.structs.ProductType;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * A JAX-RS resource representing a list of {@link ProductType}.
+ *
+ * @author Pavindu 
+ */
+@XmlRootElement(name = "productTypeList")
+public class ProductTypeListResource {
+    /* the list of produdct types */
+    private List<ProductType> productTypes = new Vector<ProductType>();;
+
+    public ProductTypeListResource() {
+
+    }
+
+    public ProductTypeListResource(List<ProductType> productTypes) {
+        this.productTypes = productTypes;
+    }
+
+    @XmlElement(name = "productTypes")
+    public List<ProductType> getProductTypes(){
+        return this.productTypes;
+    }
+
+    public void setProductTypes(List<ProductType> productTypes){
+        this.productTypes = productTypes;
+    }
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/CasProductJaxrsService.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/CasProductJaxrsService.java
index ddb98de..031e9f5 100755
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/CasProductJaxrsService.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/CasProductJaxrsService.java
@@ -13,10 +13,23 @@
  * 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.oodt.cas.product.jaxrs.services;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.servlet.ServletContext;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import org.apache.oodt.cas.filemgr.structs.FileTransferStatus;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
@@ -24,6 +37,7 @@
 import org.apache.oodt.cas.filemgr.system.FileManagerClient;
 import org.apache.oodt.cas.metadata.Metadata;
 import org.apache.oodt.cas.product.exceptions.CasProductException;
+import org.apache.oodt.cas.product.jaxrs.enums.ErrorType;
 import org.apache.oodt.cas.product.jaxrs.exceptions.BadRequestException;
 import org.apache.oodt.cas.product.jaxrs.exceptions.NotFoundException;
 import org.apache.oodt.cas.product.jaxrs.resources.DatasetResource;
@@ -32,104 +46,88 @@
 import org.apache.oodt.cas.product.jaxrs.resources.TransferResource;
 import org.apache.oodt.cas.product.jaxrs.resources.TransfersResource;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.ServletContext;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-
 /**
- * Service class that handles HTTP requests and returns file manager entities
- * such as {@link Reference references} and {@link Product products} as
- * JAX-RS resources converted to different formats.
+ * Service class that handles HTTP requests and returns file manager entities such as {@link
+ * Reference references} and {@link Product products} as JAX-RS resources converted to different
+ * formats.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
-public class CasProductJaxrsService
-{
-  private static final Logger LOGGER = Logger.getLogger(CasProductJaxrsService
-    .class.getName());
+public class CasProductJaxrsService {
+  private static final Logger LOGGER = Logger.getLogger(CasProductJaxrsService.class.getName());
 
   // The servlet context, which is used to retrieve context parameters.
-  @Context
-  private ServletContext context;
-
-
+  @Context private ServletContext context;
 
   /**
-   * Gets an HTTP response that represents a {@link Reference} from a {@link
-   * Product} from the file manager.
+   * Gets an HTTP response that represents a {@link Reference} from a {@link Product} from the file
+   * manager.
+   *
    * @param productId the ID of the product that the reference belongs to
-   * @param refIndex the index of the reference within the product's list of
-   * references
-   * @return an HTTP response that represents a {@link Reference} from a {@link
-   * Product} from the file manager
+   * @param refIndex the index of the reference within the product's list of references
+   * @return an HTTP response that represents a {@link Reference} from a {@link Product} from the
+   *     file manager
    */
   @GET
   @Path("reference")
-  @Produces({"application/octet-stream", "application/xml", "application/json",
-    "application/atom+xml", "application/rdf+xml", "application/rss+xml",
-    "application/zip"})
+  @Produces({
+    "application/octet-stream",
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml",
+    "application/zip"
+  })
   public ReferenceResource getReference(
-    @QueryParam("productId") String productId,
-    @QueryParam("refIndex") int refIndex)
-  {
-    if (productId == null || productId.trim().equals(""))
-    {
-      throw new BadRequestException("This URL requires a productId query "
-        + "parameter with a product ID value, "
-        + "e.g. /reference?productId=1787a257-df87-11e2-8a2d-e3f6264e86c5");
+      @QueryParam("productId") String productId, @QueryParam("refIndex") int refIndex)
+      throws WebApplicationException {
+    if (productId == null || productId.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_REFERENCE_RESOURCE.getErrorType());
     }
 
-    try
-    {
+    try {
       FileManagerClient client = getContextClient();
       Product product = client.getProductById(productId);
       List<Reference> references = client.getProductReferences(product);
 
-      return new ReferenceResource(productId, refIndex,
-        references.get(refIndex), getContextWorkingDir());
-    }
-    catch (Exception e)
-    {
+      return new ReferenceResource(
+          productId, refIndex, references.get(refIndex), getContextWorkingDir());
+    } catch (Exception e) {
+      // Just for Logging Purposes
       String message = "Unable to find the requested resource.";
       LOGGER.log(Level.FINE, message, e);
-      throw new NotFoundException(message + " " + e.getMessage());
+
+      throw new NotFoundException(e.getMessage());
     }
   }
 
-
-
   /**
-   * Gets an HTTP response that represents a {@link Product} from the file
-   * manager.
+   * Gets an HTTP response that represents a {@link Product} from the file manager.
+   *
    * @param productId the ID of the product
-   * @return an HTTP response that represents a {@link Product} from the file
-   * manager
+   * @return an HTTP response that represents a {@link Product} from the file manager
    */
   @GET
   @Path("product")
-  @Produces({"application/xml", "application/json", "application/atom+xml",
-    "application/rdf+xml", "application/rss+xml", "application/zip"})
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml",
+    "application/zip"
+  })
   public ProductResource getProduct(@QueryParam("productId") String productId)
-  {
-    if (productId == null || productId.trim().equals(""))
-    {
-      throw new BadRequestException("This URL requires a productId query "
-        + "parameter with a product ID value, "
-        + "e.g. /product?productId=1787a257-df87-11e2-8a2d-e3f6264e86c5");
+      throws WebApplicationException {
+    if (productId == null || productId.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_PRODUCT_RESOURCE.getErrorType());
     }
 
-    try
-    {
+    try {
       FileManagerClient client = getContextClient();
 
       // Find the product.
@@ -138,43 +136,46 @@
 
       // Create the product resource, add the product data and return the
       // resource as the HTTP response.
-      return new ProductResource(product, client.getMetadata(product),
-        product.getProductReferences(), getContextWorkingDir());
-    }
-    catch (Exception e)
-    {
+      return new ProductResource(
+          product,
+          client.getMetadata(product),
+          product.getProductReferences(),
+          getContextWorkingDir());
+    } catch (Exception e) {
+      // Just for Logging Purposes
       String message = "Unable to find the requested resource.";
       LOGGER.log(Level.FINE, message, e);
-      throw new NotFoundException(message + " " + e.getMessage());
+
+      throw new NotFoundException(e.getMessage());
     }
   }
 
-
-
   /**
-   * Gets an HTTP response that represents a set of {@link Product products}
-   * from the file manager.
-   * @param productTypeId the ID of the {@link ProductType} for the data set or
-   * "ALL" to denote all product types
-   * @return an HTTP response that represents a set of {@link Product products}
-   * from the file manager
+   * Gets an HTTP response that represents a set of {@link Product products} from the file manager.
+   *
+   * @param productTypeId the ID of the {@link ProductType} for the data set or "ALL" to denote all
+   *     product types
+   * @return an HTTP response that represents a set of {@link Product products} from the file
+   *     manager
    */
   @GET
   @Path("dataset")
-  @Produces({"application/xml", "application/json", "application/atom+xml",
-   "application/rdf+xml", "application/rss+xml", "application/zip"})
-  public DatasetResource getDataset(
-    @QueryParam("productTypeId") String productTypeId)
-  {
-    if (productTypeId == null || productTypeId.trim().equals(""))
-    {
-      throw new BadRequestException("This URL requires a productTypeId query "
-        + "parameter and either a product type ID value or 'ALL' for all "
-        + "product types.");
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml",
+    "application/zip"
+  })
+  public DatasetResource getDataset(@QueryParam("productTypeId") String productTypeId)
+      throws WebApplicationException {
+    if (productTypeId == null || productTypeId.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_DATASET_RESOURCE.getErrorType());
     }
 
-    try
-    {
+    try {
       FileManagerClient client = getContextClient();
 
       String datasetId;
@@ -182,16 +183,13 @@
       Metadata datasetMetadata;
 
       List<ProductType> productTypes = new Vector<ProductType>();
-      if (productTypeId.equals("ALL"))
-      {
+      if (productTypeId.equals("ALL")) {
         productTypes = client.getProductTypes();
         datasetId = productTypeId;
         datasetName = productTypeId;
         datasetMetadata = new Metadata();
         datasetMetadata.addMetadata("ProductType", productTypeId);
-      }
-      else
-      {
+      } else {
         ProductType productType = client.getProductTypeById(productTypeId);
         productTypes.add(productType);
         datasetId = productType.getProductTypeId();
@@ -199,170 +197,154 @@
         datasetMetadata = productType.getTypeMetadata();
       }
 
-      String productDirPath = getContextWorkingDir().getCanonicalPath()
-        + "/" + datasetName;
+      String productDirPath = getContextWorkingDir().getCanonicalPath() + "/" + datasetName;
 
-      DatasetResource resource = new DatasetResource(datasetId, datasetName,
-        datasetMetadata, getContextWorkingDir());
+      DatasetResource resource =
+          new DatasetResource(datasetId, datasetName, datasetMetadata, getContextWorkingDir());
 
       // Add all products of the chosen type(s) to the dataset.
-      for (ProductType productType : productTypes)
-      {
-        for (Product product : client.getProductsByProductType(productType))
-        {
+      for (ProductType productType : productTypes) {
+        for (Product product : client.getProductsByProductType(productType)) {
           product.setProductReferences(client.getProductReferences(product));
-          resource.addProductResource(new ProductResource(product,
-            client.getMetadata(product), product.getProductReferences(),
-            new File(productDirPath)));
+          resource.addProductResource(
+              new ProductResource(
+                  product,
+                  client.getMetadata(product),
+                  product.getProductReferences(),
+                  new File(productDirPath)));
         }
       }
       return resource;
-    }
-    catch (Exception e)
-    {
+    } catch (Exception e) {
+      // Just for Logging Purposes
       String message = "Unable to find the requested resource.";
       LOGGER.log(Level.FINE, message, e);
-      throw new NotFoundException(message + " " + e.getMessage());
+
+      throw new NotFoundException(e.getMessage());
     }
   }
 
-
-
   /**
-   * Gets an HTTP response that represents the status of a currently active
-   * file transfer for the file manager.
+   * Gets an HTTP response that represents the status of a currently active file transfer for the
+   * file manager.
+   *
    * @param dataStoreRef the data store reference for the file being transferred
-   * @return an HTTP response that represents the status of a currently active
-   * file transfer for the file manager
+   * @return an HTTP response that represents the status of a currently active file transfer for the
+   *     file manager
    */
   @GET
   @Path("transfer")
-  @Produces({"application/xml", "application/json", "application/atom+xml",
-    "application/rdf+xml", "application/rss+xml"})
-  public TransferResource getTransfer(
-    @QueryParam("dataStoreRef") String dataStoreRef)
-  {
-    if (dataStoreRef == null || dataStoreRef.trim().equals(""))
-    {
-      throw new BadRequestException("This URL requires a dataStoreRef query "
-        + "parameter and a data store reference value, "
-        + "e.g. /transfer?dataStoreRef=file:/repository/test.txt/test.txt");
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml"
+  })
+  public TransferResource getTransfer(@QueryParam("dataStoreRef") String dataStoreRef)
+      throws WebApplicationException {
+    if (dataStoreRef == null || dataStoreRef.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_TRANSFER_RESOURCE.getErrorType());
     }
 
-    try
-    {
+    try {
       FileManagerClient client = getContextClient();
-      for (FileTransferStatus status : client.getCurrentFileTransfers())
-      {
+      for (FileTransferStatus status : client.getCurrentFileTransfers()) {
         Reference reference = status.getFileRef();
-        if (dataStoreRef.equals(reference.getDataStoreReference()))
-        {
+        if (dataStoreRef.equals(reference.getDataStoreReference())) {
           Product product = status.getParentProduct();
           Metadata metadata = client.getMetadata(product);
           return new TransferResource(product, metadata, status);
         }
       }
 
-      throw new Exception("Unable to find a current file transfer status for"
-        + "data store reference: " + dataStoreRef);
-    }
-    catch (Exception e)
-    {
+      throw new NotFoundException(
+          ErrorType.NOT_FOUND_EXCEPTION_TRANSFER_RESOURCE.getErrorType() + dataStoreRef);
+    } catch (Exception e) {
+      // Just for Logging Purposes
       String message = "Unable to find the requested resource.";
       LOGGER.log(Level.FINE, message, e);
-      throw new NotFoundException(message + " " + e.getMessage());
+
+      throw new NotFoundException(e.getMessage());
     }
   }
 
-
-
   /**
-   * Gets an HTTP response that represents the statuses of all currently active
-   * file transfers for the file manager, optionally filtered by product ID.
+   * Gets an HTTP response that represents the statuses of all currently active file transfers for
+   * the file manager, optionally filtered by product ID.
+   *
    * @param productId the ID of a product or ALL to denote all products
-   * @return an HTTP response that represents the statuses of all currently
-   * active file transfers for the file manager
+   * @return an HTTP response that represents the statuses of all currently active file transfers
+   *     for the file manager
    */
   @GET
   @Path("transfers")
-  @Produces({"application/xml", "application/json", "application/atom+xml",
-    "application/rdf+xml", "application/rss+xml"})
-  public TransfersResource getTransfers(
-    @QueryParam("productId") String productId)
-  {
-    if (productId == null || productId.trim().equals(""))
-    {
-      throw new BadRequestException("This URL requires a productId query "
-        + "parameter and either a valid product ID value or 'ALL' for all "
-        + "products.");
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml"
+  })
+  public TransfersResource getTransfers(@QueryParam("productId") String productId)
+      throws WebApplicationException {
+    if (productId == null || productId.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_DATASET_RESOURCE.getErrorType());
     }
 
-    try
-    {
-      List<TransferResource> transferResources =
-        new ArrayList<TransferResource>();
+    try {
+      List<TransferResource> transferResources = new ArrayList<TransferResource>();
       FileManagerClient client = getContextClient();
-      for (FileTransferStatus status : client.getCurrentFileTransfers())
-      {
+      for (FileTransferStatus status : client.getCurrentFileTransfers()) {
         Product product = status.getParentProduct();
-        if(productId.equals("ALL") || productId.equals(product.getProductId()))
-        {
+        if (productId.equals("ALL") || productId.equals(product.getProductId())) {
           Metadata metadata = client.getMetadata(product);
-          transferResources.add(
-            new TransferResource(product, metadata, status));
+          transferResources.add(new TransferResource(product, metadata, status));
         }
       }
       return new TransfersResource(productId, transferResources);
-    }
-    catch (Exception e)
-    {
+    } catch (Exception e) {
+      // Just for Logging Purposes
       String message = "Unable to find the requested resource.";
       LOGGER.log(Level.FINE, message, e);
-      throw new NotFoundException(message + " " + e.getMessage());
+
+      throw new NotFoundException(e.getMessage());
     }
   }
 
-
-
   /**
    * Gets the file manager's working directory from the servlet context.
+   *
    * @return the file manager working directory
-   * @throws Exception if an object cannot be retrieved from the context
-   * attribute
+   * @throws Exception if an object cannot be retrieved from the context attribute
    */
   public File getContextWorkingDir() throws CasProductException {
     Object workingDirObject = context.getAttribute("workingDir");
-    if (workingDirObject != null && workingDirObject instanceof File)
-    {
+    if (workingDirObject != null && workingDirObject instanceof File) {
       return (File) workingDirObject;
     }
 
-    String message = "Unable to get the file manager's working "
-      + "directory from the servlet context.";
+    String message = ErrorType.CAS_PRODUCT_EXCEPTION_FILEMGR_WORKING_DIR_UNAVILABLE.getErrorType();
     LOGGER.log(Level.WARNING, message);
     throw new CasProductException(message);
   }
 
-
-
   /**
    * Gets the file manager client instance from the servlet context.
+   *
    * @return the file manager client instance from the servlet context attribute
-   * @throws Exception if an object cannot be retrieved from the context
-   * attribute
+   * @throws Exception if an object cannot be retrieved from the context attribute
    */
-  public FileManagerClient getContextClient()
-      throws CasProductException {
+  public FileManagerClient getContextClient() throws CasProductException {
     // Get the file manager client from the servlet context.
     Object clientObject = context.getAttribute("client");
-    if (clientObject != null &&
-        clientObject instanceof FileManagerClient)
-    {
+    if (clientObject != null && clientObject instanceof FileManagerClient) {
       return (FileManagerClient) clientObject;
     }
 
-    String message = "Unable to get the file manager client from the "
-      + "servlet context.";
+    String message = ErrorType.CAS_PRODUCT_EXCEPTION_FILEMGR_CLIENT_UNAVILABLE.getErrorType();
     LOGGER.log(Level.WARNING, message);
     throw new CasProductException(message);
   }
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/FileManagerJaxrsServiceV2.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/FileManagerJaxrsServiceV2.java
new file mode 100644
index 0000000..c5487c0
--- /dev/null
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/services/FileManagerJaxrsServiceV2.java
@@ -0,0 +1,530 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.product.jaxrs.services;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.List;
+import javax.activation.DataHandler;
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.apache.commons.lang.StringUtils;
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.oodt.cas.filemgr.ingest.StdIngester;
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.structs.*;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.filemgr.system.FileManagerClient;
+import org.apache.oodt.cas.metadata.MetExtractor;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.metadata.SerializableMetadata;
+import org.apache.oodt.cas.metadata.extractors.MetReaderExtractor;
+import org.apache.oodt.cas.product.exceptions.CasProductException;
+import org.apache.oodt.cas.product.jaxrs.enums.ErrorType;
+import org.apache.oodt.cas.product.jaxrs.exceptions.BadRequestException;
+import org.apache.oodt.cas.product.jaxrs.exceptions.InternalServerErrorException;
+import org.apache.oodt.cas.product.jaxrs.exceptions.NotFoundException;
+import org.apache.oodt.cas.product.jaxrs.resources.FMStatusResource;
+import org.apache.oodt.cas.product.jaxrs.resources.ProductPageResource;
+import org.apache.oodt.cas.product.jaxrs.resources.ProductResource;
+import org.apache.oodt.cas.product.jaxrs.resources.ProductTypeListResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Service class for Proposing Apache OODT-2.0 FileManager REST-APIs This handles HTTP requests and
+ * returns file manager entities JAX-RS resources converted to different formats.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ * @author pavinduLakshan (Pavindu Lakshan)
+ */
+public class FileManagerJaxrsServiceV2 {
+
+  private static Logger logger = LoggerFactory.getLogger(FileManagerJaxrsServiceV2.class);
+
+  private static final String DATA_TRANSFER_FACTORY = 
+          "org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory";
+
+  // The servlet context, which is used to retrieve context parameters.
+  @Context private ServletContext context;
+  
+  private java.nio.file.Path tmpDir;
+  
+  public FileManagerJaxrsServiceV2() throws IOException {
+    tmpDir = Files.createTempDirectory("oodt");
+  }
+
+  /**
+   * Gets an HTTP request that represents a {@link ProductTypeListResource} from the file manager.
+   *
+   * @return an HTTP response that represents a {@link ProductTypeListResource} from the file manager
+   */
+  @GET
+  @Path("productTypes")
+  @Produces({
+          "application/xml",
+          "application/json",
+          "application/atom+xml",
+          "application/rdf+xml",
+          "application/rss+xml"
+  })
+  public ProductTypeListResource getProductTypes() throws WebApplicationException {
+    try {
+      FileManagerClient client = getContextClient();
+      List<ProductType> productTypes = client.getProductTypes();
+      return new ProductTypeListResource(productTypes);
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This method is for calculating the total number of products in the file manager and return it
+   *
+   * @return the total number of products in the file manager
+   */
+  public int getTotalNumOfProducts() throws WebApplicationException {
+    try {
+      int totalFiles = 0;
+      FileManagerClient client = getContextClient();
+      List<ProductType> productTypes = client.getProductTypes();
+      for(ProductType productType: productTypes){
+        totalFiles += client.getNumProducts(productType);
+      }
+      return totalFiles;
+    } catch (Exception e) {
+      throw new InternalServerErrorException(e.getMessage());
+    }
+  }
+
+  /**
+   * Gets an HTTP request that represents a {@link ProductPage} from the file manager.
+   *
+   * @param productTypeName the Name of a productType
+   * @param currentProductPage the current productPage
+   * @return an HTTP response that represents a {@link ProductPage} from the file manager
+   */
+  @GET
+  @Path("products")
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml"
+  })
+  public ProductPageResource getNextPage(
+      @QueryParam("productTypeName") String productTypeName,
+      @QueryParam("productName") String productName,
+      @QueryParam("currentProductPage") int currentProductPage)
+      throws WebApplicationException {
+
+    try {
+      FileManagerClient client = getContextClient();
+      Query query = new Query();
+      ProductPage productPage;
+      if (!StringUtils.isEmpty(productName)) {
+        Product product = client.getProductByName(productName);
+        List<Product> products = new ArrayList<Product>();
+        products.add(product);
+        productPage = new ProductPage(1, 1, 1, products);
+      }
+      else {
+        productPage = client.pagedQuery(query,client.getProductTypeByName(productTypeName),currentProductPage);
+      }
+      return getProductPageResource(client, productPage);
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This method is for creating a ProductPageResource Response and return it This method is for
+   * creating a ProductPageResource {@link ProductPage} Response and return it
+   *
+   * @param client FileManager client
+   * @param genericFile First/next/prev ProductPage
+   */
+  private ProductPageResource getProductPageResource(
+      FileManagerClient client, ProductPage genericFile)
+      throws CatalogException, CasProductException {
+
+    // List for storing Metadata of the products in the ProductPage
+    List<Metadata> proMetaDataList = new ArrayList<>();
+
+    // List for storing References of the products in the ProductPage
+    List<List<Reference>> proReferencesList = new ArrayList<>();
+
+    for (Product pro : genericFile.getPageProducts()) {
+      Metadata metadata = client.getMetadata(pro);
+      List<Reference> productReferences = pro.getProductReferences();
+      proMetaDataList.add(metadata);
+      proReferencesList.add(productReferences);
+    }
+
+    ProductPageResource pageResource = new ProductPageResource(
+            genericFile, proMetaDataList, proReferencesList, getContextWorkingDir());
+    int totalProducts = genericFile.getPageProducts().size() == 1 ? 1 : getTotalNumOfProducts();
+    pageResource.setTotalProducts(totalProducts);
+    return pageResource;
+  }
+
+  /**
+   * Gets the file manager's working directory from the servlet context.
+   *
+   * @return the file manager working directory
+   * @throws Exception if an object cannot be retrieved from the context attribute
+   */
+  public File getContextWorkingDir() throws CasProductException {
+    Object workingDirObject = context.getAttribute("workingDir");
+    if (workingDirObject != null && workingDirObject instanceof File) {
+      return (File) workingDirObject;
+    }
+
+    String message = ErrorType.CAS_PRODUCT_EXCEPTION_FILEMGR_WORKING_DIR_UNAVILABLE.getErrorType();
+    logger.debug("Exception Thrown: {}", message);
+    throw new CasProductException(message);
+  }
+
+  /**
+   * Gets the file manager client instance from the servlet context.
+   *
+   * @return the file manager client instance from the servlet context attribute
+   * @throws Exception if an object cannot be retrieved from the context attribute
+   */
+  public FileManagerClient getContextClient() throws CasProductException {
+    // Get the file manager client from the servlet context.
+    Object clientObject = context.getAttribute("client");
+    if (clientObject != null && clientObject instanceof FileManagerClient) {
+      return (FileManagerClient) clientObject;
+    }
+
+    String message = ErrorType.CAS_PRODUCT_EXCEPTION_FILEMGR_CLIENT_UNAVILABLE.getErrorType();
+    logger.debug("Exception Thrown: {}", message);
+    throw new CasProductException(message);
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link Product} from the file manager.
+   *
+   * @param productId the ID of the product
+   * @return an HTTP response that represents a {@link Product} from the file manager
+   */
+  @GET
+  @Path("product")
+  @Produces({
+    "application/xml",
+    "application/json",
+    "application/atom+xml",
+    "application/rdf+xml",
+    "application/rss+xml",
+    "application/zip"
+  })
+  public ProductResource getProduct(@QueryParam("productId") String productId)
+      throws WebApplicationException {
+    if (productId == null || productId.trim().equals("")) {
+      throw new BadRequestException(
+          ErrorType.BAD_REQUEST_EXCEPTION_PRODUCT_RESOURCE.getErrorType());
+    }
+
+    try {
+      FileManagerClient client = getContextClient();
+
+      // Find the product.
+      Product product = client.getProductById(productId);
+      product.setProductReferences(client.getProductReferences(product));
+
+      // Create the product resource, add the product data and return the
+      // resource as the HTTP response.
+      return new ProductResource(
+          product,
+          client.getMetadata(product),
+          product.getProductReferences(),
+          getContextWorkingDir());
+    } catch (Exception e) {
+      // Just for Logging Purposes
+      String message = "Unable to find the requested resource.";
+      logger.error(message, e);
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link Product} from the file manager.
+   *
+   * @param productFile the Product File to ingest
+   * @param productType ProductType of the ingesting Product - eg.GenericFile
+   * @param productStructure - Product Structure of the ingesting product - eg. Flat for
+   *     Files/Hierarchy for Directory
+   * @return an HTTP response that represents the Ingesting Id if success
+   */
+  @POST
+  @Path("productWithFile")
+  @Produces({"application/json", "application/xml"})
+  @Consumes({MediaType.MULTIPART_FORM_DATA})
+  public Response ingestProduct(
+      @Multipart("productFile") Attachment productFile,
+      @QueryParam("productType") String productType,
+      @QueryParam("productStructure") String productStructure) {
+    try {
+      // Take Data Handlers for Product and Metadata Files
+      DataHandler productFileDataHandler = productFile.getDataHandler();
+
+      // Get the input Streams of the CXF Attachments
+      InputStream productFileInputStream = productFileDataHandler.getInputStream();
+
+      // Write the Product File and MetaFiles to a temporary Files in server before ingest.
+      File inputProductFile =
+          writeToFileServer(
+              productFileInputStream, productFile.getContentDisposition().getParameter("filename"));
+
+      // Write Default Meta File
+      String defaultMetaFileContent =
+          "<cas:metadata xmlns:cas=\"http://oodt.jpl.nasa.gov/1.0/cas\">\n" + "</cas:metadata>";
+      writeToFileServer(
+          new ByteArrayInputStream(defaultMetaFileContent.getBytes(StandardCharsets.UTF_8)),
+          productFile.getContentDisposition().getParameter("filename") + ".met");
+
+      // Get File Manager and Its URL
+      FileManagerClient client = getContextClient();
+      URL fmURL = client.getFileManagerUrl();
+
+      // Use StdIngester for Simple File Ingesting
+      StdIngester ingester = new StdIngester(getDataTransferFactoryClass());
+
+      /*
+       * Use MetaReaderExtracter to extract File Metadata from Product File
+       *  * A Met Extractor that assumes that the .met file has already been generated.
+       */
+      MetExtractor metExtractor = new MetReaderExtractor();
+      Metadata prodMeta = metExtractor.extractMetadata(inputProductFile);
+
+      // Add Several Metadata to Metadata File
+      prodMeta.addMetadata(CoreMetKeys.FILENAME, inputProductFile.getName());
+      prodMeta.addMetadata(CoreMetKeys.PRODUCT_TYPE, productType);
+      prodMeta.addMetadata(CoreMetKeys.PRODUCT_STRUCTURE, productStructure);
+      prodMeta.addMetadata(CoreMetKeys.PRODUCT_NAME, inputProductFile.getName());
+
+      // Product File Location. should Only provide File Path without FileName
+      prodMeta.addMetadata(
+          CoreMetKeys.FILE_LOCATION,
+          (inputProductFile
+              .getAbsolutePath()
+              .substring(0, inputProductFile.getAbsolutePath().lastIndexOf(File.separator))));
+
+      String ingest = ingester.ingest(fmURL, inputProductFile, prodMeta);
+      return Response.ok(ingest).build();
+    } catch (Exception e) {
+      logger.error("Failed to ingest product", e);
+      throw new InternalServerErrorException(e.getMessage());
+    }
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link Product} from the file manager.
+   *
+   * @param productFile the Product File to ingest
+   * @param metadataFile the Metadata File to ingest
+   * @return an HTTP response that represents the Ingesting Id if success
+   */
+  @POST
+  @Path("productWithMeta")
+  @Produces({"application/json", "application/xml"})
+  @Consumes(MediaType.MULTIPART_FORM_DATA)
+  public Response ingestProduct(
+      @Multipart("productFile") Attachment productFile,
+      @Multipart("metadataFile") Attachment metadataFile) {
+    try {
+      // Take Data Handlers for Product and Metadata Files
+      DataHandler productFileDataHandler = productFile.getDataHandler();
+      DataHandler metadataFileDataHandler = metadataFile.getDataHandler();
+
+      // Get the input Streams of the CXF Attachments
+      InputStream productFileInputStream = productFileDataHandler.getInputStream();
+      InputStream metadataFileInputStream = metadataFileDataHandler.getInputStream();
+
+      // Write the Product File and MetaFiles to a temporary Files in server before ingest.
+      File inputProductFile =
+          writeToFileServer(
+              productFileInputStream, productFile.getContentDisposition().getParameter("filename"));
+
+      // Get File Manager and Its URL
+      FileManagerClient client = getContextClient();
+      URL fmURL = client.getFileManagerUrl();
+
+      // Use StdIngester for Simple File Ingesting
+      StdIngester ingester = new StdIngester(getDataTransferFactoryClass());
+
+      Metadata prodMeta = new SerializableMetadata(metadataFileInputStream);
+
+      // Add Several Metadata to Metadata File
+      prodMeta.addMetadata(CoreMetKeys.FILENAME, inputProductFile.getName());
+      prodMeta.addMetadata(CoreMetKeys.PRODUCT_NAME, inputProductFile.getName());
+
+      // Product File Location. should Only provide File Path without FileName
+      prodMeta.addMetadata(
+          CoreMetKeys.FILE_LOCATION,
+          (inputProductFile
+              .getAbsolutePath()
+              .substring(0, inputProductFile.getAbsolutePath().lastIndexOf(File.separator))));
+
+      String ingest = ingester.ingest(fmURL, inputProductFile, prodMeta);
+      return Response.ok(ingest).build();
+    } catch (Exception e) {
+      logger.error("Failed to ingest product", e);
+      throw new InternalServerErrorException(e.getMessage());
+    }
+  }
+
+  /**
+   * This method uses to Write an InputStream to File in the Server
+   *
+   * @param inputStream
+   * @param fileName
+   */
+  private File writeToFileServer(InputStream inputStream, String fileName) throws IOException {
+    java.nio.file.Path ingestedFile = tmpDir.resolve(fileName);
+    try (OutputStream outputStream = new FileOutputStream(ingestedFile.toFile())) {
+      int read = 0;
+      byte[] bytes = new byte[1024];
+      while ((read = inputStream.read(bytes)) != -1) {
+        outputStream.write(bytes, 0, read);
+      }
+      outputStream.flush();
+    }
+    
+    return ingestedFile.toFile();
+  }
+
+  /**
+   * This method is for getting the current status of FileManager component
+   *
+   * @return Response object with status and FMProb URL
+   */
+  @GET
+  @Path("fmprodstatus")
+  @Produces({"application/json", "application/xml"})
+  public Response getFmProductStatus() {
+    try {
+      FileManagerClient client = getContextClient();
+      String URL = client.getFileManagerUrl().toString();
+      boolean fmStatus = client.isAlive();
+      FMStatusResource status = new FMStatusResource(URL, fmStatus, "Server Status");
+      return Response.ok(status).build();
+    } catch (Exception e) {
+      throw new InternalServerErrorException(e.getMessage());
+    }
+  }
+
+  /**
+   * This method is for removing the ingested Products
+   *
+   * @return Response object with status and FMProb URL
+   */
+  @DELETE
+  @Path("removeProduct")
+  @Produces({"application/json", "application/xml"})
+  public Response removeIngestedProduct(@QueryParam("productId") String productId) {
+    try {
+      FileManagerClient client = getContextClient();
+
+      String URL = client.getFileManagerUrl().toString();
+      boolean fmStatus = client.isAlive();
+
+      boolean isRemoved = client.removeProduct(client.getProductById(productId));
+      FMStatusResource status =
+          new FMStatusResource(URL, fmStatus, "Product Removal Status: " + isRemoved);
+      return Response.ok(status).build();
+    } catch (Exception e) {
+      throw new InternalServerErrorException(e.getMessage());
+    }
+  }
+  
+  private String getDataTransferFactoryClass() {
+    String factoryClass = DATA_TRANSFER_FACTORY;
+    logger.debug("Using data transfer factory: {}", factoryClass);
+    return factoryClass;
+  }
+
+  //  /**
+  //   * This method is for retrieve a ingested Products
+  //   *
+  //   * @return Response object with status and FMProb URL
+  //   */
+  //  @GET
+  //  @Path("downloadProduct")
+  //
+  //  public Response downloadIngestedProduct(@QueryParam("productId") String productId) {
+  //    try {
+  //      FileManagerClient client = getContextClient();
+  //
+  //      String URL = client.getFileManagerUrl().toString();
+  //      boolean fmStatus = client.isAlive();
+  //
+  ////      String d = client.getProductById(productId).;//      byte[] bytes = client
+  //          byte [] bytes =
+  // client.retrieveFile("/home/castle/Software_tools/apache-tomcat-9.0.20/bin/ingestedFiles/Hello_2", 0, 2000);
+  //
+  //
+  //      //LOGGER.log(Level.INFO,"................."+d);
+  //      // Path of a file
+  //      String FILEPATH = "";
+  //      File outputFile = new File(FILEPATH);
+  //
+  //      // Initialize a pointer
+  //      // in file using OutputStream
+  //      OutputStream os = new FileOutputStream(outputFile);
+  //
+  //      os.write(bytes);
+  //
+  //      // Starts writing the bytes in it
+  //      os.write(bytes);
+  //      System.out.println("Successfully"
+  //          + " byte inserted");
+  //
+  //      // Close the file
+  //      os.close();
+  //      FMStatusResource status = new FMStatusResource(URL, fmStatus,"Product Retreval Status: " +
+  // bytes.length);
+  //      return Response.ok(status).build();
+  //
+  //    } catch (Exception e) {
+  //      throw new InternalServerErrorException(e.getMessage());
+  //    }
+  //  }
+
+}
diff --git a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/servlets/CasProductJaxrsServlet.java b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/servlets/CasProductJaxrsServlet.java
index 0dbb5ca..efe25e7 100755
--- a/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/servlets/CasProductJaxrsServlet.java
+++ b/webapp/fmprod/src/main/java/org/apache/oodt/cas/product/jaxrs/servlets/CasProductJaxrsServlet.java
@@ -13,7 +13,7 @@
  * 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.oodt.cas.product.jaxrs.servlets;
 
@@ -22,15 +22,11 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Enumeration;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
+import java.util.concurrent.ConcurrentHashMap;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
-
 import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet;
 import org.apache.oodt.cas.filemgr.structs.exceptions.ConnectionException;
 import org.apache.oodt.cas.filemgr.system.FileManagerClient;
@@ -38,29 +34,29 @@
 import org.apache.oodt.cas.metadata.util.PathUtils;
 import org.apache.oodt.cas.product.jaxrs.configurations.RdfConfiguration;
 import org.apache.oodt.cas.product.jaxrs.configurations.RssConfiguration;
+import org.apache.oodt.cas.product.jaxrs.filters.CORSFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
- * Provides a single place to initialize items such as the file manager client,
- * working directory and configurations when the web application is started up.
+ * Provides a single place to initialize items such as the file manager client, working directory
+ * and configurations when the web application is started up.
+ *
  * @author rlaidlaw
  * @version $Revision$
  */
-public class CasProductJaxrsServlet extends CXFNonSpringJaxrsServlet
-{
+public class CasProductJaxrsServlet extends CXFNonSpringJaxrsServlet {
   // Auto-generated ID for serialization.
   private static final long serialVersionUID = -1835790185000773396L;
 
-  private static final Logger LOGGER = Logger.getLogger(CasProductJaxrsServlet
-    .class.getName());
+  private static Logger logger = LoggerFactory.getLogger(CORSFilter.class);
 
   private static final int CONFIG_PARAM_LENGTH = 3;
   private static final int CONFIG_PARAM_FORMAT = 1;
   private static final int CONFIG_PARAM_NAME = 2;
 
-
   @Override
-  public void init(ServletConfig configuration) throws ServletException
-  {
+  public void init(ServletConfig configuration) throws ServletException {
     super.init(configuration);
     ServletContext context = configuration.getServletContext();
     initializeClient(context);
@@ -68,32 +64,27 @@
     initializeConfigurations(context);
   }
 
-
-
   /**
-   * Initializes the file manager client and stores it as a "client" context
-   * attribute by retrieving a value for the file manager URL from the servlet
-   * context.
+   * Initializes the file manager client and stores it as a "client" context attribute by retrieving
+   * a value for the file manager URL from the servlet context.
+   *
    * @param context the servlet context
-   * @throws ServletException if the servlet context parameter for the file
-   * manager working directory path cannot be found
+   * @throws ServletException if the servlet context parameter for the file manager working
+   *     directory path cannot be found
    */
-  private void initializeClient(ServletContext context) throws ServletException
-  {
-    try
-    {
+  private void initializeClient(ServletContext context) throws ServletException {
+    try {
       URL url;
       String urlParameter = context.getInitParameter("filemgr.url");
-      if (urlParameter != null)
-      {
+      if (urlParameter != null) {
         // Get the file manager URL from the context parameter.
         url = new URL(PathUtils.replaceEnvVariables(urlParameter));
-      }
-      else
-      {
+      } else {
         // Try the default URL for the file manager.
-        LOGGER.log(Level.WARNING, "Unable to find a servlet context parameter "
-          + "for the file manager URL.");
+        logger.debug(
+            "WARNING Exception Thrown: {}",
+            "Unable to find a servlet context parameter \"\n"
+                + "          + \"for the file manager URL.");
         url = new URL("http://localhost:9000");
       }
 
@@ -101,116 +92,90 @@
       // store the client as a context attribute for other objects to access.
       FileManagerClient client = RpcCommunicationFactory.createClient(url);
       context.setAttribute("client", client);
-    }
-    catch (MalformedURLException e)
-    {
+    } catch (MalformedURLException e) {
       String message = "Encountered a malformed URL for the file manager.";
-      LOGGER.log(Level.SEVERE, message, e);
+      logger.error("Exception Thrown: {}", message, e);
       throw new ServletException(message);
-    }
-    catch (ConnectionException e)
-    {
-      String message =
-        "Client could not establish a connection to the file manager.";
-      LOGGER.log(Level.SEVERE, message, e);
+    } catch (ConnectionException e) {
+      String message = "Client could not establish a connection to the file manager.";
+      logger.error("Exception Thrown: {}", message, e);
       throw new ServletException(message);
     }
   }
 
-
-
   /**
-   * Initializes the file manager working directory path and stores it as a
-   * "workingDir" context attribute by retrieving a value from the servlet
-   * context.
+   * Initializes the file manager working directory path and stores it as a "workingDir" context
+   * attribute by retrieving a value from the servlet context.
+   *
    * @param context the servlet context
-   * @throws ServletException if the servlet context parameter for the file
-   * manager working directory path cannot be found
+   * @throws ServletException if the servlet context parameter for the file manager working
+   *     directory path cannot be found
    */
-  private void initializeWorkingDir(ServletContext context)
-    throws ServletException
-  {
+  private void initializeWorkingDir(ServletContext context) throws ServletException {
     String workingDirPath = context.getInitParameter("filemgr.working.dir");
-    if (workingDirPath != null)
-    {
+    if (workingDirPath != null) {
       // Validate the path.
       File workingDir = new File(PathUtils.replaceEnvVariables(workingDirPath));
-      if (workingDir.exists() && workingDir.isDirectory())
-      {
+      if (workingDir.exists() && workingDir.isDirectory()) {
         context.setAttribute("workingDir", workingDir);
-        LOGGER.log(Level.FINE, "The file manager's working directory has been "
-          + "set up as " + workingDir.getAbsolutePath());
+        logger.debug(
+            "The file manager's working directory has been set up as {}",
+            workingDir.getAbsolutePath());
+      } else {
+        logger.debug(
+            "Unable to locate the working directory for the file manager: {}",
+            workingDir.getAbsolutePath());
       }
-      else
-      {
-        LOGGER.log(Level.SEVERE, "Unable to locate the working directory for "
-          + "the file manager.");
-      }
-    }
-    else
-    {
-      String message = "Unable to find a servlet context parameter for the file"
-        + " manager working directory path.";
-      LOGGER.log(Level.SEVERE, message);
+    } else {
+      String message =
+          "Unable to find a servlet context parameter for the file manager working directory path.";
+      logger.debug(message);
       throw new ServletException(message);
     }
   }
 
-
-
   /**
-   * Initializes the output configurations for various different formats and
-   * stores them in "configurations" attributes by retrieving values from the
-   * servlet context.
+   * Initializes the output configurations for various different formats and stores them in
+   * "configurations" attributes by retrieving values from the servlet context.
+   *
    * @param context the servlet context
    * @throws IOException if the specified file cannot be found or read
    */
-  public void initializeConfigurations(ServletContext context)
-  {
+  public void initializeConfigurations(ServletContext context) {
     Map<String, RdfConfiguration> rdfConfigurations =
-      new ConcurrentHashMap<String, RdfConfiguration>();
+        new ConcurrentHashMap<String, RdfConfiguration>();
     Map<String, RssConfiguration> rssConfigurations =
-      new ConcurrentHashMap<String, RssConfiguration>();
+        new ConcurrentHashMap<String, RssConfiguration>();
 
     Enumeration<String> enumeration = context.getInitParameterNames();
-    while (enumeration.hasMoreElements())
-    {
+    while (enumeration.hasMoreElements()) {
       String parameterName = enumeration.nextElement();
-      if(parameterName.startsWith("configuration"))
-      {
+      if (parameterName.startsWith("configuration")) {
         String[] values = parameterName.split("\\.");
-        if (values.length == CONFIG_PARAM_LENGTH)
-        {
+        if (values.length == CONFIG_PARAM_LENGTH) {
           String format = values[CONFIG_PARAM_FORMAT];
           String name = values[CONFIG_PARAM_NAME];
-          String value = PathUtils.replaceEnvVariables(
-            context.getInitParameter(parameterName));
+          String value = PathUtils.recursivelyReplaceEnvVariables(context.getInitParameter(parameterName));
 
-          try
-          {
-            if ("rdf".equals(format))
-            {
+          try {
+            if ("rdf".equals(format)) {
               RdfConfiguration configuration = new RdfConfiguration();
               configuration.initialize(new File(value));
               rdfConfigurations.put(name, configuration);
-            }
-            else if ("rss".equals(format))
-            {
+            } else if ("rss".equals(format)) {
               RssConfiguration configuration = new RssConfiguration();
               configuration.initialize(new File(value));
               rssConfigurations.put(name, configuration);
             }
+          } catch (IOException e) {
+            logger.error(
+                "Exception Thrown: The configuration '{}' could not be initialized (value: {}).",
+                parameterName,
+                value,
+                e);
           }
-          catch (IOException e)
-          {
-            LOGGER.log(Level.WARNING, "The configuration '" + parameterName
-              + "'could not be initialized (value: " + value + ").", e);
-          }
-        }
-        else
-        {
-          LOGGER.log(Level.FINE,
-            "Configuration context parameter could not be parsed.");
+        } else {
+          logger.debug("Exception Thrown: Configuration context parameter could not be parsed.");
         }
       }
     }
diff --git a/webapp/fmprod/src/main/webapp/WEB-INF/web.xml b/webapp/fmprod/src/main/webapp/WEB-INF/web.xml
index 155fb0d..2eca257 100644
--- a/webapp/fmprod/src/main/webapp/WEB-INF/web.xml
+++ b/webapp/fmprod/src/main/webapp/WEB-INF/web.xml
@@ -87,7 +87,11 @@
         org.apache.oodt.cas.product.jaxrs.writers.DatasetZipWriter,
         org.apache.oodt.cas.product.jaxrs.writers.DatasetRdfWriter,
         org.apache.oodt.cas.product.jaxrs.writers.DatasetRssWriter,
-        org.apache.oodt.cas.product.jaxrs.writers.TransfersRssWriter
+        org.apache.oodt.cas.product.jaxrs.writers.TransfersRssWriter,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.NotFoundExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.BadRequestExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.InternalServerErrorExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.CasProductExceptionMapper,
       </param-value>
     </init-param>
     <init-param>
@@ -114,6 +118,42 @@
   </servlet>
 
 
+  <servlet>
+    <servlet-name>CasProductJaxrsServletV2</servlet-name>
+    <servlet-class>
+      org.apache.oodt.cas.product.jaxrs.servlets.CasProductJaxrsServlet
+    </servlet-class>
+    <init-param>
+      <param-name>jaxrs.serviceClasses</param-name>
+      <param-value>
+        org.apache.oodt.cas.product.jaxrs.services.FileManagerJaxrsServiceV2
+      </param-value>
+    </init-param>
+    <init-param>
+      <param-name>jaxrs.providers</param-name>
+      <param-value>
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.NotFoundExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.BadRequestExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.InternalServerErrorExceptionMapper,
+        org.apache.oodt.cas.product.jaxrs.exceptionmappers.CasProductExceptionMapper,
+      </param-value>
+    </init-param>
+    <init-param>
+      <param-name>jaxrs.extensions</param-name>
+      <param-value>
+        file=application/octet-stream
+        json=application/json
+        rdf=application/rdf+xml
+        rss=application/rss+xml
+        xml=application/xml
+        zip=application/zip
+      </param-value>
+    </init-param>
+  </servlet>
+
+
+
+
   <servlet-mapping>
     <servlet-name>RSSServlet</servlet-name>
     <url-pattern>/viewRecent</url-pattern>
@@ -144,8 +184,27 @@
     <url-pattern>/dataset</url-pattern>
   </servlet-mapping>
 
+  <!--FM Product JAXRS V2 REST APIs mapping-->
+  <servlet-mapping>
+    <servlet-name>CasProductJaxrsServletV2</servlet-name>
+    <url-pattern>/jaxrs/v2/*</url-pattern>
+  </servlet-mapping>
+
   <servlet-mapping>
     <servlet-name>CasProductJaxrsServlet</servlet-name>
     <url-pattern>/jaxrs/*</url-pattern>
   </servlet-mapping>
+
+  <!-- CORS Header Filtering -->
+  <filter>
+    <filter-name>CorsFilter</filter-name>
+    <filter-class>org.apache.oodt.cas.product.jaxrs.filters.CORSFilter</filter-class>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>CorsFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+
 </web-app>
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/DatasetResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/DatasetResourceTest.java
index 6101f62..530e51e 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/DatasetResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/DatasetResourceTest.java
@@ -23,13 +23,11 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
 import org.apache.oodt.cas.filemgr.structs.Reference;
@@ -70,7 +68,7 @@
     List<Reference> references1 = new ArrayList<Reference>();
     references1.add(reference1);
 
-    Hashtable metadataEntries1 = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries1 = new HashMap<>();
     metadataEntries1.put("product1_meta", "test1");
     Metadata metadata1 = new Metadata();
     metadata1.addMetadata(metadataEntries1);
@@ -91,7 +89,7 @@
     List<Reference> references2 = new ArrayList<Reference>();
     references2.add(reference2);
 
-    Hashtable metadataEntries2 = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries2 = new HashMap<>();
     metadataEntries2.put("product2_meta", "test2");
     Metadata metadata2 = new Metadata();
     metadata2.addMetadata(metadataEntries2);
@@ -106,7 +104,7 @@
 
     // Create a DatasetResource using ProductType, Metadata and ProductResource
     // instances.
-    Hashtable metadataEntries3 = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries3 = new HashMap<>();
     metadataEntries3.put("dataset_meta", "test3");
     Metadata metadata3 = new Metadata();
     metadata3.addMetadata(metadataEntries3);
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/MetadataResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/MetadataResourceTest.java
index 853bb3f..ffd15c4 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/MetadataResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/MetadataResourceTest.java
@@ -22,13 +22,11 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.metadata.Metadata;
 import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLUnit;
@@ -65,7 +63,7 @@
       + "</metadata>";
 
     // Create a MetadataResource using a Metadata instance.
-    Hashtable metadataEntries = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries = new HashMap<>();
     metadataEntries.put("1", "one");
     metadataEntries.put("2", "two");
     metadataEntries.put("3", "three");
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResourceTest.java
new file mode 100644
index 0000000..c5315b0
--- /dev/null
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductPageResourceTest.java
@@ -0,0 +1,159 @@
+package org.apache.oodt.cas.product.jaxrs.resources;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Vector;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.ProductPage;
+import org.apache.oodt.cas.filemgr.structs.ProductType;
+import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.tika.mime.MimeTypeException;
+import org.apache.tika.mime.MimeTypes;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.junit.Test;
+import org.xml.sax.SAXException;
+
+/**
+ * Implements tests for methods in the {@link ProductPageResource} class.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+public class ProductPageResourceTest {
+
+  @Test
+  public void testXmlMarshalling()
+      throws JAXBException, IOException, SAXException, MimeTypeException {
+
+    // Create a ProductResource using ProductType, Reference, Metadata and
+    // Product instances.
+    HashMap<String, Object> metadataEntries = new HashMap<>();
+    metadataEntries.put("CAS.Test", "test value");
+    Metadata metadata = new Metadata();
+    metadata.addMetadata(metadataEntries);
+
+    List<Metadata> metadataList = new Vector<>();
+    metadataList.add(metadata);
+
+    Reference reference =
+        new Reference("original", "dataStore", 1000, new MimeTypes().forName("text/plain"));
+    List<Reference> references = new ArrayList<>();
+    references.add(reference);
+
+    List<List<Reference>> productReferencesList = new Vector<>();
+    productReferencesList.add(references);
+
+    ProductType productType =
+        new ProductType("1", "GenericFile", "test type", "repository", "versioner");
+
+    Product product = new Product();
+    product.setProductId("123");
+    product.setProductName("test.txt");
+    product.setProductStructure(Product.STRUCTURE_FLAT);
+    product.setProductType(productType);
+    product.setTransferStatus("RECEIVED");
+
+    List<Product> pageProducts = new Vector<>();
+    pageProducts.add(product);
+
+    ProductPage productPage = new ProductPage(1, 1, 20, pageProducts);
+
+    //      Create a ProductPageResource using Reference, Metadata and Product instances.
+    ProductPageResource resource =
+        new ProductPageResource(productPage, metadataList, productReferencesList, new File("/tmp"));
+
+    //      Generate the expected output.
+    String expectedXml =
+        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+            + "<productPage>"
+            + "<pageSize>"
+            + resource.getPageSize()
+            + "</pageSize>"
+            + "<pageNum>"
+            + resource.getPageNum()
+            + "</pageNum>"
+            + "<totalPages>"
+            + resource.getTotalPages()
+            + "</totalPages>"
+            + "<totalProducts>"
+            + resource.getTotalProducts()
+            + "</totalProducts>"
+            + "<numOfHits>"
+            + resource.getNumOfHits()
+            + "</numOfHits>"
+            + "<products>"
+            + "<product>"
+            + "<id>"
+            + product.getProductId()
+            + "</id>"
+            + "<name>"
+            + product.getProductName()
+            + "</name>"
+            + "<structure>"
+            + product.getProductStructure()
+            + "</structure>"
+            + "<type>"
+            + productType.getName()
+            + "</type>"
+            + "<transferStatus>"
+            + product.getTransferStatus()
+            + "</transferStatus>"
+            + "<metadata>"
+            + "<keyval>"
+            + "<key>"
+            + metadataList.get(0).getAllKeys().get(0)
+            + "</key>"
+            + "<val>"
+            + metadataList.get(0).getAllValues().get(0)
+            + "</val>"
+            + "</keyval>"
+            + "</metadata>"
+            + "<references>"
+            + "<reference>"
+            + "<productId>"
+            + product.getProductId()
+            + "</productId>"
+            + "<refIndex>0</refIndex>"
+            + "<dataStoreReference>"
+            + productReferencesList.get(0).get(0).getDataStoreReference()
+            + "</dataStoreReference>"
+            + "<originalReference>"
+            + productReferencesList.get(0).get(0).getOrigReference()
+            + "</originalReference>"
+            + "<mimeType>"
+            + productReferencesList.get(0).get(0).getMimeType().getName()
+            + "</mimeType>"
+            + "<fileSize>"
+            + productReferencesList.get(0).get(0).getFileSize()
+            + "</fileSize>"
+            + "</reference>"
+            + "</references>"
+            + "</product>"
+            + "</products>"
+            + "</productPage>";
+
+    // Set up a JAXB context and marshall the ProductResource to XML.
+    JAXBContext context = JAXBContext.newInstance(resource.getClass());
+    Marshaller marshaller = context.createMarshaller();
+    StringWriter writer = new StringWriter();
+    marshaller.marshal(resource, writer);
+
+    // Compare the expected and actual outputs.
+    XMLUnit.setIgnoreWhitespace(true);
+    XMLUnit.setIgnoreComments(true);
+    XMLUnit.setIgnoreAttributeOrder(true);
+    Diff diff = new Diff(expectedXml, writer.toString());
+    assertTrue(
+        "The output XML was different to the expected XML: " + diff.toString(), diff.identical());
+  }
+}
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductResourceTest.java
index 6cf9c12..a6a6bbf 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ProductResourceTest.java
@@ -23,13 +23,11 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
 import org.apache.oodt.cas.filemgr.structs.Reference;
@@ -62,7 +60,7 @@
   {
     // Create a ProductResource using ProductType, Reference, Metadata and
     // Product instances.
-    Hashtable metadataEntries = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries = new HashMap<>();
     metadataEntries.put("CAS.Test", "test value");
     Metadata metadata = new Metadata();
     metadata.addMetadata(metadataEntries);
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ReferenceResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ReferenceResourceTest.java
index 3e27685..ea267ab 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ReferenceResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/ReferenceResourceTest.java
@@ -22,11 +22,9 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.StringWriter;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.filemgr.structs.Reference;
 import org.apache.tika.mime.MimeTypeException;
 import org.apache.tika.mime.MimeTypes;
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransferResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransferResourceTest.java
index 16e89ad..25d0697 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransferResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransferResourceTest.java
@@ -21,12 +21,10 @@
 
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.Hashtable;
-
+import java.util.HashMap;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.filemgr.structs.FileTransferStatus;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
@@ -60,7 +58,7 @@
   {
     // Create a TransferResource using ProductType, Product, Metadata, Reference
     // and FileTransferStatus instances.
-    Hashtable metadataEntries = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries = new HashMap<>();
     metadataEntries.put("CAS.ProductReceivedTime", "2013-09-12T16:25:50.662Z");
     Metadata metadata = new Metadata();
     metadata.addMetadata(metadataEntries);
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransfersResourceTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransfersResourceTest.java
index e490bc6..bb79984 100644
--- a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransfersResourceTest.java
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs/resources/TransfersResourceTest.java
@@ -22,13 +22,11 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-
 import org.apache.oodt.cas.filemgr.structs.FileTransferStatus;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductType;
@@ -62,7 +60,7 @@
   {
     // Create a FileTransferStatus instance using Metadata, Reference,
     // ProductType and Product instances.
-    Hashtable metadataEntries1 = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries1 = new HashMap<>();
     metadataEntries1.put("CAS.ProductReceivedTime", "2013-09-12T16:25:50.662Z");
     Metadata metadata1 = new Metadata();
     metadata1.addMetadata(metadataEntries1);
@@ -85,7 +83,7 @@
 
     // Create another FileTransferStatus instance using Metadata, Reference,
     // ProductType and Product instances.
-    Hashtable metadataEntries2 = new Hashtable<String, Object>();
+    HashMap<String, Object> metadataEntries2 = new HashMap<>();
     metadataEntries2.put("CAS.ProductReceivedTime", "2011-04-11T11:59:59.662Z");
     Metadata metadata2 = new Metadata();
     metadata2.addMetadata(metadataEntries2);
@@ -108,7 +106,7 @@
 
     // Create a TransfersResource using the two FileTransferStatus instances to
     // generate TransferResource instances for the TransfersResource.
-    List<TransferResource> resources = new ArrayList<TransferResource>();
+    List<TransferResource> resources = new ArrayList<>();
     resources.add(new TransferResource(product1, metadata1, status1));
     resources.add(new TransferResource(product2, metadata2, status2));
     TransfersResource resource = new TransfersResource("ALL", resources);
diff --git a/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs_rest/RestAPITest.java b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs_rest/RestAPITest.java
new file mode 100644
index 0000000..c2870c9
--- /dev/null
+++ b/webapp/fmprod/src/test/java/org/apache/oodt/cas/product/jaxrs_rest/RestAPITest.java
@@ -0,0 +1,45 @@
+package org.apache.oodt.cas.product.jaxrs_rest;
+
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.oodt.cas.product.jaxrs.resources.ProductResource;
+import org.apache.oodt.cas.product.jaxrs.services.CasProductJaxrsService;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RestAPITest extends Assert {
+//    private final static String ENDPOINT_ADDRESS = "http://localhost:8080/cas_product_war/jaxrs/product?productId=" +"";
+//    private static Server server;
+//
+//    @BeforeClass
+//    public static void initialize() throws Exception {
+//        startServer();
+//    }
+//
+//    private static void startServer() throws Exception {
+//        JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
+//        sf.setResourceProvider(CasProductJaxrsService.class,
+//        new SingletonResourceProvider(new CasProductJaxrsService(), true));
+//        sf.setResourceClasses(CasProductJaxrsService.class);
+//        sf.setAddress(ENDPOINT_ADDRESS);
+//        server = sf.create();
+//    }
+//
+//    @AfterClass
+//    public static void destroy() {
+//        server.stop();
+//        server.destroy();
+//    }
+//
+//    @Test
+//    public void testGetProductResourceWithWebClient() {
+//        WebClient client = WebClient.create(ENDPOINT_ADDRESS);
+//        ProductResource productResource = client.get(ProductResource.class);
+//        assertEquals(0, productResource.getProductId());
+//
+//    }
+}
diff --git a/webapp/fmprod/src/test/org/apache/oodt/product/handlers/ofsn/util/OFSNUtilsTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/product/handlers/ofsn/util/OFSNUtilsTest.java
similarity index 100%
rename from webapp/fmprod/src/test/org/apache/oodt/product/handlers/ofsn/util/OFSNUtilsTest.java
rename to webapp/fmprod/src/test/java/org/apache/oodt/product/handlers/ofsn/util/OFSNUtilsTest.java
diff --git a/webapp/fmprod/src/test/org/apache/oodt/xmlquery/ChunkedProductInputStreamTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/xmlquery/ChunkedProductInputStreamTest.java
similarity index 100%
rename from webapp/fmprod/src/test/org/apache/oodt/xmlquery/ChunkedProductInputStreamTest.java
rename to webapp/fmprod/src/test/java/org/apache/oodt/xmlquery/ChunkedProductInputStreamTest.java
diff --git a/webapp/fmprod/src/test/org/apache/oodt/xmlquery/LargeResultTest.java b/webapp/fmprod/src/test/java/org/apache/oodt/xmlquery/LargeResultTest.java
similarity index 100%
rename from webapp/fmprod/src/test/org/apache/oodt/xmlquery/LargeResultTest.java
rename to webapp/fmprod/src/test/java/org/apache/oodt/xmlquery/LargeResultTest.java
diff --git a/webapp/fmprod/src/test/resources/test.logging.properties b/webapp/fmprod/src/test/resources/test.logging.properties
index 9a195df..933e7ce 100644
--- a/webapp/fmprod/src/test/resources/test.logging.properties
+++ b/webapp/fmprod/src/test/resources/test.logging.properties
@@ -21,7 +21,7 @@
 handlers = java.util.logging.ConsoleHandler
 
 # Logging level for the root logger
-.level = FINE
+.level = ALL
 
 # Logging level for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.level = FINE
diff --git a/webapp/tomcat/Dockerfile b/webapp/tomcat/Dockerfile
new file mode 100644
index 0000000..849b0c5
--- /dev/null
+++ b/webapp/tomcat/Dockerfile
@@ -0,0 +1,6 @@
+FROM tomcat:9.0.50-jdk8-openjdk-slim-buster
+
+COPY target/webapps/workflow-services-1.10-SNAPSHOT.war /$CATALINA_HOME/webapps/workflow-services.war
+COPY target/webapps/cas-product-1.10-SNAPSHOT.war /$CATALINA_HOME/webapps/filemgr-services.war
+
+ENV FMPROD_HOME="${CATALINA_HOME}/webapps/filemgr-services"
diff --git a/webapp/tomcat/pom.xml b/webapp/tomcat/pom.xml
new file mode 100644
index 0000000..da70e35
--- /dev/null
+++ b/webapp/tomcat/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more contributor
+  license agreements.  See the NOTICE.txt file distributed with this work for
+  additional information regarding copyright ownership.  The ASF licenses this
+  file to you under the Apache License, Version 2.0 (the "License"); you may not
+  use this file except in compliance with the License.  You may obtain a copy of
+  the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+  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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.oodt</groupId>
+        <artifactId>oodt-core</artifactId>
+        <version>1.10-SNAPSHOT</version>
+        <relativePath>../../core/pom.xml</relativePath>
+    </parent>
+    <artifactId>oodt-webapps</artifactId>
+    <packaging>pom</packaging>
+    <name>OODT Webapps</name>
+    <description>OODT Webapps</description>
+
+    <properties>
+        <docker.build.disabled>false</docker.build.disabled>
+        <docker.image.name>oodt/tomcat:latest</docker.image.name>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>cas-product</artifactId>
+            <type>war</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.oodt</groupId>
+            <artifactId>workflow-services</artifactId>
+            <type>war</type>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.2.0</version>
+                <executions>
+                    <execution>
+                        <id>unpack</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.oodt</groupId>
+                                    <artifactId>cas-product</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>war</type>
+                                    <overWrite>false</overWrite>
+                                    <outputDirectory>${project.build.directory}/webapps</outputDirectory>
+                                    <includes>*/policy/**</includes>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>org.apache.oodt</groupId>
+                                    <artifactId>workflow-services</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>war</type>
+                                    <overWrite>false</overWrite>
+                                    <outputDirectory>${project.build.directory}/webapps</outputDirectory>
+                                    <includes>*/policy/**</includes>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/webapp/wmonitor/pom.xml b/webapp/wmonitor/pom.xml
index ee450fb..e4184be 100644
--- a/webapp/wmonitor/pom.xml
+++ b/webapp/wmonitor/pom.xml
@@ -32,6 +32,7 @@
     <jetty.version>6.1.25</jetty.version>
     <slf4j.version>1.5.8</slf4j.version>
     <log4j.version>1.2.14</log4j.version>
+    <docker.build.disabled>true</docker.build.disabled>
   </properties>
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
diff --git a/webapp/wmservices/pom.xml b/webapp/wmservices/pom.xml
index 872446f..5f500f5 100644
--- a/webapp/wmservices/pom.xml
+++ b/webapp/wmservices/pom.xml
@@ -10,81 +10,96 @@
 	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/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.oodt</groupId>
-		<artifactId>oodt-core</artifactId>
-		<version>1.10-SNAPSHOT</version>
-		<relativePath>../../core/pom.xml</relativePath>
-	</parent>
-	<artifactId>workflow-services</artifactId>
-	<packaging>war</packaging>
-	<name>CAS Workflow REST Services</name>
-	<description>
-          A set of REST-ful services for the Workflow Manager.
-    </description>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>make-a-jar</id>
-						<phase>compile</phase>
-						<goals>
-							<goal>jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-install-plugin</artifactId>
-				<executions>
-					<execution>
-						<phase>install</phase>
-						<goals>
-							<goal>install-file</goal>
-						</goals>
-						<configuration>
-							<packaging>jar</packaging>
-							<artifactId>${project.artifactId}</artifactId>
-							<groupId>${project.groupId}</groupId>
-							<version>${project.version}</version>
-							<file>
-								${project.build.directory}/${project.artifactId}-${project.version}.jar
-							</file>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.oodt</groupId>
-			<artifactId>cas-workflow</artifactId>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.cxf</groupId>
-			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.cxf</groupId>
-			<artifactId>cxf-rt-transports-local</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-</project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.oodt</groupId>
+    <artifactId>oodt-core</artifactId>
+    <version>1.10-SNAPSHOT</version>
+    <relativePath>../../core/pom.xml</relativePath>
+  </parent>
+  <artifactId>workflow-services</artifactId>
+  <packaging>war</packaging>
+  <name>CAS Workflow REST Services</name>
+  <description>
+    A set of REST-ful services for the Workflow Manager.
+  </description>
+  <properties>
+    <docker.build.disabled>true</docker.build.disabled>
+  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>make-a-jar</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>install</phase>
+            <goals>
+              <goal>install-file</goal>
+            </goals>
+            <configuration>
+              <packaging>jar</packaging>
+              <artifactId>${project.artifactId}</artifactId>
+              <groupId>${project.groupId}</groupId>
+              <version>${project.version}</version>
+              <file>
+                ${project.build.directory}/${project.artifactId}-${project.version}.jar
+              </file>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.oodt</groupId>
+      <artifactId>cas-workflow</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-extension-providers</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-transports-local</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-transports-http-jetty</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jettison</groupId>
+      <artifactId>jettison</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/client/WmServicesClient.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/client/WmServicesClient.java
index c18f734..2ce733c 100644
--- a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/client/WmServicesClient.java
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/client/WmServicesClient.java
@@ -39,7 +39,7 @@
   /**
    * Constructor
    * 
-   * @param workflowDir
+   * @param serverurl
    *          the directory where workflow files exist
    */
   public WmServicesClient(String serverurl) {
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/enums/ErrorType.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/enums/ErrorType.java
new file mode 100644
index 0000000..b7f0e43
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/enums/ErrorType.java
@@ -0,0 +1,30 @@
+package org.apache.oodt.cas.wmservices.enums;
+
+/**
+ * This is the Enumeration file for storing HTTP Exception types. Use these constants instead of
+ * hardcoding errors in REST API implementations
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+public enum ErrorType {
+  CAS_PRODUCT_EXCEPTION_WORKFLOWMGR_CLIENT_UNAVILABLE(
+      "Unable to get the workflow manager " + "client from the servlet context."),
+  BAD_REQUEST_EXCEPTION("Malformed message"),
+  NOT_FOUND_EXCEPTION("Couldn’t find resource");
+
+  private String errorType;
+
+  ErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+
+  /** @return the errorType */
+  public String getErrorType() {
+    return errorType;
+  }
+
+  /** @param errorType the errorType to set */
+  public void setErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/errors/ErrorMessage.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/errors/ErrorMessage.java
new file mode 100644
index 0000000..f747e92
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/errors/ErrorMessage.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.errors;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * This is the Corresponding JAVA object for HTTP exception response payload
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement
+public class ErrorMessage {
+
+  /** Status code = 400,404,500 etc. * */
+  private int errorStatusCode;
+
+  /** Basic Description for the Error = InternalServerException etc. * */
+  private String errorType;
+
+  /** More Information regarding the thrown exception = Reason for exception in Server side * */
+  private String exception;
+
+  public ErrorMessage() {}
+
+  public ErrorMessage(int errorStatusCode, String errorType, String exception) {
+    this.setErrorStatusCode(errorStatusCode);
+    this.setErrorType(errorType);
+    this.setException(exception);
+  }
+
+  public ErrorMessage(int errorStatusCode, String message) {
+    this.setErrorStatusCode(errorStatusCode);
+    this.setErrorType(message);
+  }
+
+  /** @return the errorStatusCode */
+  public int getErrorStatusCode() {
+    return errorStatusCode;
+  }
+
+  /** @param errorStatusCode the errorStatusCode to set */
+  public void setErrorStatusCode(int errorStatusCode) {
+    this.errorStatusCode = errorStatusCode;
+  }
+
+  /** @return the errorType */
+  public String getErrorType() {
+    return errorType;
+  }
+
+  /** @param errorType the errorType to set */
+  public void setErrorType(String errorType) {
+    this.errorType = errorType;
+  }
+
+  /** @return the exception */
+  public String getException() {
+    return exception;
+  }
+
+  /** @param exception the exception to set */
+  public void setException(String exception) {
+    this.exception = exception;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/BadRequestExceptionMapper.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/BadRequestExceptionMapper.java
new file mode 100644
index 0000000..f8d19cf
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/BadRequestExceptionMapper.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.wmservices.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.wmservices.enums.ErrorType;
+import org.apache.oodt.cas.wmservices.errors.ErrorMessage;
+import org.apache.oodt.cas.wmservices.exceptions.BadRequestException;
+
+/**
+ * This is an exception mapper which maps "BadRequestException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class BadRequestExceptionMapper implements ExceptionMapper<BadRequestException> {
+
+  /* Maps BadRequestException to HTTP Response */
+  @Override
+  public Response toResponse(BadRequestException exception) {
+
+    // Initialising ErrorMessage Entity for Mapping to Response
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.BAD_REQUEST.getStatusCode(),
+            ErrorType.BAD_REQUEST_EXCEPTION.getErrorType(),
+            exception.getMessage());
+
+    // Maps Error Status 400 to Response
+    return Response.status(Response.Status.BAD_REQUEST)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/CasWorkflowExceptionMapper.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/CasWorkflowExceptionMapper.java
new file mode 100644
index 0000000..f3aacf0
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/CasWorkflowExceptionMapper.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.wmservices.errors.ErrorMessage;
+import org.apache.oodt.cas.workflow.exceptions.WorkflowException;
+
+/**
+ * This is an exception mapper which maps "BadRequestException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class CasWorkflowExceptionMapper implements ExceptionMapper<WorkflowException> {
+
+  /** Maps CasProductException to HTTP Response * */
+  @Override
+  public Response toResponse(WorkflowException exception) {
+
+    // Initialising ErrorMessage Entity for Mapping to Response
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), exception.getMessage());
+
+    // Maps Error Status 500 to Response
+    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/InternalServerErrorExceptionMapper.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/InternalServerErrorExceptionMapper.java
new file mode 100644
index 0000000..daadf7a
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/InternalServerErrorExceptionMapper.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.wmservices.errors.ErrorMessage;
+import org.apache.oodt.cas.wmservices.exceptions.InternalServerErrorException;
+
+/**
+ * This is an exception mapper which maps "InternalServerException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class InternalServerErrorExceptionMapper
+    implements ExceptionMapper<InternalServerErrorException> {
+
+  /** Maps InternalServerException to HTTP Response * */
+  @Override
+  public Response toResponse(InternalServerErrorException exception) {
+
+    // Initialising ErrorMessage Entity for Mapping to Response
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), exception.getMessage());
+
+    // Maps Error Status 500 to Response
+    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/NotFoundExceptionMapper.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/NotFoundExceptionMapper.java
new file mode 100644
index 0000000..d624cfb
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptionmappers/NotFoundExceptionMapper.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.wmservices.exceptionmappers;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.apache.oodt.cas.wmservices.enums.ErrorType;
+import org.apache.oodt.cas.wmservices.errors.ErrorMessage;
+import org.apache.oodt.cas.wmservices.exceptions.NotFoundException;
+
+/**
+ * This is an exception mapper which maps "NotFoundException" to "ErrorMessage JSON payload"
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
+
+  /** Maps NotFoundException to HTTP Response * */
+  @Override
+  public Response toResponse(NotFoundException exception) {
+
+    // Initialising ErrorMessage Entity for Mapping to Response
+    ErrorMessage errorMessageEntity =
+        new ErrorMessage(
+            Response.Status.NOT_FOUND.getStatusCode(),
+            ErrorType.NOT_FOUND_EXCEPTION.getErrorType(),
+            exception.getMessage());
+
+    // Maps Error Status 404 to Response
+    return Response.status(Response.Status.NOT_FOUND)
+        .entity(errorMessageEntity)
+        .type(MediaType.APPLICATION_JSON)
+        .build();
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/BadRequestException.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/BadRequestException.java
new file mode 100644
index 0000000..f80af7b
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/BadRequestException.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+
+/**
+ * This type of exception returns an HTTP 'bad request' response (status code 400) with an
+ * additional message.
+ *
+ * @author rlaidlaw
+ * @version $Revision$
+ */
+public class BadRequestException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
+  private static final long serialVersionUID = -705065311316100022L;
+
+  /**
+   * Constructor that adds a message to the 'bad request' (status code 400) HTTP response.
+   *
+   * @param message the message to add to the response
+   */
+  public BadRequestException(String message) {
+    super(message);
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/InternalServerErrorException.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/InternalServerErrorException.java
new file mode 100644
index 0000000..6ac62b7
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/InternalServerErrorException.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+
+/**
+ * This type of exception returns an HTTP 'internal server error' response (status code 500) with an
+ * additional message.
+ *
+ * @author rlaidlaw
+ * @version $Revision$
+ */
+public class InternalServerErrorException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
+  private static final long serialVersionUID = -6132240509391531373L;
+
+  /**
+   * Constructor that adds a message to the 'internal server error' (status code 500) HTTP response.
+   *
+   * @param message the message to add to the response
+   */
+  public InternalServerErrorException(String message) {
+    super(message);
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/NotFoundException.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/NotFoundException.java
new file mode 100644
index 0000000..4a6ca00
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/exceptions/NotFoundException.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+
+/**
+ * This type of exception returns an HTTP 'not found' response (status code 404) with an additional
+ * message.
+ *
+ * @author rlaidlaw
+ * @version $Revision$
+ */
+public class NotFoundException extends WebApplicationException {
+
+  /** Auto-generated ID for serialization. */
+  private static final long serialVersionUID = -3835077083758525919L;
+
+  /**
+   * Constructor that adds a message to the 'not found' (status code 404) HTTP response.
+   *
+   * @param message the message to add to the response
+   */
+  public NotFoundException(String message) {
+    super(message);
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/filters/CORSFilter.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/filters/CORSFilter.java
new file mode 100644
index 0000000..ba0a8bb
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/filters/CORSFilter.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.filters;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.ext.Provider;
+
+/**
+ * CORS Filter class for Proposing Apache OODT-2.0 FileManager REST-APIs This is the CORS
+ * (Cross-origin Resource Sharing) Filter class for FMProd REST APIs
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Provider
+public class CORSFilter implements Filter {
+
+  @Override
+  public void init(FilterConfig filterConfig) throws ServletException {}
+
+  @Override
+  public void doFilter(
+      ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
+      throws IOException, ServletException {
+    HttpServletRequest request = (HttpServletRequest) servletRequest;
+
+    HttpServletResponse resp = (HttpServletResponse) servletResponse;
+
+    // Authorize (allow) all domains to consume the content
+    resp.addHeader("Access-Control-Allow-Origin", "*");
+    resp.addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST, DELETE");
+
+    // For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
+    if (request.getMethod().equals("OPTIONS")) {
+      resp.setStatus(HttpServletResponse.SC_ACCEPTED);
+      return;
+    }
+
+    /** pass the request along the filter chain * */
+    filterChain.doFilter(request, servletResponse);
+  }
+
+  @Override
+  public void destroy() {}
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/MetadataResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/MetadataResource.java
new file mode 100644
index 0000000..a337e7d
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/MetadataResource.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * 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.oodt.cas.wmservices.resources;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.oodt.cas.metadata.Metadata;
+
+/**
+ * A JAX-RS resource representing a {@link Metadata} object.
+ *
+ * @author rlaidlaw
+ * @version $Revision$
+ */
+@XmlRootElement(name = "metadata")
+@XmlAccessorType(XmlAccessType.NONE)
+public class MetadataResource {
+  private Metadata metadata;
+
+  /** Default constructor required by JAXB. */
+  public MetadataResource() {}
+
+  /**
+   * Constructor that sets the metadata for the resource.
+   *
+   * @param metadata the metadata for the resource
+   */
+  public MetadataResource(Metadata metadata) {
+    this.metadata = metadata;
+  }
+
+  /**
+   * Gets the metadata.
+   *
+   * @return the metadata
+   */
+  public Metadata getMetadata() {
+    return metadata;
+  }
+
+  /**
+   * Gets a map of metadata keys and values.
+   *
+   * @return a map of metadata keys and values
+   */
+  @XmlElement(name = "keyval")
+  public List<MetadataEntry> getMetadataEntries() {
+    List<MetadataEntry> entries = new ArrayList<MetadataEntry>();
+    for (String key : metadata.getAllKeys()) {
+      entries.add(new MetadataEntry(key, metadata.getAllMetadata(key)));
+    }
+    return entries;
+  }
+
+  /**
+   * Represents a metadata keyval entry.
+   *
+   * @author rlaidlaw
+   * @version $Revision$
+   */
+  @XmlRootElement
+  @XmlType(propOrder = {"key", "values"})
+  @XmlAccessorType(XmlAccessType.NONE)
+  public static class MetadataEntry {
+    private String key;
+    private List<String> values;
+
+    /** Default constructor required by JAXB. */
+    public MetadataEntry() {}
+
+    /**
+     * Constructor that creates a metadata entry using the supplied key and list of values.
+     *
+     * @param key the key for the metadata entry
+     * @param values the values for the metadata entry
+     */
+    public MetadataEntry(String key, List<String> values) {
+      this.key = key;
+      this.values = values;
+    }
+
+    /**
+     * Gets the key for the metadata entry.
+     *
+     * @return the key for the metadata entry
+     */
+    @XmlElement(name = "key")
+    public String getKey() {
+      return key;
+    }
+
+    /**
+     * Gets the value(s) for the metadata entry
+     *
+     * @return the value(s) for the metadata entry
+     */
+    @XmlElement(name = "val")
+    public List<String> getValues() {
+      return values;
+    }
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WMRequestStatusResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WMRequestStatusResource.java
new file mode 100644
index 0000000..15ed485
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WMRequestStatusResource.java
@@ -0,0 +1,38 @@
+package org.apache.oodt.cas.wmservices.resources;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A JAX-RS resource representing a WMRequestStatus from Workflow manager
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement(name = "WMStatus")
+@XmlType(propOrder = {"url", "message"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class WMRequestStatusResource {
+
+  private String url;
+  private String message;
+
+  public WMRequestStatusResource() {}
+
+  public WMRequestStatusResource(String url, String message) {
+    this.url = url;
+    this.message = message;
+  }
+
+  @XmlElement(name = "url")
+  public String getUrl() {
+    return url;
+  }
+
+  @XmlElement(name = "message")
+  public String getMessage() {
+    return message;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowEventListResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowEventListResource.java
new file mode 100644
index 0000000..9c24dff
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowEventListResource.java
@@ -0,0 +1,31 @@
+package org.apache.oodt.cas.wmservices.resources;
+
+import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
+
+import javax.xml.bind.annotation.*;
+import java.util.List;
+
+/**
+ * A JAX-RS resource representing a list of workflow events {@link List <String>}.
+ *
+ * @author pavinduLakshan (Pavindu Lakshan)
+ */
+@XmlRootElement(name = "workflowEvents")
+@XmlType(propOrder = {"eventList"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class WorkflowEventListResource {
+    private List<String> eventList;
+
+    public WorkflowEventListResource(){
+
+    }
+
+    public WorkflowEventListResource(List<String> regEvents){
+        this.eventList = regEvents;
+    }
+
+    @XmlElement(name = "events")
+    public List<String> getEventList() {
+        return this.eventList;
+    }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstancePageResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstancePageResource.java
new file mode 100644
index 0000000..32a91fe
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstancePageResource.java
@@ -0,0 +1,74 @@
+package org.apache.oodt.cas.wmservices.resources;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
+
+/**
+ * A JAX-RS resource representing a {@link WorkflowInstancePage}.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement(name = "workflowPageInstance")
+@XmlType(propOrder = {"pageNum", "totalPages","totalWorkflowCount", "pageSize", "pageWorkflows"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class WorkflowInstancePageResource {
+
+  private int pageNum;
+  private int totalPages;
+  private int pageSize;
+  private List pageWorkflows;
+  private int totalWorkflowCount;
+
+  /** Default constructor required by JAXB. */
+  public WorkflowInstancePageResource() {}
+
+  /**
+   * Constructor that sets the workflowInstancePage to JAXRS resource.
+   *
+   * @param workflowInstancePage the workflowInstancePage associated with the resource
+   */
+  public WorkflowInstancePageResource(WorkflowInstancePage workflowInstancePage,int totalWorkflowCount) {
+    this.pageNum = workflowInstancePage.getPageNum();
+    this.totalPages = workflowInstancePage.getTotalPages();
+    this.pageSize = workflowInstancePage.getPageSize();
+    this.pageWorkflows = workflowInstancePage.getPageWorkflows();
+    this.totalWorkflowCount = totalWorkflowCount;
+  }
+
+  @XmlElement(name = "pageNum")
+  public int getPageNum() {
+    return pageNum;
+  }
+
+  @XmlElement(name = "totalPages")
+  public int getTotalPages() {
+    return totalPages;
+  }
+
+  @XmlElement(name = "totalCount")
+  public int getTotalWorkflowCount() {
+    return totalWorkflowCount;
+  }
+
+  @XmlElement(name = "pageSize")
+  public int getPageSize() {
+    return pageSize;
+  }
+
+  @XmlElement(name = "pageWorkflows")
+  public List<WorkflowInstanceResource> getPageWorkflows() {
+    List<WorkflowInstance> workflowslist = this.pageWorkflows;
+    List<WorkflowInstanceResource> workflowInstanceResourceList = new ArrayList<>();
+    for (WorkflowInstance workflowInstance : workflowslist) {
+      workflowInstanceResourceList.add(new WorkflowInstanceResource(workflowInstance));
+    }
+    return workflowInstanceResourceList;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstanceResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstanceResource.java
new file mode 100755
index 0000000..b6882a2
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowInstanceResource.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.wmservices.resources;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
+
+/**
+ * A JAX-RS resource representing a {@link WorkflowInstance}.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement(name = "workflowInstance")
+@XmlType(
+    propOrder = {"workflowInstanceId", "currentTaskId", "startDate", "endDate", "timesBlocked","sharedContext","workflowState"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class WorkflowInstanceResource {
+
+  private String workflowInstanceId;
+  private String currentTaskId;
+  private String startDate;
+  private String endDate;
+  private int timesBlocked;
+  private MetadataResource sharedContext;
+  private WorkflowStateResource workflowState;
+
+  /** Default constructor required by JAXB. */
+  public WorkflowInstanceResource() {}
+
+  /**
+   * Constructor that sets the workflowInstance to JAXRS resource.
+   *
+   * @param workflowInstance the workflowInstance associated with the resource
+   */
+  public WorkflowInstanceResource(WorkflowInstance workflowInstance) {
+    this.workflowInstanceId = workflowInstance.getId();
+    this.currentTaskId = workflowInstance.getCurrentTaskId();
+    this.startDate = workflowInstance.getStartDate().toString();
+    this.timesBlocked = workflowInstance.getTimesBlocked();
+    this.sharedContext = new MetadataResource(workflowInstance.getSharedContext());
+    this.workflowState = new WorkflowStateResource(workflowInstance.getState());
+    if (workflowInstance.getEndDate() != null){
+      this.endDate = workflowInstance.getEndDate().toString();
+    }
+  }
+
+  @XmlElement(name = "workflowInstanceId")
+  public String getWorkflowInstanceId() {
+    return workflowInstanceId;
+  }
+
+  @XmlElement(name = "currentTaskId")
+  public String getCurrentTaskId() {
+    return currentTaskId;
+  }
+
+  @XmlElement(name = "startDate")
+  public String getStartDate() {
+    return startDate;
+  }
+
+  @XmlElement(name = "endDate")
+  public String getEndDate() {
+    return endDate;
+  }
+
+  @XmlElement(name = "timesBlocked")
+  public int getTimesBlocked() {
+    return timesBlocked;
+  }
+
+  @XmlElement(name = "sharedContext")
+  public MetadataResource getSharedContext(){
+    return sharedContext;
+  }
+
+  @XmlElement(name = "workflowState")
+  public WorkflowStateResource getWorkflowState() {
+    return workflowState;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowManagerStatus.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowManagerStatus.java
new file mode 100644
index 0000000..bf650b3
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowManagerStatus.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.oodt.cas.wmservices.resources;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "WorkflowManagerStatus")
+@XmlType(propOrder = {"url", "serverUp"})
+public class WorkflowManagerStatus {
+
+  private String url;
+  private boolean serverUp;
+
+  public WorkflowManagerStatus() {}
+
+  public WorkflowManagerStatus(String url, boolean serverUp) {
+    this.url = url;
+    this.serverUp = serverUp;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public void setUrl(String url) {
+    this.url = url;
+  }
+
+  public boolean isServerUp() {
+    return serverUp;
+  }
+
+  public void setServerUp(boolean serverUp) {
+    this.serverUp = serverUp;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowStateResource.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowStateResource.java
new file mode 100644
index 0000000..4e7501c
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/resources/WorkflowStateResource.java
@@ -0,0 +1,74 @@
+package org.apache.oodt.cas.wmservices.resources;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.oodt.cas.workflow.lifecycle.WorkflowLifecycleStage;
+import org.apache.oodt.cas.workflow.lifecycle.WorkflowState;
+
+/**
+ * A JAX-RS resource representing a {@link WorkflowState}.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@XmlRootElement(name = "workflowState")
+@XmlType(propOrder = {"name", "description", "message", "startTime", "category", "prevState"})
+@XmlAccessorType(XmlAccessType.NONE)
+public class WorkflowStateResource {
+
+  private String name;
+  private String description;
+  private String message;
+  private Date startTime;
+  private WorkflowLifecycleStage category;
+  private WorkflowState prevState;
+
+  public WorkflowStateResource() {}
+
+  /**
+   * Constructor that sets the workflowState to JAXRS resource.
+   *
+   * @param workflowState the workflowState associated with the resource
+   */
+  public WorkflowStateResource(WorkflowState workflowState) {
+    this.name = workflowState.getName();
+    this.description = workflowState.getDescription();
+    this.message = workflowState.getMessage();
+    this.startTime = workflowState.getStartTime();
+    this.category = workflowState.getCategory();
+    this.prevState = workflowState.getPrevState();
+  }
+
+  @XmlElement(name = "name")
+  public String getName() {
+    return name;
+  }
+
+  @XmlElement(name = "description")
+  public String getDescription() {
+    return description;
+  }
+
+  @XmlElement(name = "message")
+  public String getMessage() {
+    return message;
+  }
+
+  @XmlElement(name = "startTime")
+  public Date getStartTime() {
+    return startTime;
+  }
+
+  @XmlElement(name = "category")
+  public WorkflowLifecycleStage getCategory() {
+    return category;
+  }
+
+  @XmlElement(name = "prevState")
+  public WorkflowState getPrevState() {
+    return prevState;
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/services/WMJaxrsServiceV2.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/services/WMJaxrsServiceV2.java
new file mode 100644
index 0000000..400fbae
--- /dev/null
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/services/WMJaxrsServiceV2.java
@@ -0,0 +1,316 @@
+package org.apache.oodt.cas.wmservices.services;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.wmservices.enums.ErrorType;
+import org.apache.oodt.cas.wmservices.exceptions.InternalServerErrorException;
+import org.apache.oodt.cas.wmservices.exceptions.NotFoundException;
+import org.apache.oodt.cas.wmservices.resources.*;
+import org.apache.oodt.cas.workflow.exceptions.WorkflowException;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
+import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
+import org.apache.oodt.cas.workflow.system.WorkflowManagerClient;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Service class for Proposing Apache OODT-2.0 WorkflowManager REST-APIs This handles HTTP requests
+ * and returns workflow manager entities JAX-RS resources converted to different formats.
+ *
+ * @author ngimhana (Nadeeshan Gimhana)
+ */
+@Path("workflow")
+public class WMJaxrsServiceV2 {
+
+  private static org.slf4j.Logger logger = LoggerFactory.getLogger(WMJaxrsServiceV2.class);
+
+  /** The servlet context, which is used to retrieve context parameters. */
+  @Context private ServletContext context;
+
+  /**
+   * Gets the workflow manager client instance from the servlet context.
+   *
+   * @return the workflow manager client instance from the servlet context attribute
+   * @throws Exception if an object cannot be retrieved from the context attribute
+   */
+  public WorkflowManagerClient getContextClient() throws WorkflowException {
+    // Get the workflow manager client from the servlet context.
+    Object clientObject = context.getAttribute("client");
+    if (clientObject instanceof WorkflowManagerClient) {
+      return (WorkflowManagerClient) clientObject;
+    }
+
+    String message = ErrorType.CAS_PRODUCT_EXCEPTION_WORKFLOWMGR_CLIENT_UNAVILABLE.getErrorType();
+    logger.debug("Warning Message: {}", message);
+    throw new WorkflowException(message);
+  }
+
+  /**
+   * Checks if workflow manager is alive
+   *
+   * @return status
+   */
+  @GET
+  @Path("status")
+  @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+  public WorkflowManagerStatus getWorkflowManagerStatus() {
+    try {
+      WorkflowManagerClient client = getContextClient();
+      WorkflowManagerStatus status = new WorkflowManagerStatus();
+      status.setServerUp(client.isAlive());
+      status.setUrl(client.getWorkflowManagerUrl().toString());
+      return status;
+    } catch (WorkflowException e) {
+      logger.error("Error occurred when getting WM client", e);
+      throw new InternalServerErrorException("Unable to get WM client");
+    }
+  }
+
+  /**
+   * returns all registered events
+   *
+   * @return events
+   */
+  @GET
+  @Path("events")
+  @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+  public WorkflowEventListResource getRegisteredEvents() {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      List events = wmclient.getRegisteredEvents();
+      WorkflowEventListResource eventResource = new WorkflowEventListResource(events);
+      return eventResource;
+    } catch (Exception e) {
+      logger.error("Error occurred when getting WM client", e);
+      throw new InternalServerErrorException("Unable to get WM client");
+    } 
+  }
+
+  /**
+   * trigger workflow by event
+   *
+   * @return isOk
+   */
+  @POST
+  @Path("event")
+  @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+  public Response handleEvent(
+          @QueryParam("eventName") String eventName
+  ) throws Exception {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      wmclient.sendEvent(eventName, new Metadata());
+      return Response.ok(true,MediaType.TEXT_PLAIN).build();
+    } catch (WorkflowException e) {
+      logger.error("Error occurred when getting WM client", e);
+      throw new InternalServerErrorException("Unable to get WM client");
+    }
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link WorkflowInstance} from the workflow manager.
+   *
+   * @param workflowInstId the ID of the workflow Instance
+   * @return an HTTP response that represents a {@link WorkflowInstance} from the workflow manager
+   */
+  @GET
+  @Path("instance/{ID}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public WorkflowInstanceResource getWorkflowInstanceById(@PathParam("ID") String workflowInstId)
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      WorkflowInstance workflowInstanceById = wmclient.getWorkflowInstanceById(workflowInstId);
+      WorkflowInstanceResource workflowResource =
+          new WorkflowInstanceResource(workflowInstanceById);
+      logger.debug("WorkFlowInstance ID : {}" + workflowInstId);
+      return workflowResource;
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link WorkflowInstancePage} from the workflow manager.
+   * Gives the First Page of WorkFlow Instances
+   *
+   * @return an HTTP response that represents a {@link WorkflowInstancePage} from the workflow
+   *     manager
+   */
+  @GET
+  @Path("firstpage")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public WorkflowInstancePageResource getWorkflowInstancesAtFirstPage()
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      WorkflowInstancePage firstPage = wmclient.getFirstPage();
+      int totalWorkflowCount = wmclient.getNumWorkflowInstances();
+      WorkflowInstancePageResource firstPageResource = new WorkflowInstancePageResource(firstPage,totalWorkflowCount);
+      return firstPageResource;
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * Gets an HTTP response that represents a {@link WorkflowInstancePage} from the workflow manager.
+   * Gives the specified Page of WorkFlow Instances
+   *
+   * @return an HTTP response that represents a {@link WorkflowInstancePage} from the workflow
+   *     manager
+   */
+  @GET
+  @Path("page")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public WorkflowInstancePageResource getWorkflowPage(
+    @QueryParam("workflowPage") int pageNo
+  ) throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      WorkflowInstancePage workflowPage = wmclient.paginateWorkflowInstances(pageNo);
+      int totalWorkflowCount = wmclient.getNumWorkflowInstances();
+      WorkflowInstancePageResource workflowPageResource = new WorkflowInstancePageResource(workflowPage,totalWorkflowCount);
+      return workflowPageResource;
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This REST API stops a running {@link WorkflowInstance}.
+   *
+   * @param workflowInstanceId the ID of the workflow Instance
+   * @return {@link Response}
+   * @throws Exception if there occurred an error while executing the operation
+   */
+  @POST
+  @Path("stop/{ID}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public Response stopWorkflowInstance(@PathParam("ID") String workflowInstanceId)
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      boolean workflowStatus = wmclient.stopWorkflowInstance(workflowInstanceId);
+      WMRequestStatusResource status =
+          new WMRequestStatusResource(
+              wmclient.getWorkflowManagerUrl().toString(),
+              "Sucessfully Stopped : "
+                  + workflowInstanceId
+                  + " "
+                  + getWorkflowInstanceById(workflowInstanceId).getWorkflowState().getName());
+      return Response.status(Status.OK).entity(status).type(MediaType.APPLICATION_JSON).build();
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This REST API pauses a running {@link WorkflowInstance}.
+   *
+   * @param workflowInstanceId the ID of the workflow Instance
+   * @return {@link Response}
+   * @throws Exception if there occurred an error while executing the operation
+   */
+  @POST
+  @Path("pause/{ID}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public Response pauseWorkflowInstanc(@PathParam("ID") String workflowInstanceId)
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      boolean workflowStatus = wmclient.stopWorkflowInstance(workflowInstanceId);
+      WMRequestStatusResource status =
+          new WMRequestStatusResource(
+              wmclient.getWorkflowManagerUrl().toString(),
+              "Sucessfully Paused : "
+                  + workflowInstanceId
+                  + " "
+                  + getWorkflowInstanceById(workflowInstanceId).getWorkflowState().getName());
+      return Response.status(Status.OK).entity(status).type(MediaType.APPLICATION_JSON).build();
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This REST API resumes a paused {@link WorkflowInstance}.
+   *
+   * @param workflowInstanceId the ID of the workflow Instance
+   * @return {@link Response}
+   * @throws Exception if there occurred an error while executing the operation
+   */
+  @POST
+  @Path("resume/{ID}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public Response resumeWorkflowInstance(@PathParam("ID") String workflowInstanceId)
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      boolean workflowStatus = wmclient.stopWorkflowInstance(workflowInstanceId);
+
+      WMRequestStatusResource status =
+          new WMRequestStatusResource(
+              wmclient.getWorkflowManagerUrl().toString(),
+              "Sucessfully resumed : "
+                  + workflowInstanceId
+                  + " "
+                  + getWorkflowInstanceById(workflowInstanceId).getWorkflowState().getName());
+      return Response.status(Status.OK).entity(status).type(MediaType.APPLICATION_JSON).build();
+
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+
+  /**
+   * This REST API updates the state of {@link WorkflowInstance}.
+   *
+   * @param workflowInstanceId the ID of the workflow Instance
+   * @param wmInstanceStatus state of the workflowState(etc.FINISHED,Running...)
+   * @return {@link Response}
+   * @throws Exception if there occurred an error while executing the operation
+   */
+  @POST
+  @Path("updatestatus")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+  public Response resumeWorkflowInstance(
+      @QueryParam("workflowInstanceId") String workflowInstanceId,
+      @QueryParam("status") String wmInstanceStatus)
+      throws WebApplicationException {
+    try {
+      WorkflowManagerClient wmclient = getContextClient();
+      String previousStatus =
+          wmclient.getWorkflowInstanceById(workflowInstanceId).getState().getName();
+      boolean workflowStatus =
+          wmclient.updateWorkflowInstanceStatus(workflowInstanceId, wmInstanceStatus);
+
+      WMRequestStatusResource status =
+          new WMRequestStatusResource(
+              wmclient.getWorkflowManagerUrl().toString(),
+              "Sucessfully Updated Status of workflow : "
+                  + workflowInstanceId
+                  + " from "
+                  + previousStatus
+                  + " to "
+                  + getWorkflowInstanceById(workflowInstanceId).getWorkflowState().getName());
+      return Response.status(Status.OK).entity(status).type(MediaType.APPLICATION_JSON).build();
+
+    } catch (Exception e) {
+      throw new NotFoundException(e.getMessage());
+    }
+  }
+}
diff --git a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/servlets/WmServicesServlet.java b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/servlets/WmServicesServlet.java
index 4d63daa..6f1b928 100644
--- a/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/servlets/WmServicesServlet.java
+++ b/webapp/wmservices/src/main/java/org/apache/oodt/cas/wmservices/servlets/WmServicesServlet.java
@@ -29,51 +29,56 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Initialize workflow manager services servlet
- * 
- * Set the following Parameters in context.xml for the webapp:
+ *
+ * <p>Set the following Parameters in context.xml for the webapp:
+ *
  * <ul>
- *  <li>workflow.url
- *  <li>packagedRepo.dir.path
+ *   <li>workflow.url
+ *   <li>packagedRepo.dir.path
  * </ul>
- * 
+ *
  * @author vratnakar
  */
 public class WmServicesServlet extends CXFNonSpringJaxrsServlet {
 
-  private static final Logger LOGGER = Logger.getLogger(WmServicesServlet.class.getName());
-  
-  private static final long serialVersionUID = -7830210280506307805L;
-
-  // Default URL for the workflow manager
-  private static final String DEFAULT_WM_URL = "http://localhost:9001";
-  
-  // Servlet context parameter names.
-  private static final String PARAM_NAME_URL = "workflow.url";
-  private static final String PARAM_NAME_PKGREPO_DIR = "packagedRepo.dir.path"; // For Packaged Repo
+  private static Logger logger = LoggerFactory.getLogger(WmServicesServlet.class);
 
   /**
-   * The name of the servlet context attribute that holds a client for the
-   * workflow manager, a {@link org.apache.oodt.cas.workflow.system.WorkflowManagerClient} object.
+   * The name of the servlet context attribute that holds a client for the workflow manager, a
+   * {@link WorkflowManagerClient} object.
    */
   public static final String ATTR_NAME_CLIENT = "client";
-  
   /**
-   * The name of the servlet context attribute that holds the workflow manager's
-   * packaged repository directory: a {@link File} object.
+   * The name of the servlet context attribute that holds the workflow manager's packaged repository
+   * directory: a {@link File} object.
    */
   public static final String ATTR_NAME_PKG_REPO_DIR = "pkgRepoFilesDir";
 
+  // Auto-generated ID for serialization.
+  private static final long serialVersionUID = -7830210280506307805L;
+  // Default URL for the workflow manager
+  private static final String DEFAULT_WM_URL = "http://localhost:9001";
+  // Servlet context parameter names.
+  private static final String PARAM_NAME_URL = "workflow.url";
+  private static final String PARAM_NAME_PKGREPO_DIR = "packagedRepo.dir.path"; // For Packaged Repo
   private WorkflowManagerClient client;
 
   @Override
   public void init(ServletConfig configuration) throws ServletException {
     super.init(configuration);
     ServletContext context = configuration.getServletContext();
+    initializeClient(context);
+    initializeWorkingDir(context);
+
+    /*
+
+      Refactored below code to separate methods
 
     // Initialize the workflow manager client.
     try {
@@ -111,6 +116,77 @@
                 + workflowDir.getAbsolutePath());
       }
     }
+
+    */
+  }
+
+  /**
+   * Initializes the Workflow manager client and stores it as a "client" context attribute by
+   * retrieving a value for the workflow manager URL from the servlet context.
+   *
+   * @param context the servlet context
+   * @throws ServletException if the servlet context parameter for the workflow manager working
+   *     directory path cannot be found
+   */
+  private void initializeClient(ServletContext context) throws ServletException {
+    String message;
+    try {
+      URL url;
+      String urlParameter = context.getInitParameter(PARAM_NAME_URL);
+
+      /* Get the workflow manager URL from the context parameter. */
+      if (urlParameter != null) {
+        url = new URL(PathUtils.replaceEnvVariables(urlParameter));
+      } else {
+        message = "Unable to find a servlet context parameter for the workflow manager URL.";
+        /* Try the default URL for the Workflow manager. */
+        logger.debug("WARNING Exception Thrown: {}", message);
+        url = new URL(DEFAULT_WM_URL);
+      }
+
+      // Attempt to connect the client to the workflow manager and if successful
+      // store the client as a context attribute for other objects to access.
+      client = RpcCommunicationFactory.createClient(url);
+      context.setAttribute("client", client);
+    } catch (MalformedURLException e) {
+      message = "Encountered a malformed URL for the workflow manager.";
+      logger.debug("Exception thrown: {}", message, e);
+      throw new ServletException(message);
+    }
+  }
+
+  /**
+   * Initializes the workflow manager working directory path and stores it as a "workingDir" context
+   * attribute by retrieving a value from the servlet context.
+   *
+   * @param context the servlet context
+   * @throws ServletException if the servlet context parameter for the workflow manager working
+   *     directory path cannot be found
+   */
+  private void initializeWorkingDir(ServletContext context) throws ServletException {
+    String workingDirPath = context.getInitParameter(PARAM_NAME_PKGREPO_DIR);
+    String message;
+    if (workingDirPath != null) {
+      /* Validate the path. */
+      File workingDir = new File(PathUtils.replaceEnvVariables(workingDirPath));
+      if (workingDir.exists() && workingDir.isDirectory()) {
+        context.setAttribute(ATTR_NAME_PKG_REPO_DIR, workingDir);
+        message =
+            "The workflow manager's working directory has been "
+                + "set up as "
+                + workingDir.getAbsolutePath();
+        logger.debug("Exception thrown: {}", message);
+      } else {
+        message = "Unable to locate the working directory for " + "the workflow manager.";
+        logger.debug("SEVERE Exception thrown: {}", message);
+      }
+    } else {
+      message =
+          "Unable to find a servlet context parameter for the workflow"
+              + " manager working directory path.";
+      logger.debug("SEVERE Exception thrown: {}", message);
+      throw new ServletException(message);
+    }
   }
 
   @Override
@@ -120,7 +196,8 @@
         client.close();
         client = null;
       } catch (IOException e) {
-        LOGGER.severe(String.format("Unable to close WM Client: %s", e.getMessage()));
+        String message = "Unable to close WM Client: " + e.getMessage();
+        logger.debug("SEVERE Exception thrown: {}", message);
       }
     }
 
diff --git a/webapp/wmservices/src/main/webapp/META-INF/context.xml b/webapp/wmservices/src/main/webapp/META-INF/context.xml
index eac2c3c..b4df851 100644
--- a/webapp/wmservices/src/main/webapp/META-INF/context.xml
+++ b/webapp/wmservices/src/main/webapp/META-INF/context.xml
@@ -10,12 +10,12 @@
 	OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
 	the specific language governing permissions and limitations under the License. -->
 
-<Context path="/cas-wm-services" reloadable="true" crossContext="true">
+<Context crossContext="true" docBase="/path/to/cas-workflow-services.war" reloadable="true">
 
-	<Parameter name="workflow.url" value="[WORKFLOW_URL]"
-		override="false" />
+  <Parameter name="workflow.url" override="false"
+    value="[WORKFLOW_URL]"/>
 
-	<Parameter name="packagedRepo.dir.path" value="[WORKFLOW_HOME]/policy/wengine"
-		override="false" />
+  <Parameter name="packagedRepo.dir.path" override="false"
+    value="[WORKFLOW_HOME]/policy/wengine"/>
 
-</Context>
+</Context>
\ No newline at end of file
diff --git a/webapp/wmservices/src/main/webapp/WEB-INF/web.xml b/webapp/wmservices/src/main/webapp/WEB-INF/web.xml
index 100e108..0ed2691 100644
--- a/webapp/wmservices/src/main/webapp/WEB-INF/web.xml
+++ b/webapp/wmservices/src/main/webapp/WEB-INF/web.xml
@@ -22,7 +22,17 @@
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
   <display-name>CAS Workflow Manager Services</display-name>
-    
+
+  <filter>
+    <filter-class>org.apache.oodt.cas.wmservices.filters.CORSFilter</filter-class>
+    <filter-name>CorsFilter</filter-name>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>CorsFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
   <servlet>
     <servlet-name>WmServicesServlet</servlet-name>
     <servlet-class>
@@ -41,8 +51,53 @@
     <load-on-startup>1</load-on-startup>
   </servlet>
 
+  <servlet>
+    <init-param>
+      <param-name>jaxrs.serviceClasses</param-name>
+      <param-value>
+        org.apache.oodt.cas.wmservices.services.WMJaxrsServiceV2
+      </param-value>
+    </init-param>
+    <init-param>
+      <param-name>jaxrs.providers</param-name>
+      <param-value>
+        org.apache.oodt.cas.wmservices.exceptionmappers.NotFoundExceptionMapper,
+        org.apache.oodt.cas.wmservices.exceptionmappers.BadRequestExceptionMapper,
+        org.apache.oodt.cas.wmservices.exceptionmappers.InternalServerErrorExceptionMapper,
+        org.apache.oodt.cas.wmservices.exceptionmappers.CasWorkflowExceptionMapper,
+      </param-value>
+    </init-param>
+    <init-param>
+      <param-name>jaxrs.extensions</param-name>
+      <param-value>
+        file=application/octet-stream
+        json=application/json
+        rdf=application/rdf+xml
+        rss=application/rss+xml
+        xml=application/xml
+        zip=application/zip
+      </param-value>
+    </init-param>
+    <init-param>
+      <param-name>jaxrs.scope</param-name>
+      <param-value>prototype</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+    <servlet-class>
+      org.apache.oodt.cas.wmservices.servlets.WmServicesServlet
+    </servlet-class>
+    <servlet-name>WmServicesServletV2</servlet-name>
+  </servlet>
+
+  <!-- CORS Header Filtering -->
+  <servlet-mapping>
+    <servlet-name>WmServicesServletV2</servlet-name>
+    <url-pattern>/wmservice/v2/*</url-pattern>
+  </servlet-mapping>
+
   <servlet-mapping>
     <servlet-name>WmServicesServlet</servlet-name>
     <url-pattern>/service/*</url-pattern>
   </servlet-mapping>
-</web-app>
+
+</web-app>
\ No newline at end of file
diff --git a/workflow/Dockerfile b/workflow/Dockerfile
new file mode 100644
index 0000000..3fe6c25
--- /dev/null
+++ b/workflow/Dockerfile
@@ -0,0 +1,8 @@
+FROM openjdk:8-jre-alpine
+
+ADD target/cas-workflow-1.10-SNAPSHOT.tar.gz /
+RUN mv cas-workflow-1.10-SNAPSHOT /workflowmgr
+
+WORKDIR /workflowmgr/bin
+
+ENTRYPOINT ["sh", "./wmgr", "run"]
\ No newline at end of file
diff --git a/workflow/pom.xml b/workflow/pom.xml
index 6f72b44..b719e1e 100644
--- a/workflow/pom.xml
+++ b/workflow/pom.xml
@@ -26,11 +26,19 @@
   </parent>
   <artifactId>cas-workflow</artifactId>
   <name>Catalog and Archive Workflow Management Component</name>
-  <description>The workflow management component of a Catalog and Archive Service. This component
+  <description>
+    The workflow management component of a Catalog and Archive Service. This component
      purposefully separates workflow repositories and workflow engines standard interfaces, and
      provides some out of the box backend implementations of them (including one based
      on the javax.sql.DataSource interface). This component provides everything that you need
-     to execute workflows, and science processing pipelines.</description>
+     to execute workflows, and science processing pipelines.
+  </description>
+
+  <properties>
+    <docker.build.disabled>false</docker.build.disabled>
+    <docker.image.name>oodt/workflowmgr:latest</docker.image.name>
+  </properties>
+
   <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
      Once the dependency is in the core pom, it can then be used in other modules without the version tags.
      For example, within core/pom.xml:
@@ -251,6 +259,7 @@
         <artifactId>maven-assembly-plugin</artifactId>
         <version>2.6</version>
         <configuration>
+          <appendAssemblyId>false</appendAssemblyId>
           <descriptors>
             <descriptor>src/main/assembly/assembly.xml</descriptor>
           </descriptors>
diff --git a/workflow/src/main/avro/types/protocol.avdl b/workflow/src/main/avro/types/protocol.avdl
index 5361630..4db4f84 100644
--- a/workflow/src/main/avro/types/protocol.avdl
+++ b/workflow/src/main/avro/types/protocol.avdl
@@ -72,4 +72,6 @@
     boolean updateWorkflowInstanceStatus(
             string workflowInstId, string status);
 
+    boolean isAlive();
+
 }
\ No newline at end of file
diff --git a/workflow/src/main/bin/wmgr b/workflow/src/main/bin/wmgr
index 994dc6c..572a391 100644
--- a/workflow/src/main/bin/wmgr
+++ b/workflow/src/main/bin/wmgr
@@ -34,27 +34,45 @@
 fi
 
 export JAVA_HOME
-CAS_WORKFLOW_HOME=..
+CAS_WORKFLOW_HOME=`cd ..; pwd`
 export CAS_WORKFLOW_HOME
-RUN_HOME=${CAS_WORKFLOW_HOME}/../run
+RUN_HOME=${CAS_WORKFLOW_HOME}/run
 export RUN_HOME
-CAS_WORKFLOW_PROPS=../etc/workflow.properties
+CAS_WORKFLOW_PROPS=${CAS_WORKFLOW_HOME}/etc/workflow.properties
 export CAS_WORKFLOW_PROPS
 
 PATH=${JAVA_HOME}/bin:${CAS_WORKFLOW_HOME}/bin:/usr/bin:/bin:/usr/sbin:/sbin
 export PATH
 
+if [ ! -z $DEBUG ]; then
+    echo "Running in debug mode on port: ${DEBUG}"
+    JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DEBUG}"
+fi
+
 # See how we were called.
 case "$1" in
+  run)
+        echo -n "Starting cas workflow manager: "
+        $JAVA_HOME/bin/java ${JAVA_OPTS} \
+            -Djava.ext.dirs=${CAS_WORKFLOW_HOME}/lib \
+            -Dlog4j.configurationFile=${CAS_WORKFLOW_HOME}/etc/log4j2.xml \
+            -Djava.util.logging.config.file=${CAS_WORKFLOW_HOME}/etc/logging.properties \
+            -Dorg.apache.oodt.cas.workflow.properties=${CAS_WORKFLOW_PROPS} \
+            -Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" \
+            -Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" \
+            org.apache.oodt.cas.workflow.system.WorkflowManagerStarter \
+            --portNum $SERVER_PORT
+        ;;
   start)
         echo -n "Starting cas workflow manager: "
-        $JAVA_HOME/bin/java -Djava.ext.dirs=${CAS_WORKFLOW_HOME}/lib \
-        -Dlog4j.configurationFile=${CAS_WORKFLOW_HOME}/etc/log4j2.xml \
-        -Djava.util.logging.config.file=${CAS_WORKFLOW_HOME}/etc/logging.properties \
-        -Dorg.apache.oodt.cas.workflow.properties=${CAS_WORKFLOW_PROPS} \
-        -Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" \
-        -Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" \
-        org.apache.oodt.cas.workflow.system.WorkflowManagerStarter --portNum $SERVER_PORT &
+        $JAVA_HOME/bin/java ${JAVA_OPTS} -Djava.ext.dirs=${CAS_WORKFLOW_HOME}/lib \
+            -Dlog4j.configurationFile=${CAS_WORKFLOW_HOME}/etc/log4j2.xml \
+            -Djava.util.logging.config.file=${CAS_WORKFLOW_HOME}/etc/logging.properties \
+            -Dorg.apache.oodt.cas.workflow.properties=${CAS_WORKFLOW_PROPS} \
+            -Dorg.apache.oodt.cas.pge.task.metkeys.legacyMode="true" \
+            -Dorg.apache.oodt.cas.pge.task.status.legacyMode="true" \
+            org.apache.oodt.cas.workflow.system.WorkflowManagerStarter \
+            --portNum $SERVER_PORT &
         echo $! >${RUN_HOME}/cas.workflow.pid 
         echo "OK"
         sleep 5
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/ThreadPoolWorkflowEngineFactory.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/ThreadPoolWorkflowEngineFactory.java
index 43a8c52..cede735 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/ThreadPoolWorkflowEngineFactory.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/ThreadPoolWorkflowEngineFactory.java
@@ -25,6 +25,7 @@
 import java.util.logging.Logger;
 
 //OODT imports
+import org.apache.oodt.cas.metadata.util.PathUtils;
 import org.apache.oodt.cas.workflow.instrepo.WorkflowInstanceRepository;
 import org.apache.oodt.cas.workflow.util.GenericWorkflowObjectFactory;
 
@@ -67,12 +68,12 @@
 
   protected URL getResmgrUrl() {
     try {
-      return new URL(System.getProperty(RESMGR_URL_PROPERTY));
+      return new URL(PathUtils.replaceEnvVariables(System.getProperty(RESMGR_URL_PROPERTY)));
     } catch (Exception e) {
       LOG.log(
           Level.INFO,
           "No Resource Manager URL provided or malformed URL: executing jobs " +
-          "locally. URL: ["+System.getProperty(RESMGR_URL_PROPERTY)+"]");
+          "locally. URL: ["+PathUtils.replaceEnvVariables(System.getProperty(RESMGR_URL_PROPERTY))+"]");
       return null;
     }
   }
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunnerFactory.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunnerFactory.java
index 78c2295..ef1df1a 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunnerFactory.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunnerFactory.java
@@ -22,6 +22,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.oodt.cas.metadata.util.PathUtils;
 import org.apache.oodt.cas.workflow.instrepo.WorkflowInstanceRepository;
 import org.apache.oodt.cas.workflow.util.GenericWorkflowObjectFactory;
 
@@ -46,7 +47,7 @@
    private String resUrl;
 
    public ResourceRunnerFactory() {
-      resUrl = System.getProperty(RESOURCE_MANAGER_URL_PROPERTY);
+      resUrl = PathUtils.replaceEnvVariables(System.getProperty(RESOURCE_MANAGER_URL_PROPERTY));
    }
 
    @Override
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
index 516c415..baf3cd1 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/structs/WorkflowInstancePage.java
@@ -19,6 +19,7 @@
 package org.apache.oodt.cas.workflow.structs;
 
 //JDK imports
+import java.io.Serializable;
 import java.util.List;
 import java.util.Vector;
 
@@ -30,7 +31,7 @@
  * Describe your class here
  * </p>.
  */
-public class WorkflowInstancePage {
+public class WorkflowInstancePage implements Serializable {
 
     /* the number of this page */
     private int pageNum = -1;
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
index a3ece7f..84ee9a8 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManager.java
@@ -102,7 +102,7 @@
         }
 
         logger.debug("Setting workflow engine url: {}", workflowManagerUrl.toString());
-        engine.setWorkflowManagerUrl(safeGetUrlFromString("http://" + getHostname() + ":" + port));
+        engine.setWorkflowManagerUrl(safeGetUrlFromString("http://" + getHostname()  + ":" + port));
         repo = getWorkflowRepositoryFromProperty();
 
         logger.debug("Starting Http Server...");
@@ -634,6 +634,10 @@
         return doUpdateWorkflowInstance(wInst);
     }
 
+    @Override
+    public boolean isAlive() {
+        return true;
+    }
 
     private static WorkflowEngine getWorkflowEngineFromProperty() {
         return getWorkflowEngineFromClassName(System.getProperty(
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManagerClient.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManagerClient.java
index ac765f4..57670f3 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManagerClient.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/AvroRpcWorkflowManagerClient.java
@@ -17,6 +17,7 @@
 
 package org.apache.oodt.cas.workflow.system;
 
+import org.apache.avro.AvroRemoteException;
 import org.apache.avro.ipc.HttpTransceiver;
 import org.apache.avro.ipc.NettyTransceiver;
 import org.apache.avro.ipc.Transceiver;
@@ -47,8 +48,8 @@
 
     private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AvroRpcWorkflowManagerClient.class);
 
-    private Transceiver client;
-    private org.apache.oodt.cas.workflow.struct.avrotypes.WorkflowManager proxy;
+    private transient Transceiver client;
+    private transient org.apache.oodt.cas.workflow.struct.avrotypes.WorkflowManager proxy;
     private URL workflowManagerUrl;
 
     public AvroRpcWorkflowManagerClient(URL url){
@@ -240,7 +241,7 @@
     public void setWorkflowManagerUrl(URL workflowManagerUrl) {
         this.workflowManagerUrl = workflowManagerUrl;
         try {
-            client = new NettyTransceiver(new InetSocketAddress(workflowManagerUrl.getPort()));
+            client = new NettyTransceiver(new InetSocketAddress(workflowManagerUrl.getHost(), workflowManagerUrl.getPort()));
             proxy = SpecificRequestor.getClient(org.apache.oodt.cas.workflow.struct.avrotypes.WorkflowManager.class, client);
         } catch (IOException e) {
             logger.error("Error occurred when setting workflow manager url: {}", workflowManagerUrl, e);
@@ -249,6 +250,16 @@
     }
 
     @Override
+    public boolean isAlive() {
+        try {
+            return proxy.isAlive();
+        } catch (AvroRemoteException e) {
+            logger.error("Error occurred when checking if WM is alive", e);
+            return false;
+        }
+    }
+
+    @Override
     public void close() throws IOException {
         if (client != null) {
             client.close();
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClient.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClient.java
index ed0cfd1..4ace82e 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClient.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/WorkflowManagerClient.java
@@ -25,6 +25,7 @@
 import org.apache.oodt.cas.workflow.structs.WorkflowCondition;
 
 import java.io.Closeable;
+import java.io.Serializable;
 import java.net.URL;
 import java.util.List;
 import java.util.Vector;
@@ -37,7 +38,7 @@
  * Base interface for client RPC implementation.
  * </p>
  */
-public interface WorkflowManagerClient extends Closeable {
+public interface WorkflowManagerClient extends Closeable, Serializable {
 
     boolean refreshRepository()
             throws Exception;
@@ -130,5 +131,7 @@
 
     URL getWorkflowManagerUrl();
 
+    boolean isAlive();
+
     void setWorkflowManagerUrl(URL workflowManagerUrl);
 }
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
index ae72a14..d1cb28a 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
@@ -654,6 +654,10 @@
     return doUpdateWorkflowInstance(wInst);
   }
 
+  public boolean isAlive() {
+    return true;
+  }
+
   public static void main(String[] args) throws IOException {
     int portNum = -1;
     String usage = "XmlRpcWorkflowManager --portNum <port number for xml rpc service>\n";
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
index 4d05b3f..fe31e5c 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManagerClient.java
@@ -19,6 +19,7 @@
 package org.apache.oodt.cas.workflow.system;
 
 
+import java.util.Collections;
 import org.apache.oodt.cas.metadata.Metadata;
 import org.apache.oodt.cas.workflow.structs.Workflow;
 import org.apache.oodt.cas.workflow.structs.WorkflowCondition;
@@ -531,6 +532,16 @@
     }
 
     @Override
+    public boolean isAlive() {
+      try {
+        return (boolean) client.execute("workflowmgr.isAlive", new Vector());
+      } catch (XmlRpcException | IOException e) {
+        LOG.log(Level.SEVERE, "An error occurred when checking WM status", e);
+        return false;
+      }
+    }
+
+    @Override
     public void close() throws IOException {
 
     }
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/RpcCommunicationFactory.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/RpcCommunicationFactory.java
index dfc147b..1cab300 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/RpcCommunicationFactory.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/rpc/RpcCommunicationFactory.java
@@ -39,12 +39,12 @@
 
     private static String getRpcServerFactoryClassName() {
         return loadProperties().getProperty(WorkflowManager.WORKFLOW_SERVER_FACTORY_PROPERTY,
-                XmlRpcWorkflowManagerFactory.class.getName());
+                AvroRpcWorkflowManagerFactory.class.getName());
     }
     
     private static String getRpcClientFactoryClassName() {
         return loadProperties().getProperty(WorkflowManager.WORKFLOW_CLIENT_FACTORY_PROPERTY,
-                XmlRpcWorkflowManagerFactory.class.getName());
+                AvroRpcWorkflowManagerFactory.class.getName());
     }
 
     public static WorkflowManager createServer(int port) {
diff --git a/workflow/src/main/resources/logging.properties b/workflow/src/main/resources/logging.properties
index 8a293d4..319e0a2 100644
--- a/workflow/src/main/resources/logging.properties
+++ b/workflow/src/main/resources/logging.properties
@@ -19,11 +19,11 @@
 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler, org.slf4j.bridge.SLF4JBridgeHandler
 
 # Set the default logging level for the root logger
-.level = DEBUG
-    
+.level = ALL
+
 # Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = DEBUG
-java.util.logging.FileHandler.level = DEBUG
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/workflow/src/main/resources/workflow.properties b/workflow/src/main/resources/workflow.properties
index 2b92ae4..4002f00 100644
--- a/workflow/src/main/resources/workflow.properties
+++ b/workflow/src/main/resources/workflow.properties
@@ -16,8 +16,8 @@
 # Properties required to configure the Workflow Manager
 
 #Rpc workflow communication class
-workflow.server.factory = org.apache.oodt.cas.workflow.system.rpc.XmlRpcWorkflowManagerFactory
-workflow.client.factory = org.apache.oodt.cas.workflow.system.rpc.XmlRpcWorkflowManagerFactory
+workflow.server.factory = org.apache.oodt.cas.workflow.system.rpc.AvroRpcWorkflowManagerFactory
+workflow.client.factory = org.apache.oodt.cas.workflow.system.rpc.AvroRpcWorkflowManagerFactory
 
 # workflow repository factory
 workflow.repo.factory = org.apache.oodt.cas.workflow.repository.XMLWorkflowRepositoryFactory
@@ -60,7 +60,7 @@
 org.apache.oodt.cas.workflow.instanceRep.pageSize=20
 
 # lucene workflow instance repository properties
-org.apache.oodt.cas.workflow.instanceRep.lucene.idxPath=/path/to/index
+org.apache.oodt.cas.workflow.instanceRep.lucene.idxPath=[CAS_WORKFLOW_HOME]/data/workflow
 
 # data source workflow instance repository properties
 org.apache.oodt.cas.workflow.instanceRep.datasource.jdbc.url=jdbc:url
@@ -70,7 +70,7 @@
 org.apache.oodt.cas.workflow.instanceRep.datasource.quoteFields=false
 
 # XML workflow repository properties
-org.apache.oodt.cas.workflow.repo.dirs=file:///path/to/your/repo1, file:///path/to/your/repo2
+org.apache.oodt.cas.workflow.repo.dirs=file://[CAS_WORKFLOW_HOME]/policy
 # uncomment the following line and set the value to true to recursively parse repository directories
 #org.apache.oodt.cas.workflow.repo.dirs.recursive=false
 
@@ -84,8 +84,8 @@
 org.apache.oodt.cas.workflow.repo.datasource.jdbc.driver=your.jdbc.Driver
 
 # Spring command line option and action store properties
-org.apache.oodt.cas.cli.action.spring.config=src/main/resources/cmd-line-actions.xml
-org.apache.oodt.cas.cli.option.spring.config=src/main/resources/cmd-line-options.xml
+org.apache.oodt.cas.cli.action.spring.config=file://[CAS_WORKFLOW_HOME]/policy/cmd-line-actions.xml
+org.apache.oodt.cas.cli.option.spring.config=file://[CAS_WORKFLOW_HOME]/policy/cmd-line-options.xml
 
 # workflow lifecycle Manager
-org.apache.oodt.cas.workflow.lifecycle.filePath=/path/to/workflow-lifecycle.xml
+org.apache.oodt.cas.workflow.lifecycle.filePath=[CAS_WORKFLOW_HOME]/policy/workflow-lifecycle.xml
diff --git a/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java b/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java
index f20127f..e1be1df 100644
--- a/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java
+++ b/workflow/src/test/java/org/apache/oodt/cas/workflow/system/TestXmlRpcWorkflowManagerClient.java
@@ -580,6 +580,10 @@
     assertTrue(checkVal4 && checkVal5);
   }
 
+  @Test
+  public void testIsAlive() {
+    assertTrue(wmc.isAlive());
+  }
 
   private static void startXmlRpcWorkflowManager() {
     System.setProperty("java.util.logging.config.file", new File(
diff --git a/workflow/src/test/resources/test.logging.properties b/workflow/src/test/resources/test.logging.properties
index 4b67dfb..4a56cbb 100644
--- a/workflow/src/test/resources/test.logging.properties
+++ b/workflow/src/test/resources/test.logging.properties
@@ -20,9 +20,10 @@
 
 # Set the default logging level for the root logger
 .level = ALL
-    
+
 # Set the default logging level for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
         
 # Set the default formatter for new ConsoleHandler instances
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter