diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 7b162571b..000000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Build Oruga
-on:
-  push:
-    branches: [ develop ]
-  pull_request:
-    branches: [ develop ]
-jobs:
-  build:
-    runs-on: ubuntu-latest
-    strategy:
-      max-parallel: 24
-      matrix:
-        node-version: [16.x, 17.x]
-    steps:
-      - uses: actions/checkout@v2
-      - name: Use Node.js ${{ matrix.node-version }} ๐Ÿชข
-        uses: actions/setup-node@v1
-        with:
-          node-version: ${{ matrix.node-version }}
-      - name: Install dependencies ๐Ÿ“ฆ
-        run: npm install && npm run bootstrap
-      - name: Run tests ๐Ÿงช
-        run: npm run ci:oruga
-      - name: Upload coverage ๐Ÿ“ˆ
-        uses: codecov/codecov-action@v3
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          flags: oruga
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index e1c11f6e0..52c8d6d55 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -22,9 +22,6 @@ jobs:
           git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
       - run: npm install
       - run: npm run bootstrap
-      - run: npm run publish:lib:oruga
-        env:
-          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
       - run: npm run publish:lib:oruga-next
         env:
           NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 6863e9d08..72153c729 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,8 +3,6 @@ node_modules
 packages/docs/.vuepress/dist/
 packages/storybook/.dist/
 packages/storybook/*
-packages/oruga/coverage/*
-packages/oruga/README.md
 packages/demo-vue3/*
 packages/oruga-next/README.md
 packages/docs-next/.vitepress/cache/
diff --git a/.scripts/config-sync.js b/.scripts/config-sync.js
index a4f81fe3c..a5d3d2449 100755
--- a/.scripts/config-sync.js
+++ b/.scripts/config-sync.js
@@ -1,12 +1,8 @@
 const replace = require('replace-in-file')
 
 const jsonPaths = [
-  'packages/docs/package.json',
-  'packages/docs/package-lock.json',
   'packages/docs-next/package.json',
   'packages/docs-next/package-lock.json',
-  'packages/oruga/package.json',
-  'packages/oruga/package-lock.json',
   'packages/oruga-next/package.json',
   'packages/oruga-next/package-lock.json',
 ]
diff --git a/README.md b/README.md
index ff913f838..44bc69865 100644
--- a/README.md
+++ b/README.md
@@ -14,15 +14,6 @@
 
 > Oruga is a lightweight library of UI components for [Vue.js](https://vuejs.org/) without CSS framework dependency
 
-<p align="center">
-    <a href="https://www.npmjs.com/package/@oruga-ui/oruga"><img src="https://img.shields.io/npm/v/@oruga-ui/oruga.svg?logo=npm" /></a>
-    <a href="https://www.npmjs.com/package/@oruga-ui/oruga"><img src="https://img.shields.io/npm/dt/@oruga-ui/oruga.svg" /></a>
-    <a href="https://github.com/oruga-ui/oruga/actions"><img src="https://github.com/oruga-ui/oruga/actions/workflows/build.yml/badge.svg" /><a>
-    <a href="https://codecov.io/gh/oruga-ui/oruga"><img src="https://codecov.io/gh/oruga-ui/oruga/branch/develop/graph/badge.svg?flag=oruga" /></a>
-</p>
-
-*Oruga Next version for Vue 3.x*
-
 <p align="center">
     <a href="https://www.npmjs.com/package/@oruga-ui/oruga-next"><img src="https://img.shields.io/npm/v/@oruga-ui/oruga-next.svg?logo=npm" /></a>
     <a href="https://www.npmjs.com/package/@oruga-ui/oruga-next"><img src="https://img.shields.io/npm/dt/@oruga-ui/oruga-next.svg" /></a>
@@ -30,6 +21,10 @@
     <a href="https://codecov.io/gh/oruga-ui/oruga"><img src="https://codecov.io/gh/oruga-ui/oruga/branch/develop/graph/badge.svg?flag=oruga-next" /></a>
 </p>
 
+> [!NOTE]  
+> **_Oruga for Vue 2.x deprecated_**  
+> Due to [EOL for Vue 2.x](https://v2.vuejs.org/lts/) at the end of the year, from now on Oruga for Vue 2 is deprecated. Further enhancements will only be developed for Oruga-next. See [#496](https://github.com/oruga-ui/oruga/issues/496).
+
 ### Contact us ๐Ÿ‘พ
 
 <p align="center">
@@ -42,10 +37,6 @@
     <a href="https://ko-fi.com/orugaui"><img alt="Donate using Ko-fi"  src="https://img.shields.io/badge/donate-ko--fi-00AA00.svg?logo=ko-fi" /></a>
 </p>
 
-> [!NOTE]  
-> **_Oruga for Vue 2.x deprecated_**  
-> Due to [EOL for Vue 2.x](https://v2.vuejs.org/lts/) at the end of the year, from now on Oruga for Vue 2 is deprecated and will not receive any further updates. Further enhancements will only be developed for Oruga-next. See [#496](https://github.com/oruga-ui/oruga/issues/496).
-
 
 ## Features
 
diff --git a/package.json b/package.json
index ac8eaa83e..47d573ef7 100644
--- a/package.json
+++ b/package.json
@@ -7,25 +7,13 @@
   "license": "MIT",
   "scripts": {
     "bootstrap": "lerna bootstrap",
-    "test:oruga": "lerna run test --scope @oruga-ui/oruga",
     "test:oruga-next": "lerna run test --scope @oruga-ui/oruga-next",
     "test:ts:oruga-next": "lerna run test:ts --scope @oruga-ui/oruga-next",
     "test:watch:oruga-next": "lerna run test:watch --scope @oruga-ui/oruga-next",
-    "ci:oruga": "lerna run ci --scope @oruga-ui/oruga",
-    "lint:oruga": "lerna run lint --scope @oruga-ui/oruga",
-    "lint:fix:oruga": "lerna run lint:fix --scope @oruga-ui/oruga",
-    "lint:staged:oruga": "lerna run lint:staged --scope @oruga-ui/oruga",
-    "unit:oruga": "lerna run unit --scope @oruga-ui/oruga",
-    "build:lib:oruga": "lerna run build:lib --parallel --scope @oruga-ui/oruga",
-    "build:lib:watch:oruga": "lerna run build:lib:watch --parallel --scope @oruga-ui/oruga",
-    "build:docs:oruga": "lerna run docs:build --scope @oruga-ui/docs",
-    "build:docs:hacktoberfest": "lerna run docs:hacktoberfest --scope @oruga-ui/docs",
-    "build:docs:watch:oruga": "lerna run docs:dev --parallel --scope @oruga-ui/docs",
     "build:docs-next:oruga": "lerna run docs:build --parallel --scope @oruga-ui/docs-next",
     "build:docs-next:watch:oruga": "lerna run docs:dev --parallel --scope @oruga-ui/docs-next",
     "build:lib:oruga-next": "lerna run build:lib --parallel --scope @oruga-ui/oruga-next",
     "build:lib:watch:oruga-next": "lerna run build:lib:watch --parallel --scope @oruga-ui/oruga-next",
-    "publish:lib:oruga": "lerna run publish:lib --scope @oruga-ui/oruga",
     "publish:lib:oruga-next": "lerna run publish:lib --scope @oruga-ui/oruga-next",
     "test:all": "lerna run test --stream",
     "version": "node .scripts/config-sync && git add . && conventional-changelog -p angular -i CHANGELOG.md -s && node .scripts/wait-confirm && git add CHANGELOG.md",
diff --git a/packages/README.md b/packages/README.md
index 09353d862..663544b46 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -2,6 +2,5 @@
 
 ## Packages for Oruga
 
-1. **docs** - Oruga documentation
-2. **oruga** - Main source code for Oruga
-2. **oruga-next** - Build config for Vue 3 relative to oruga source code
+1. **docs-next** - Oruga documentation
+2. **oruga-next** - Main source code for Oruga
diff --git a/packages/docs/.prettierrc b/packages/docs/.prettierrc
deleted file mode 100644
index f1293f529..000000000
--- a/packages/docs/.prettierrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "semi": false,
-  "printWidth": 180,
-  "singleQuote": true
-}
diff --git a/packages/docs/.vuepress/DocWrapper.vue b/packages/docs/.vuepress/DocWrapper.vue
deleted file mode 100644
index de2461ea4..000000000
--- a/packages/docs/.vuepress/DocWrapper.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-<script>
-import { setValueByPath } from '../../oruga/src/utils/helpers'
-const UNDERLINE_CLASS = 'odocs-underline-element'
-
-export default {
-    beforeDestroy() {
-        clearInterval(this.interval)
-        this.interval = null
-    },
-    mounted() {
-        this.interval = null
-        this.$root.$on('inspect-class', (className, action) => {
-            clearInterval(this.interval)
-            this.classes = Object.assign({}, {})
-            this.data = Object.assign({}, {})
-            this.classesApplied = null
-            this.$nextTick(() => {
-                if (action) {
-                    action(this)
-                }
-                setValueByPath(this.classes, className, () => UNDERLINE_CLASS)
-                this.classes = Object.assign({}, this.classes)
-                this.data = Object.assign({}, this.data)
-                this.$nextTick(() => {
-                    this.interval = setInterval(() => {
-                        let el = document.getElementsByClassName(UNDERLINE_CLASS)[0]
-                        if (el) {
-                            clearInterval(this.interval)
-                            this.classesApplied = el.className.replace(UNDERLINE_CLASS, '').replace(/\s/g, '&nbsp;&nbsp;&nbsp;')
-                        }
-                    }, 300)
-                })
-            })
-        })
-    },
-    data() {
-        return {
-            classes: {},
-            data: {},
-            classesApplied: null,
-        }
-    },
-    render (createElement) {
-        let el = createElement('span',
-        {
-            attrs: {
-                id: 'docs__element__to__inspect'
-            }
-        },
-        [
-            this.classesApplied ? createElement('div', {}, [
-                createElement('b', 'Classes applied to the element'),
-                createElement(
-                    'div',
-                    {
-                        attrs: {
-                            class: 'odocs-classes-applied',
-                        },
-                        domProps: {
-                            innerHTML: this.classesApplied
-                        },
-                    }
-                ),
-            ]) : null,
-            this.$scopedSlots.default({
-                ...this.classes,
-                ...this.data,
-            })
-        ],
-        )
-        return el
-    }
-}
-</script>
-
-<style>
-.odocs-underline-element {
-    border: 2px solid #bd1313!important;
-}
-.odocs-classes-applied {
-    margin-top: 1rem;
-    margin-bottom: 1rem;
-    font-weight: bold;
-    background: black;
-    color: white;
-    display: flex;
-    align-items: center;
-    padding: 1rem;
-    border-radius: 0.3rem;
-}
-</style>
diff --git a/packages/docs/.vuepress/Expo.vue b/packages/docs/.vuepress/Expo.vue
deleted file mode 100644
index 41dbacd61..000000000
--- a/packages/docs/.vuepress/Expo.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-<template>
-    <client-only>
-        <vue-telescope-expo :slugs="{ui: 'oruga'}" sortBy="lastDetectedAt" sortDirection="desc">
-            <template v-slot:buttons="{ loading, hasMoreItems, loadMoreItems}">
-                <o-button v-if="hasMoreItems" root-class="loadingbtn" elements-wrapper-class="loadingbtnwrapper" @click="loadMoreItems">
-                  <o-icon root-class="loadingicon" v-if="loading" pack="fas" icon="sync-alt" spin> </o-icon>
-                  <span v-else>Load more</span>
-                </o-button>
-            </template>
-            <template v-slot:retry="{firstLoadItems}">
-                <p>Something went wrong!</p>
-                <o-button @click="firstLoadItems">Retry</o-button>
-            </template>
-        </vue-telescope-expo>
-    </client-only>
-</template>
-
-<script>
-import VueTelescopeExpo from 'vue-telescope-expo'
-import 'vue-telescope-expo/dist/vue-telescope-expo.css'
-export default {
-  components: { VueTelescopeExpo },
-}
-</script>
-
-<style scoped>
-.loadingbtn {
-  min-width: 9rem;
-  border-color: transparent;
-  color: #fff;
-  cursor: pointer;
-  justify-content: center;
-  padding: calc(.5em - 1px) 1em;
-  text-align: center;
-  white-space: nowrap;
-  border-radius: 4px;
-  padding-left: 1rem;
-  padding-right: 1rem;
-}
-.loadingicon {
-  margin-top: 0.3rem;
-}
-</style>
diff --git a/packages/docs/.vuepress/HFRepos.vue b/packages/docs/.vuepress/HFRepos.vue
deleted file mode 100644
index 66bf13989..000000000
--- a/packages/docs/.vuepress/HFRepos.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-    <client-only>
-        <div>
-            <div class="hfrepos__container">
-                <o-loading :full-page="false" :active="repos.length === 0" />
-                <div v-for="repo of filteredRepos" :key="repo.id" class="hfrepo">
-                    <div class="hfrepo__header">
-                        <div class="hfrepo__title">{{repo.name}}</div>
-                        <p class="hfrepo__subtitle">{{repo.description}}</p>
-                    </div>
-                    <div class="hfrepo__actions">
-                        <o-button override rootClass="hfrepo__btn" @click="goToRepo(repo)">Explore repo</o-button>
-                        <o-button override rootClass="hfrepo__btn" @click="goToIssues(repo)">See issues</o-button>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </client-only>
-</template>
-
-<script>
-export default {
-    props: {
-        filter_fullname: {
-            type: String,
-            default: null
-        }
-    },
-    data() {
-        return {
-            repos: []
-        }
-    },
-    mounted: function() {
-        fetch("/hfrepos.json")
-          .then(data => data.json())
-          .then(data => this.repos = data.items)
-    },
-    computed: {
-        filteredRepos() {
-            if (!this.filter_fullname) {
-                return this.repos
-            }
-            const regex = new RegExp(this.filter_fullname, "gi")
-            return this.repos.filter((repo) => repo.full_name.match(regex))
-        }
-    },
-    methods: {
-        goToIssues(repo) {
-            window.location.href = `${repo.html_url}/issues/?q=is:issue+is:open+label:hacktoberfest`;
-        },
-        goToRepo(repo) {
-            window.location.href = repo.html_url;
-        }
-    }
-}
-</script>
-
-<style scoped>
-.hfrepos__container {
-    position: relative;
-    min-height: 100px;
-}
-
-.hfrepo {
-    margin-top: 1rem;
-    margin-bottom: 1rem;
-    background: #f4f0e1;
-    color: #2B3531;
-    padding: 1rem;
-    border-radius: 1rem;
-    width: 80%;
-}
-
-@media (max-width: 1100px) {
-    .hfrepo {
-        width: 100%;
-    }
-}
-
-.hfrepo__title {
-    font-weight: 800;
-    text-transform: capitalize;
-}
-
-.hfrepo__header {
-    margin-bottom: 1.7rem;
-}
-
-.hfrepo__btn {
-    cursor: pointer;
-    background: #F74700;
-    color: white;
-    padding: 0.9rem;
-    border: 0;
-    border-radius: 0.5rem;
-    text-decoration: none !important;
-    min-width: 8rem;
-    box-shadow: none;
-    outline: 0;
-    -webkit-appearance: none;
-    font-weight: bold;
-}
-</style>
diff --git a/packages/docs/.vuepress/Inspector.vue b/packages/docs/.vuepress/Inspector.vue
deleted file mode 100644
index 73f704dcd..000000000
--- a/packages/docs/.vuepress/Inspector.vue
+++ /dev/null
@@ -1,164 +0,0 @@
-<template>
-    <div>
-        <o-collapse class="inspector__summary" :open="false">
-            <div
-                slot="trigger"
-                slot-scope="props"
-                class="inspector__summary-trigger"
-                role="button"
-            >
-                <div>
-                    How does <i>Class props inspector</i> work?
-                </div>
-                <a >
-                    <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon>
-                </a>
-            </div>
-            <div class="inspector__summary-content">
-                <div class="inspector__summary-intro"><i>Class props inspector</i> is useful to see class props you want to use to customize Oruga components and how they change a component. You can click on <b>Inspect</b> button to find the exact element where a specific class prop acts. <br><br>
-                In the <i>Class props inspector</i> there are other columns</div>
-                <p class="inspector__summary-class">
-                    <h4>
-                        Class prop
-                    </h4>
-                    <div>
-                        This column contains the name of the Class prop you want to inspect.<br>
-                        If you find a name with a link (<span>โ–ท <a>classPropName</a></span>) this refers to a subitem (e.g. <i>Dropdown Item</i> in <i>Dropdown</i>).
-                    </div>
-                </p>
-                <p class="inspector__summary-class">
-                    <h4>
-                        Description
-                    </h4>
-                    <div>
-                        This column contains the description of the Class prop you want to inspect.<br>
-                        ๐Ÿ‘‰ This icon indicates some warning, e.g. <i>this Class prop is visible only on mobile.</i><br>
-                        ๐Ÿ” This icon indicates that you should pay attention to CSS specificity. See <a href="/documentation/#deal-with-specificity">"Deal with specificity"</a> section in the documentation.
-                    </div>
-                </p>
-                <p class="inspector__summary-class">
-                    <h4>
-                        Props
-                    </h4>
-                    <div>
-                        This column contains a list of props that activate the class, e.g. if a class prop contains <code>disabled</code> prop it means that only when the component has <code>disabled</code> prop.
-                    </div>
-                </p>
-                <p class="inspector__summary-class">
-                    <h4>
-                        Suffixes
-                    </h4>
-                    <div>
-                        This column contains all the possible suffixes that you'll receive if you use a function to customize your Class prop. You'll find more info in the <a href="/documentation/#overriding-classes">"Overriding section"</a>.
-                    </div>
-                </p>
-            </div>
-        </o-collapse>
-        <table>
-            <tr>
-                <th>Class prop</th>
-                <th>Description</th>
-                <th>Props</th>
-                <th>Suffixes</th>
-                <th></th>
-            </tr>
-            <tr v-for="(data, index) of classesToInspect" :key="data.class" :class="{ inspector__highlight: index === selectedElementIndex }">
-                <td v-if="!data.subitem">{{data.class}}</td>
-                <td v-if="data.subitem">โ–ท <a :href="`#${subitem}`">{{data.class}}</a></td>
-                <td>
-                    <span>{{data.description | addDotToTheEnd}}</span>
-                    <span v-if="data.componentRef">
-                        More detail <a target="_blank" :href="`/components/${data.componentRef}.html#class-props`">here</a>
-                    </span>
-                    <span v-if="data.warning"><br>๐Ÿ‘‰ <i><span v-html="data.warning"></span></i></span>
-                    <span v-if="data.specificity"><br>๐Ÿ” <i><span>Classes applied have a higher specificity than expected <span v-html="data.specificity"></span></span></i></span>
-                </td>
-                <td>
-                    <span v-if="data.properties"><code style='white-space: nowrap; padding: 0;' v-html="setByProperties(data.properties)"></code></span>
-                </td>
-                <td>
-                    <span v-if="data.suffixes"><code style='white-space: nowrap; padding: 0;' v-html="setByProperties(data.suffixes)"></code></span>
-                </td>
-                <td>
-                    <button v-if="!data.nospec === true" class="inspector__btn" type="button" @click="inspectClass(index, data)">Inspect</button>
-                </td>
-            </tr>
-        </table>
-    </div>
-</template>
-
-<script>
-export default {
-    data () {
-        return {
-            selectedElementIndex: Number
-        }
-    },
-    filters: {
-        addDotToTheEnd (value) {
-            if (!value.endsWith('.'))
-                return value + '.'
-            return value
-        }
-    },
-    computed: {
-        classesToInspect() {
-            this.inspectData.sort(function(propa, propb) {
-                return (propa.class < propb.class) ? -1 : (propa.class > propb.class) ? 1 : 0;
-            });
-            return this.inspectData
-        }
-    },
-    props: {
-        inspectData: Array,
-        subitem: String
-    },
-    methods: {
-        setByProperties(props) {
-            return props ? props.join('<br>') : null
-        },
-        inspectClass(index, selectedData) {
-            this.selectedElementIndex = index
-            const selectedClass = selectedData.realClass || selectedData.class
-            this.$root.$emit('inspect-class', selectedClass, selectedData.action)
-            document.getElementById("class-props").scrollIntoView();
-        }
-    }
-}
-</script>
-
-<style scoped>
-.inspector__summary {
-    margin-top: 2rem;
-}
-.inspector__summary-class h4 {
-    margin-block-start: 0.33em;
-    margin-block-end: 0.33em;
-}
-.inspector__summary-trigger div {
-    margin-right: 0.5rem;
-}
-.inspector__summary-trigger {
-    display: flex;
-    align-items: center;
-    margin-bottom: 0.5rem;
-}
-.inspector__summary-content {
-    border: 1px solid #dfe2e5;
-    padding: 0.5rem;
-}
-.inspector__btn {
-    cursor: pointer;
-    background: #bd1313 !important;
-    color: white!important;
-    font-weight: bold!important;
-    border: 0;
-    box-shadow: none;
-    border-radius: 0.3rem;
-    padding: 0.4rem;
-}
-.inspector__highlight, .inspector__highlight code, .inspector__highlight a {
-    background: #bd1313 !important;
-    color: white!important;
-}
-</style>
diff --git a/packages/docs/.vuepress/config.js b/packages/docs/.vuepress/config.js
deleted file mode 100644
index 9aeac7779..000000000
--- a/packages/docs/.vuepress/config.js
+++ /dev/null
@@ -1,94 +0,0 @@
-const path = require('path')
-const fs = require('fs')
-
-const componentsFolder = path.join(__dirname, '../components/')
-const components = fs.readdirSync(componentsFolder).map(c => c.replace('.md', ''))
-const sidebarComponents = components.map(c => `/components/${c}`)
-
-module.exports = {
-  title: `Oruga`,
-  description: 'UI components for Vue.js and CSS framework agnostic',
-  head: [
-    ['link', { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
-    ['meta', { charset: 'utf-8' }],
-    ['meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }],
-    ['meta', { name: 'title', content: 'Oruga UI - Vue.js' }],
-    ['meta', { name: 'og:locale', content: 'en_US' }],
-    ['meta', { name: 'og:type', content: 'website' }],
-    ['meta', { name: 'og:url', content: 'https://oruga.io' }],
-    ['meta', { name: 'og:title', content: 'UI components for Vue.js and CSS framework agnostic' }],
-    ['meta', { name: 'og:site_name', content: 'Oruga' }],
-    ['meta', { name: 'og:description', content: "Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly" }],
-    ['meta', { name: 'og:image', content: 'https://oruga.io/logo-banner.png?v=3' }],
-    ['meta', { name: 'og:image:type', content: 'image/png' }],
-    ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
-    ['meta', { name: 'twitter:site', content: '@oruga_ui' }],
-    ['meta', { name: 'twitter:title', content: 'UI components for Vue.js and CSS framework agnostic' }],
-    ['meta', { name: 'twitter:description', content: "Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly" }],
-    ['meta', { name: 'twitter:image', content: 'https://oruga.io/logo-banner.png?v=3' }]
-  ],
-  plugins: [
-    [
-      'demo-block',
-      {
-        settings: {
-            jsLib: ['https://oruga-documentation-preview.netlify.app/cdn/oruga.min.js'],
-            cssLib: [
-                'https://oruga-documentation-preview.netlify.app/cdn/oruga.min.css',
-                'https://cdn.jsdelivr.net/npm/@mdi/font@5.8.55/css/materialdesignicons.min.css'
-            ],
-            vue: 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js',
-            jsfiddle: false,
-            codepen: true
-        }
-      }
-    ]
-  ],
-  configureWebpack: {
-    resolve: {
-      alias: {
-        vue: 'vue/dist/vue.common.js',
-        'process.env.NODE_ENV': process.env.NODE_ENV
-      }
-    }
-  },
-  markdown: {
-    config: md => {
-      // use more markdown-it plugins!
-      md.use(require('markdown-it-include'))
-    }
-  },
-  themeConfig: {
-    home: true,
-    logo: '/logo.png',
-    repo: 'oruga-ui/oruga',
-    editLinks: true,
-    docsDir: 'packages/docs',
-    docsBranch: 'develop',
-    nav: [
-      { text: 'Home', link: '/' },
-      { text: 'Documentation', link: '/documentation/' },
-      { text: 'Expo', link: '/expo/' },
-      { text: 'Donate โ˜•๏ธ', items: [
-          {text:'Ko-fi', link: 'https://ko-fi.com/orugaui' }
-        ]
-      },
-      // { text: '๐ŸŽƒ Hacktoberfest', link: '/hacktoberfest/' },
-      { text: 'Discord', link: 'https://discord.gg/RuKuBYN' },
-      { text: 'Twitter', link: 'https://twitter.com/oruga_ui' },
-    ],
-    sidebar: [
-      {
-        title: 'Get started',
-        collapsable: true,
-        path: '/documentation/',
-        sidebarDepth: 2
-      },
-      {
-        title: 'Components',
-        collapsable: false,
-        children: sidebarComponents
-      }
-    ]
-  }
-}
diff --git a/packages/docs/.vuepress/enhanceApp.js b/packages/docs/.vuepress/enhanceApp.js
deleted file mode 100644
index 47d7a83ac..000000000
--- a/packages/docs/.vuepress/enhanceApp.js
+++ /dev/null
@@ -1,46 +0,0 @@
-
-import Oruga from '../../oruga/dist/oruga';
-
-import { library } from '@fortawesome/fontawesome-svg-core';
-import { fas } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
-
-import DocWrapper from './DocWrapper.vue';
-import Inspector from './Inspector.vue';
-import CarbonAds from './theme/components/CarbonAds.vue'
-import Expo from './Expo.vue';
-import HFRepos from './HFRepos.vue';
-
-import toggleStyle from './theme/components/togglestyles.js'
-
-export default ({
-  Vue
-}) => {
-
-  library.add(fas);
-  Vue.component('vue-fontawesome', FontAwesomeIcon);
-
-  Vue.component('CarbonAds', CarbonAds);
-  Vue.component('doc-wrapper', DocWrapper);
-  Vue.component('inspector', Inspector);
-  Vue.component('expo', Expo);
-  Vue.component('HFRepos', HFRepos);
-
-
-  Vue.use(Oruga, {
-    iconPack: 'fas',
-    iconComponent: 'vue-fontawesome'
-  });
-
-  if (process.env.NODE_ENV !== 'production') {
-    import('../../oruga/dist/oruga-full-vars.css');
-  }
-
-  // plugin-demo-block
-  if (typeof window !== 'undefined') {
-    window.Vue = Vue;
-    const value = localStorage.getItem('oruga.io_lite') === 'true';
-    toggleStyle(value, true);
-  }
-
-}
diff --git a/packages/docs/.vuepress/meta/robots.txt b/packages/docs/.vuepress/meta/robots.txt
deleted file mode 100644
index 1f53798bb..000000000
--- a/packages/docs/.vuepress/meta/robots.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow: /
diff --git a/packages/docs/.vuepress/public/_redirects b/packages/docs/.vuepress/public/_redirects
deleted file mode 100644
index 578649911..000000000
--- a/packages/docs/.vuepress/public/_redirects
+++ /dev/null
@@ -1,2 +0,0 @@
-## fix previous seo path (google)
-/guide /documentation 301!
\ No newline at end of file
diff --git a/packages/docs/.vuepress/public/banner08CRredlogo.png b/packages/docs/.vuepress/public/banner08CRredlogo.png
deleted file mode 100644
index 56d00862b..000000000
Binary files a/packages/docs/.vuepress/public/banner08CRredlogo.png and /dev/null differ
diff --git a/packages/docs/.vuepress/public/defaultswitch.mp4 b/packages/docs/.vuepress/public/defaultswitch.mp4
deleted file mode 100644
index 8b8700c44..000000000
Binary files a/packages/docs/.vuepress/public/defaultswitch.mp4 and /dev/null differ
diff --git a/packages/docs/.vuepress/public/favicon-16x16.png b/packages/docs/.vuepress/public/favicon-16x16.png
deleted file mode 100644
index 9a9ba6ab6..000000000
Binary files a/packages/docs/.vuepress/public/favicon-16x16.png and /dev/null differ
diff --git a/packages/docs/.vuepress/public/favicon-32x32.png b/packages/docs/.vuepress/public/favicon-32x32.png
deleted file mode 100644
index f9dadeadf..000000000
Binary files a/packages/docs/.vuepress/public/favicon-32x32.png and /dev/null differ
diff --git a/packages/docs/.vuepress/public/favicon.ico b/packages/docs/.vuepress/public/favicon.ico
deleted file mode 100644
index 466656596..000000000
Binary files a/packages/docs/.vuepress/public/favicon.ico and /dev/null differ
diff --git a/packages/docs/.vuepress/public/hfrepos.json b/packages/docs/.vuepress/public/hfrepos.json
deleted file mode 100644
index 8bc7e669e..000000000
--- a/packages/docs/.vuepress/public/hfrepos.json
+++ /dev/null
@@ -1,504 +0,0 @@
-{
-  "total_count": 5,
-  "incomplete_results": false,
-  "items": [
-    {
-      "id": 268736505,
-      "node_id": "MDEwOlJlcG9zaXRvcnkyNjg3MzY1MDU=",
-      "name": "oruga",
-      "full_name": "oruga-ui/oruga",
-      "private": false,
-      "owner": {
-        "login": "oruga-ui",
-        "id": 66300512,
-        "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy",
-        "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4",
-        "gravatar_id": "",
-        "url": "https://api.github.com/users/oruga-ui",
-        "html_url": "https://github.com/oruga-ui",
-        "followers_url": "https://api.github.com/users/oruga-ui/followers",
-        "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}",
-        "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}",
-        "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}",
-        "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions",
-        "organizations_url": "https://api.github.com/users/oruga-ui/orgs",
-        "repos_url": "https://api.github.com/users/oruga-ui/repos",
-        "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}",
-        "received_events_url": "https://api.github.com/users/oruga-ui/received_events",
-        "type": "Organization",
-        "site_admin": false
-      },
-      "html_url": "https://github.com/oruga-ui/oruga",
-      "description": "๐Ÿ› Oruga is a lightweight library of UI components without CSS framework dependency",
-      "fork": false,
-      "url": "https://api.github.com/repos/oruga-ui/oruga",
-      "forks_url": "https://api.github.com/repos/oruga-ui/oruga/forks",
-      "keys_url": "https://api.github.com/repos/oruga-ui/oruga/keys{/key_id}",
-      "collaborators_url": "https://api.github.com/repos/oruga-ui/oruga/collaborators{/collaborator}",
-      "teams_url": "https://api.github.com/repos/oruga-ui/oruga/teams",
-      "hooks_url": "https://api.github.com/repos/oruga-ui/oruga/hooks",
-      "issue_events_url": "https://api.github.com/repos/oruga-ui/oruga/issues/events{/number}",
-      "events_url": "https://api.github.com/repos/oruga-ui/oruga/events",
-      "assignees_url": "https://api.github.com/repos/oruga-ui/oruga/assignees{/user}",
-      "branches_url": "https://api.github.com/repos/oruga-ui/oruga/branches{/branch}",
-      "tags_url": "https://api.github.com/repos/oruga-ui/oruga/tags",
-      "blobs_url": "https://api.github.com/repos/oruga-ui/oruga/git/blobs{/sha}",
-      "git_tags_url": "https://api.github.com/repos/oruga-ui/oruga/git/tags{/sha}",
-      "git_refs_url": "https://api.github.com/repos/oruga-ui/oruga/git/refs{/sha}",
-      "trees_url": "https://api.github.com/repos/oruga-ui/oruga/git/trees{/sha}",
-      "statuses_url": "https://api.github.com/repos/oruga-ui/oruga/statuses/{sha}",
-      "languages_url": "https://api.github.com/repos/oruga-ui/oruga/languages",
-      "stargazers_url": "https://api.github.com/repos/oruga-ui/oruga/stargazers",
-      "contributors_url": "https://api.github.com/repos/oruga-ui/oruga/contributors",
-      "subscribers_url": "https://api.github.com/repos/oruga-ui/oruga/subscribers",
-      "subscription_url": "https://api.github.com/repos/oruga-ui/oruga/subscription",
-      "commits_url": "https://api.github.com/repos/oruga-ui/oruga/commits{/sha}",
-      "git_commits_url": "https://api.github.com/repos/oruga-ui/oruga/git/commits{/sha}",
-      "comments_url": "https://api.github.com/repos/oruga-ui/oruga/comments{/number}",
-      "issue_comment_url": "https://api.github.com/repos/oruga-ui/oruga/issues/comments{/number}",
-      "contents_url": "https://api.github.com/repos/oruga-ui/oruga/contents/{+path}",
-      "compare_url": "https://api.github.com/repos/oruga-ui/oruga/compare/{base}...{head}",
-      "merges_url": "https://api.github.com/repos/oruga-ui/oruga/merges",
-      "archive_url": "https://api.github.com/repos/oruga-ui/oruga/{archive_format}{/ref}",
-      "downloads_url": "https://api.github.com/repos/oruga-ui/oruga/downloads",
-      "issues_url": "https://api.github.com/repos/oruga-ui/oruga/issues{/number}",
-      "pulls_url": "https://api.github.com/repos/oruga-ui/oruga/pulls{/number}",
-      "milestones_url": "https://api.github.com/repos/oruga-ui/oruga/milestones{/number}",
-      "notifications_url": "https://api.github.com/repos/oruga-ui/oruga/notifications{?since,all,participating}",
-      "labels_url": "https://api.github.com/repos/oruga-ui/oruga/labels{/name}",
-      "releases_url": "https://api.github.com/repos/oruga-ui/oruga/releases{/id}",
-      "deployments_url": "https://api.github.com/repos/oruga-ui/oruga/deployments",
-      "created_at": "2020-06-02T07:52:58Z",
-      "updated_at": "2021-09-29T02:39:29Z",
-      "pushed_at": "2021-09-29T14:10:35Z",
-      "git_url": "git://github.com/oruga-ui/oruga.git",
-      "ssh_url": "git@github.com:oruga-ui/oruga.git",
-      "clone_url": "https://github.com/oruga-ui/oruga.git",
-      "svn_url": "https://github.com/oruga-ui/oruga",
-      "homepage": "https://oruga.io",
-      "size": 6572,
-      "stargazers_count": 478,
-      "watchers_count": 478,
-      "language": "Vue",
-      "has_issues": true,
-      "has_projects": true,
-      "has_downloads": true,
-      "has_wiki": false,
-      "has_pages": false,
-      "forks_count": 50,
-      "mirror_url": null,
-      "archived": false,
-      "disabled": false,
-      "open_issues_count": 9,
-      "license": {
-        "key": "mit",
-        "name": "MIT License",
-        "spdx_id": "MIT",
-        "url": "https://api.github.com/licenses/mit",
-        "node_id": "MDc6TGljZW5zZTEz"
-      },
-      "allow_forking": true,
-      "forks": 50,
-      "open_issues": 9,
-      "watchers": 478,
-      "default_branch": "develop",
-      "score": 1.0
-    },
-    {
-      "id": 368601767,
-      "node_id": "MDEwOlJlcG9zaXRvcnkzNjg2MDE3Njc=",
-      "name": "oruga-bulma",
-      "full_name": "oruga-ui/oruga-bulma",
-      "private": false,
-      "owner": {
-        "login": "oruga-ui",
-        "id": 66300512,
-        "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy",
-        "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4",
-        "gravatar_id": "",
-        "url": "https://api.github.com/users/oruga-ui",
-        "html_url": "https://github.com/oruga-ui",
-        "followers_url": "https://api.github.com/users/oruga-ui/followers",
-        "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}",
-        "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}",
-        "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}",
-        "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions",
-        "organizations_url": "https://api.github.com/users/oruga-ui/orgs",
-        "repos_url": "https://api.github.com/users/oruga-ui/repos",
-        "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}",
-        "received_events_url": "https://api.github.com/users/oruga-ui/received_events",
-        "type": "Organization",
-        "site_admin": false
-      },
-      "html_url": "https://github.com/oruga-ui/oruga-bulma",
-      "description": "๐ŸŽˆ Customisation of Oruga components with Bulma framework",
-      "fork": false,
-      "url": "https://api.github.com/repos/oruga-ui/oruga-bulma",
-      "forks_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/forks",
-      "keys_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/keys{/key_id}",
-      "collaborators_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/collaborators{/collaborator}",
-      "teams_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/teams",
-      "hooks_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/hooks",
-      "issue_events_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues/events{/number}",
-      "events_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/events",
-      "assignees_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/assignees{/user}",
-      "branches_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/branches{/branch}",
-      "tags_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/tags",
-      "blobs_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/blobs{/sha}",
-      "git_tags_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/tags{/sha}",
-      "git_refs_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/refs{/sha}",
-      "trees_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/trees{/sha}",
-      "statuses_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/statuses/{sha}",
-      "languages_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/languages",
-      "stargazers_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/stargazers",
-      "contributors_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/contributors",
-      "subscribers_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/subscribers",
-      "subscription_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/subscription",
-      "commits_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/commits{/sha}",
-      "git_commits_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/commits{/sha}",
-      "comments_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/comments{/number}",
-      "issue_comment_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues/comments{/number}",
-      "contents_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/contents/{+path}",
-      "compare_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/compare/{base}...{head}",
-      "merges_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/merges",
-      "archive_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/{archive_format}{/ref}",
-      "downloads_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/downloads",
-      "issues_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues{/number}",
-      "pulls_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/pulls{/number}",
-      "milestones_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/milestones{/number}",
-      "notifications_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/notifications{?since,all,participating}",
-      "labels_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/labels{/name}",
-      "releases_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/releases{/id}",
-      "deployments_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/deployments",
-      "created_at": "2021-05-18T16:42:13Z",
-      "updated_at": "2021-09-28T15:41:44Z",
-      "pushed_at": "2021-09-15T22:38:01Z",
-      "git_url": "git://github.com/oruga-ui/oruga-bulma.git",
-      "ssh_url": "git@github.com:oruga-ui/oruga-bulma.git",
-      "clone_url": "https://github.com/oruga-ui/oruga-bulma.git",
-      "svn_url": "https://github.com/oruga-ui/oruga-bulma",
-      "homepage": "",
-      "size": 408,
-      "stargazers_count": 27,
-      "watchers_count": 27,
-      "language": "SCSS",
-      "has_issues": true,
-      "has_projects": true,
-      "has_downloads": true,
-      "has_wiki": false,
-      "has_pages": false,
-      "forks_count": 1,
-      "mirror_url": null,
-      "archived": false,
-      "disabled": false,
-      "open_issues_count": 0,
-      "license": {
-        "key": "mit",
-        "name": "MIT License",
-        "spdx_id": "MIT",
-        "url": "https://api.github.com/licenses/mit",
-        "node_id": "MDc6TGljZW5zZTEz"
-      },
-      "allow_forking": true,
-      "forks": 1,
-      "open_issues": 0,
-      "watchers": 27,
-      "default_branch": "master",
-      "score": 1.0
-    },
-    {
-      "id": 314646698,
-      "node_id": "MDEwOlJlcG9zaXRvcnkzMTQ2NDY2OTg=",
-      "name": "demo-tailwindcss",
-      "full_name": "oruga-ui/demo-tailwindcss",
-      "private": false,
-      "owner": {
-        "login": "oruga-ui",
-        "id": 66300512,
-        "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy",
-        "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4",
-        "gravatar_id": "",
-        "url": "https://api.github.com/users/oruga-ui",
-        "html_url": "https://github.com/oruga-ui",
-        "followers_url": "https://api.github.com/users/oruga-ui/followers",
-        "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}",
-        "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}",
-        "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}",
-        "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions",
-        "organizations_url": "https://api.github.com/users/oruga-ui/orgs",
-        "repos_url": "https://api.github.com/users/oruga-ui/repos",
-        "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}",
-        "received_events_url": "https://api.github.com/users/oruga-ui/received_events",
-        "type": "Organization",
-        "site_admin": false
-      },
-      "html_url": "https://github.com/oruga-ui/demo-tailwindcss",
-      "description": "๐ŸŽ TailwindCSS 2 + Oruga demo",
-      "fork": false,
-      "url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss",
-      "forks_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/forks",
-      "keys_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/keys{/key_id}",
-      "collaborators_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/collaborators{/collaborator}",
-      "teams_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/teams",
-      "hooks_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/hooks",
-      "issue_events_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues/events{/number}",
-      "events_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/events",
-      "assignees_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/assignees{/user}",
-      "branches_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/branches{/branch}",
-      "tags_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/tags",
-      "blobs_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/blobs{/sha}",
-      "git_tags_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/tags{/sha}",
-      "git_refs_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/refs{/sha}",
-      "trees_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/trees{/sha}",
-      "statuses_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/statuses/{sha}",
-      "languages_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/languages",
-      "stargazers_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/stargazers",
-      "contributors_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/contributors",
-      "subscribers_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/subscribers",
-      "subscription_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/subscription",
-      "commits_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/commits{/sha}",
-      "git_commits_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/commits{/sha}",
-      "comments_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/comments{/number}",
-      "issue_comment_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues/comments{/number}",
-      "contents_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/contents/{+path}",
-      "compare_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/compare/{base}...{head}",
-      "merges_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/merges",
-      "archive_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/{archive_format}{/ref}",
-      "downloads_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/downloads",
-      "issues_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues{/number}",
-      "pulls_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/pulls{/number}",
-      "milestones_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/milestones{/number}",
-      "notifications_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/notifications{?since,all,participating}",
-      "labels_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/labels{/name}",
-      "releases_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/releases{/id}",
-      "deployments_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/deployments",
-      "created_at": "2020-11-20T19:10:16Z",
-      "updated_at": "2021-09-29T14:22:17Z",
-      "pushed_at": "2021-02-06T11:12:30Z",
-      "git_url": "git://github.com/oruga-ui/demo-tailwindcss.git",
-      "ssh_url": "git@github.com:oruga-ui/demo-tailwindcss.git",
-      "clone_url": "https://github.com/oruga-ui/demo-tailwindcss.git",
-      "svn_url": "https://github.com/oruga-ui/demo-tailwindcss",
-      "homepage": "https://oruga-tailwindcss-demo.netlify.app",
-      "size": 1259,
-      "stargazers_count": 14,
-      "watchers_count": 14,
-      "language": "Vue",
-      "has_issues": true,
-      "has_projects": true,
-      "has_downloads": true,
-      "has_wiki": true,
-      "has_pages": false,
-      "forks_count": 1,
-      "mirror_url": null,
-      "archived": false,
-      "disabled": false,
-      "open_issues_count": 0,
-      "license": null,
-      "allow_forking": true,
-      "forks": 1,
-      "open_issues": 0,
-      "watchers": 14,
-      "default_branch": "master",
-      "score": 1.0
-    },
-    {
-      "id": 375468305,
-      "node_id": "MDEwOlJlcG9zaXRvcnkzNzU0NjgzMDU=",
-      "name": "vue-telescope-expo",
-      "full_name": "oruga-ui/vue-telescope-expo",
-      "private": false,
-      "owner": {
-        "login": "oruga-ui",
-        "id": 66300512,
-        "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy",
-        "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4",
-        "gravatar_id": "",
-        "url": "https://api.github.com/users/oruga-ui",
-        "html_url": "https://github.com/oruga-ui",
-        "followers_url": "https://api.github.com/users/oruga-ui/followers",
-        "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}",
-        "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}",
-        "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}",
-        "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions",
-        "organizations_url": "https://api.github.com/users/oruga-ui/orgs",
-        "repos_url": "https://api.github.com/users/oruga-ui/repos",
-        "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}",
-        "received_events_url": "https://api.github.com/users/oruga-ui/received_events",
-        "type": "Organization",
-        "site_admin": false
-      },
-      "html_url": "https://github.com/oruga-ui/vue-telescope-expo",
-      "description": "๐Ÿ”ญ Fully customizable VueTelescope expo for your website",
-      "fork": false,
-      "url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo",
-      "forks_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/forks",
-      "keys_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/keys{/key_id}",
-      "collaborators_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/collaborators{/collaborator}",
-      "teams_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/teams",
-      "hooks_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/hooks",
-      "issue_events_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues/events{/number}",
-      "events_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/events",
-      "assignees_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/assignees{/user}",
-      "branches_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/branches{/branch}",
-      "tags_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/tags",
-      "blobs_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/blobs{/sha}",
-      "git_tags_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/tags{/sha}",
-      "git_refs_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/refs{/sha}",
-      "trees_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/trees{/sha}",
-      "statuses_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/statuses/{sha}",
-      "languages_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/languages",
-      "stargazers_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/stargazers",
-      "contributors_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/contributors",
-      "subscribers_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/subscribers",
-      "subscription_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/subscription",
-      "commits_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/commits{/sha}",
-      "git_commits_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/commits{/sha}",
-      "comments_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/comments{/number}",
-      "issue_comment_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues/comments{/number}",
-      "contents_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/contents/{+path}",
-      "compare_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/compare/{base}...{head}",
-      "merges_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/merges",
-      "archive_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/{archive_format}{/ref}",
-      "downloads_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/downloads",
-      "issues_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues{/number}",
-      "pulls_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/pulls{/number}",
-      "milestones_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/milestones{/number}",
-      "notifications_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/notifications{?since,all,participating}",
-      "labels_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/labels{/name}",
-      "releases_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/releases{/id}",
-      "deployments_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/deployments",
-      "created_at": "2021-06-09T19:29:42Z",
-      "updated_at": "2021-09-29T14:21:50Z",
-      "pushed_at": "2021-09-28T22:25:12Z",
-      "git_url": "git://github.com/oruga-ui/vue-telescope-expo.git",
-      "ssh_url": "git@github.com:oruga-ui/vue-telescope-expo.git",
-      "clone_url": "https://github.com/oruga-ui/vue-telescope-expo.git",
-      "svn_url": "https://github.com/oruga-ui/vue-telescope-expo",
-      "homepage": "",
-      "size": 6381,
-      "stargazers_count": 8,
-      "watchers_count": 8,
-      "language": "JavaScript",
-      "has_issues": true,
-      "has_projects": true,
-      "has_downloads": true,
-      "has_wiki": true,
-      "has_pages": false,
-      "forks_count": 0,
-      "mirror_url": null,
-      "archived": false,
-      "disabled": false,
-      "open_issues_count": 0,
-      "license": {
-        "key": "mit",
-        "name": "MIT License",
-        "spdx_id": "MIT",
-        "url": "https://api.github.com/licenses/mit",
-        "node_id": "MDc6TGljZW5zZTEz"
-      },
-      "allow_forking": true,
-      "forks": 0,
-      "open_issues": 0,
-      "watchers": 8,
-      "default_branch": "master",
-      "score": 1.0
-    },
-    {
-      "id": 323762219,
-      "node_id": "MDEwOlJlcG9zaXRvcnkzMjM3NjIyMTk=",
-      "name": "demo-multiframework",
-      "full_name": "oruga-ui/demo-multiframework",
-      "private": false,
-      "owner": {
-        "login": "oruga-ui",
-        "id": 66300512,
-        "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy",
-        "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4",
-        "gravatar_id": "",
-        "url": "https://api.github.com/users/oruga-ui",
-        "html_url": "https://github.com/oruga-ui",
-        "followers_url": "https://api.github.com/users/oruga-ui/followers",
-        "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}",
-        "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}",
-        "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}",
-        "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions",
-        "organizations_url": "https://api.github.com/users/oruga-ui/orgs",
-        "repos_url": "https://api.github.com/users/oruga-ui/repos",
-        "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}",
-        "received_events_url": "https://api.github.com/users/oruga-ui/received_events",
-        "type": "Organization",
-        "site_admin": false
-      },
-      "html_url": "https://github.com/oruga-ui/demo-multiframework",
-      "description": "๐Ÿงถ  Oruga combined with 4 different styles: Tailwind, Bootstrap 5, Bulma and Material!",
-      "fork": false,
-      "url": "https://api.github.com/repos/oruga-ui/demo-multiframework",
-      "forks_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/forks",
-      "keys_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/keys{/key_id}",
-      "collaborators_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/collaborators{/collaborator}",
-      "teams_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/teams",
-      "hooks_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/hooks",
-      "issue_events_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues/events{/number}",
-      "events_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/events",
-      "assignees_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/assignees{/user}",
-      "branches_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/branches{/branch}",
-      "tags_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/tags",
-      "blobs_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/blobs{/sha}",
-      "git_tags_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/tags{/sha}",
-      "git_refs_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/refs{/sha}",
-      "trees_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/trees{/sha}",
-      "statuses_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/statuses/{sha}",
-      "languages_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/languages",
-      "stargazers_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/stargazers",
-      "contributors_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/contributors",
-      "subscribers_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/subscribers",
-      "subscription_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/subscription",
-      "commits_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/commits{/sha}",
-      "git_commits_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/commits{/sha}",
-      "comments_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/comments{/number}",
-      "issue_comment_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues/comments{/number}",
-      "contents_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/contents/{+path}",
-      "compare_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/compare/{base}...{head}",
-      "merges_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/merges",
-      "archive_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/{archive_format}{/ref}",
-      "downloads_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/downloads",
-      "issues_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues{/number}",
-      "pulls_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/pulls{/number}",
-      "milestones_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/milestones{/number}",
-      "notifications_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/notifications{?since,all,participating}",
-      "labels_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/labels{/name}",
-      "releases_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/releases{/id}",
-      "deployments_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/deployments",
-      "created_at": "2020-12-23T00:20:56Z",
-      "updated_at": "2021-09-29T14:22:39Z",
-      "pushed_at": "2021-03-01T23:53:56Z",
-      "git_url": "git://github.com/oruga-ui/demo-multiframework.git",
-      "ssh_url": "git@github.com:oruga-ui/demo-multiframework.git",
-      "clone_url": "https://github.com/oruga-ui/demo-multiframework.git",
-      "svn_url": "https://github.com/oruga-ui/demo-multiframework",
-      "homepage": "https://oruga-multiframework-demo.netlify.app",
-      "size": 1208,
-      "stargazers_count": 5,
-      "watchers_count": 5,
-      "language": "Vue",
-      "has_issues": true,
-      "has_projects": true,
-      "has_downloads": true,
-      "has_wiki": true,
-      "has_pages": false,
-      "forks_count": 0,
-      "mirror_url": null,
-      "archived": false,
-      "disabled": false,
-      "open_issues_count": 0,
-      "license": null,
-      "allow_forking": true,
-      "forks": 0,
-      "open_issues": 0,
-      "watchers": 5,
-      "default_branch": "master",
-      "score": 1.0
-    }
-  ]
-}
diff --git a/packages/docs/.vuepress/public/inspectormov.mp4 b/packages/docs/.vuepress/public/inspectormov.mp4
deleted file mode 100644
index 77b0f69f1..000000000
Binary files a/packages/docs/.vuepress/public/inspectormov.mp4 and /dev/null differ
diff --git a/packages/docs/.vuepress/public/logo-banner.png b/packages/docs/.vuepress/public/logo-banner.png
deleted file mode 100644
index 87669bb6c..000000000
Binary files a/packages/docs/.vuepress/public/logo-banner.png and /dev/null differ
diff --git a/packages/docs/.vuepress/public/logo.png b/packages/docs/.vuepress/public/logo.png
deleted file mode 100644
index 269045a6d..000000000
Binary files a/packages/docs/.vuepress/public/logo.png and /dev/null differ
diff --git a/packages/docs/.vuepress/public/oruga.svg b/packages/docs/.vuepress/public/oruga.svg
deleted file mode 100644
index bd089f647..000000000
--- a/packages/docs/.vuepress/public/oruga.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="297.463px" height="277.146px" viewBox="0 0 297.463 277.146" enable-background="new 0 0 297.463 277.146"
-	 xml:space="preserve">
-<g id="Livello_1">
-	<g>
-		<g>
-			<defs>
-				<path id="XMLID_1_" d="M71.915,118.993c-8.891-9.093-9.771-23.597-2.637-34.588c4.633-7.136,10.906-12.337,18.791-15.568
-					c1.852-0.76,3.762-1.288,5.773-1.238c2.607,0.063,3.459,1.036,2.984,3.621c-0.852,4.647-1.059,9.313-0.402,13.979
-					c1.301,9.223,5.654,17,11.703,23.91c1.547,1.767,3.256,3.394,4.893,5.085c0.713,0.54,1.443,1.063,2.137,1.629
-					c1.887,1.538,2.137,3.358,0.639,5.529c-2.098,3.04-5.16,4.607-8.676,5.411C94.155,129.727,81.823,129.128,71.915,118.993z
-					 M114.005,107.814c4.699,6,10.369,10.111,18.473,9.343c4.148-0.393,8.18-1.143,11.121-4.541c0.709-0.82,1.148-1.505,0.117-2.494
-					c-1.314-1.262-1.98-2.977-2.738-4.61c-2.094-4.511-3.133-9.336-4.271-14.133c-2.053-12.818-1.475-25.313,4.404-37.205
-					c1.244-2.517,0.574-4.55-1.691-6.187c-1.451-1.046-3.111-1.485-4.846-1.724c-5.059-0.697-9.773,0.734-14.428,2.405
-					c-15.018,5.395-23.029,20.471-19.285,35.955C103.038,93.635,108.052,100.976,114.005,107.814z M72.53,158.015
-					c11.268,0.801,21.281-2.824,30.043-9.902c1.27-1.026,2.516-2.143,3.146-3.741c2.018-2.543,3.062-5.433,2.807-8.678
-					c-0.145-1.839-0.732-3.537-2.916-3.963c-1.201-1.127-2.629-0.677-3.973-0.503c-6.098,0.791-12.17,0.826-18.262-0.141
-					c-7.008-1.112-12.926-3.885-16.979-10.033c-1.578-2.399-4.289-2.92-7.053-1.657c-3.846,1.757-5.85,5.026-6.762,8.958
-					c-1.432,6.158,0.117,11.941,2.607,17.544C58.528,153.417,64.536,157.446,72.53,158.015z M140.448,90.345
-					c0.631,6.587,2.51,12.753,6.389,18.176c3.633,5.079,8.551,7.579,14.895,7.194c1.547-0.094,2.088-0.328,1.439-1.966
-					c-1.004-2.539-1.293-5.266-1.779-7.943c-1.031-5.704-0.332-11.344,0.42-16.989c0.635-2.274,1.008-4.663,1.951-6.801
-					c3.217-7.315,7.664-13.783,13.543-19.291c3.818-3.577,3.312-8.273-0.871-11.476c-2.92-2.235-6.381-3.094-9.877-3.676
-					c-11.168-1.861-20.209,1.458-24.699,13.022C138.081,70.323,138.862,80.33,140.448,90.345z M113.636,196.8
-					c3.006-3.895,5.467-8.078,5.586-13.222c0.037-4.431-1.721-7.871-5.576-10.105c-3.428-1.983-6.592-1.285-8.85,1.834
-					c-1.613,2.228-3.57,4.086-5.832,5.658c-6.031,4.191-12.865,6.184-19.965,7.61c-5.443,1.095-7.295,5.403-4.66,10.312
-					c4.711,8.784,16.275,12.932,25.467,9.106C105.507,205.621,109.925,201.609,113.636,196.8z M221.854,85.946
-					c-3.982-4.245-9.346-4.801-14.451-1.874c-6.488,3.719-11.221,9.301-15.799,15.034c-3.154,3.399-5.582,7.304-7.785,11.349
-					c-2.053,3.771-3.773,7.678-4.379,11.993c-0.562,4.018,0.65,5.715,4.631,6.31c0.73,0.109,1.475,0.199,2.209,0.192
-					c8.672-0.078,16.92-2.195,24.982-5.202c2.527-0.8,5.018-1.669,7.402-2.875c5.111-2.584,8.904-6.397,10.152-12.018
-					C230.776,100.024,227.897,92.385,221.854,85.946z M75.521,184.817c11.283-0.754,20.295-5.691,26.852-14.946
-					c2.252-3.182,3.225-6.844,2.889-10.791c-0.387-4.569-2.898-5.917-6.705-3.539c-5.801,3.624-12.064,6.024-18.85,6.849
-					c-5.861,0.713-11.475-0.298-16.82-2.91c-2.896-1.417-4.924-0.391-5.807,2.69c-0.227,0.787-0.41,1.614-0.434,2.43
-					C56.397,173.033,62.468,185.353,75.521,184.817z M176.597,68.592c-5.064,5.724-8.701,12.426-11.062,19.754
-					c-3.473,9.492-3.145,18.738,1.961,27.595c1.799,3.118,4.246,5.701,7.447,7.466c2.287,1.263,2.844,0.954,3.061-1.58
-					c0.127-1.479,0.242-2.963,0.482-4.425c1.293-7.902,5.701-14.265,10.234-20.56c3.635-4.511,7.766-8.549,12.146-12.305
-					c4.506-3.858,6.748-9.788,5.182-14.539c-1.613-4.891-7.889-9.285-13.436-9.521C185.737,60.185,180.747,63.9,176.597,68.592z
-					 M137.554,191.954c-1.727-3.502-4.908-5.155-8.715-5.117c-3.748,0.037-6.26,2.08-7.635,5.63
-					c-2.291,5.917-6.334,10.361-11.75,13.618c-2.195,1.32-4.34,2.733-6.033,4.708c-2.535,2.958-2.66,6.111,0.027,8.838
-					c3.879,3.932,8.441,6.604,14.424,6.518c6.033,0.052,10.912-2.752,14.9-7.289c2.574-2.927,4.068-6.362,5.182-10.154
-					C139.636,202.979,140.253,197.427,137.554,191.954z M146.581,191.735c-4.975,0.543-6.004,2.067-5.238,6.599
-					c0.559,3.31,1.299,6.639,0.855,10.055c-0.533,4.138-2.629,7.582-4.76,11.028c-3.02,4.885-1.232,9.44,4.223,11.282
-					c5.203,1.758,9.805,0.531,13.871-2.755c5.895-4.765,7.893-11.351,8.154-18.957c-0.096-0.929-0.23-2.155-0.354-3.382
-					C162.505,197.409,154.755,190.845,146.581,191.735z M183.151,195.513c-3.217-2.854-7.979-3.062-12.988-0.421
-					c-3.932,2.072-4.486,3.383-3.668,8.859c0.615,4.117,0.633,8.241,0.17,12.367c-0.549,4.886,2.061,8.196,6.949,8.627
-					c1.395,0.122,2.814,0.1,4.215,0.007c7.748-0.514,12.066-5.155,11.984-14.666C189.61,205.769,188.155,199.95,183.151,195.513z
-					 M201.89,186.944c-4.242,0.235-8.779,1.029-12.797,3.604c-2.199,1.409-2.303,2.221-0.666,4.001
-					c1.701,1.852,2.98,3.914,3.768,6.325c0.916,2.797,0.803,5.7,1.111,8.559c0.504,4.684,3.072,6.054,7.139,3.686
-					c3.613-2.104,6.578-4.985,9.293-8.118c1.914-2.207,3.707-4.618,3.795-7.63C213.698,191.755,210.126,186.757,201.89,186.944z
-					 M220.335,172.629c-5.391,2.183-9.75,5.833-13.594,10.127c-0.369,0.413-0.873,0.9-0.619,1.519
-					c0.289,0.701,1.008,0.397,1.537,0.401c3.139,0.026,5.914,0.8,7.541,3.771c1.127,2.059,1.541,4.333,1.734,6.652
-					c0.039,0.464-0.143,1.079,0.469,1.281c0.576,0.189,0.906-0.316,1.193-0.688c4.242-5.525,7.098-11.66,8.117-17.77
-					C226.747,172.854,224.271,171.037,220.335,172.629z M182.751,130.827c-1.328-0.086-1.27,0.688-1.328,1.521
-					c-0.252,3.475,2.146,6.811,6.375,7.774c10.227,2.33,19.674,0.672,27.812-6.382c5.035-4.187,8.701-9.353,11.139-15.433
-					c-4.23,3.235-8.912,5.578-13.641,7.843C203.28,129.594,193.212,131.516,182.751,130.827z M149.718,124.172
-					c0.047,2.834,2,5.207,4.299,5.218c2.219,0.01,4.314-2.548,4.301-5.253c-0.014-2.726-2.057-5.308-4.225-5.339
-					C151.714,118.763,149.673,121.272,149.718,124.172z M111.401,159.137c-0.051,2.009,1.639,3.679,3.791,3.751
-					c2.871,0.094,6.17-2.843,6.229-5.545c0.047-2.054-1.572-3.662-3.781-3.754C114.634,153.464,111.472,156.276,111.401,159.137z
-					 M126.144,130.436c-0.002-2.961-2.645-5.356-5.9-5.351c-2.461,0.006-4.127,1.461-4.133,3.606
-					c-0.006,2.718,2.955,5.332,6.047,5.336C124.728,134.031,126.147,132.754,126.144,130.436z M133.659,183.116
-					c0.176,1.788,1.117,2.905,3.1,2.752c2.229-0.052,4.289-2.307,4.217-4.63c-0.061-1.883-1.074-2.937-2.928-2.972
-					C135.841,178.227,133.442,180.879,133.659,183.116z M171.858,185.08c-1.689-0.004-2.262,1.368-2.295,2.973
-					c0.086,1.795,0.834,3.312,2.783,3.391c1.838,0.075,2.498-1.433,2.418-3.044C174.679,186.62,173.835,185.085,171.858,185.08z
-					 M198.519,180.226c-0.051-1.612-0.791-3.001-2.453-3.111c-1.516-0.101-2.32,1.371-2.27,2.678
-					c0.055,1.456,0.699,3.043,2.512,3.127C197.948,182.996,198.472,181.749,198.519,180.226z"/>
-			</defs>
-			<use xlink:href="#XMLID_1_"  overflow="visible" fill-rule="evenodd" clip-rule="evenodd" fill="#263A21"/>
-			<clipPath id="XMLID_5_">
-				<use xlink:href="#XMLID_1_"  overflow="visible"/>
-			</clipPath>
-			<path clip-path="url(#XMLID_5_)" fill-rule="evenodd" clip-rule="evenodd" fill="#95C11F" d="M98.671,133.172
-				c0-22.575,22.871-40.877,54.146-40.877s56.629,18.302,56.629,40.877c0,12.896,10.336,51.908-24.555,53.768
-				c-9.596,0.511-5.561,5.323-12.723,6.297c-2.648,0.358-14.533-2.347-18.15-2.347C122.743,190.89,98.671,155.747,98.671,133.172z"
-				/>
-		</g>
-	</g>
-</g>
-<g id="Modalitร _Isolamento">
-</g>
-</svg>
diff --git a/packages/docs/.vuepress/styles/index.styl b/packages/docs/.vuepress/styles/index.styl
deleted file mode 100644
index 0dffcaa14..000000000
--- a/packages/docs/.vuepress/styles/index.styl
+++ /dev/null
@@ -1,123 +0,0 @@
-
-/* edit page link */
-.docgen-edit-link{
-    float: right;
-}
-
-/* Vuepress demo-block plugin */
-.vuepress-plugin-demo-block__display {
-    overflow: visible !important;
-    max-height: none !important;
-}
-.vuepress-plugin-demo-block__wrapper:hover {
-    box-shadow: none !important;
-}
-.vuepress-plugin-demo-block__expand::after {
-    content: 'Show code';
-}
-.vuepress-plugin-demo-block__expand::before {
-    display: none !important;
-}
-.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__expand {
-    color: #445e00;
-}
-.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover svg {
-    fill: #445e00 !important;
-}
-
-
-/* Vuepress */
-.home {
-    .hero {
-        .description {
-            max-width: 39.5rem !important;
-        }
-        .action {
-            .action-button {
-                color: #ffffff !important;
-            }
-        }
-    }
-}
-
-// Override Vuepress Theme
-.theme-default-content:not(.custom)  {
-  .vuepress-plugin-demo-block__display {
-    a:hover {
-      text-decoration: none;
-    }
-  }
-}
-.vuepress-plugin-demo-block__display {
-  tr:nth-child(2n) {
-    background-color: transparent;
-  }
-  .o-table__tr--selected {
-    background-color: #445e00!important;
-  }
-  th, td {
-    border-top-width: 0px;
-    border-left-width: 0px;
-    border-right-width: 0px;
-  }
-}
-
-.navbar {
-  z-index: 35;
-}
-
-.sidebar {
-  width: 15rem;
-}
-
-a.sidebar-link[href*='#carbonads'] {
-  display: none !important;
-}
-
-.theme-default-content:not(.custom) {
-  padding: 2rem 0rem;
-}
-
-@media (max-width: 419px) {
-  .theme-default-content:not(.custom) {
-      padding: 1.5rem;
-  }
-}
-
-.oruga-doc-video {
-  width: 100%;
-  max-width: 640px;
-  height: auto;
-}
-
-.installation-tabs {
-  border-radius: 6px;
-  overflow: hidden;
-}
-
-.installation-tabs-content {
-  background: #282c34;
-  overflow: hidden;
-  padding: 0!important;
-}
-
-.installation-tabs-nav-buttons {
-  display: flex;
-  background: #282c34;
-}
-
-.installation-tabs-nav-button-default {
-  outline: 0;
-  height: 3rem;
-  width: 4rem
-  cursor: pointer;
-  color: white;
-  border: 1px solid transparent;
-  background-color: transparent;
-  align-items: center;
-}
-
-.installation-tabs-nav-button-active-default {
-  color: #f08d49;
-  border-bottom: 1px solid #f08d49;
-}
diff --git a/packages/docs/.vuepress/styles/palette.styl b/packages/docs/.vuepress/styles/palette.styl
deleted file mode 100644
index 7c50be953..000000000
--- a/packages/docs/.vuepress/styles/palette.styl
+++ /dev/null
@@ -1,4 +0,0 @@
-
-$accentColor = #445e00
-
-$contentWidth = 1024px
\ No newline at end of file
diff --git a/packages/docs/.vuepress/theme/components/CarbonAds.vue b/packages/docs/.vuepress/theme/components/CarbonAds.vue
deleted file mode 100644
index 679f68bf8..000000000
--- a/packages/docs/.vuepress/theme/components/CarbonAds.vue
+++ /dev/null
@@ -1,67 +0,0 @@
-<template>
-  <client-only>
-    <div class="carbon-container" v-if="show">
-      <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CESI42JW&placement=orugaio" id="_carbonads_js"></script>
-    </div>
-  </client-only>
-</template>
-<script>
-// https://github.com/vuejs/vuefire/blob/master/packages/documentation/docs/.vuepress/components/CarbonAds.vue
-export default {
-    data () {
-      return {
-        show: false
-      }
-    },
-    watch: {
-        $route(to, from) {
-            if (to.path !== from.path && typeof _carbonads === 'object') {
-                // eslint-disable-next-line no-undef
-                _carbonads.refresh()
-            }
-        }
-    },
-    mounted: function () {
-      if ((new URL(location.href)).hostname !== "oruga.io") {
-        return;
-      }
-      setTimeout(() => {
-        this.show = true
-        setTimeout(() => {
-          document.querySelectorAll("div[id^=carbonads_]").forEach(el => el.remove());
-        }, 1000)
-      }, 1000)
-    }
-}
-</script>
-<style lang="stylus">
-div[id^=carbonads_]
-  display: none;
-.carbon-container
-    align-items: center;
-    display: flex;
-    justify-content: center;
-    max-width: 300px;
-    min-height: 140px;
-    min-width: 280px;
-    font-size 0.75rem
-  a
-    color #444
-    font-weight normal
-    display inline
-  .carbon-img
-    float left
-    margin-right 1rem
-    border 1px solid $borderColor
-    img
-      display block
-  .carbon-poweredby
-    color #999
-    display block
-    margin-top 0.5em
-@media (max-width: $MQMobile)
-  .carbon-ads
-    .carbon-img img
-      width 100px
-      height 77px
-</style>
diff --git a/packages/docs/.vuepress/theme/components/Home.vue b/packages/docs/.vuepress/theme/components/Home.vue
deleted file mode 100644
index 7fef33884..000000000
--- a/packages/docs/.vuepress/theme/components/Home.vue
+++ /dev/null
@@ -1,247 +0,0 @@
-<template>
-  <main
-    class="home"
-    :aria-labelledby="data.heroText !== null ? 'main-title' : null"
-  >
-    <header class="hero">
-
-      <img
-        v-if="data.heroImage"
-        :src="$withBase(data.heroImage)"
-        :alt="data.heroAlt || 'hero'"
-      >
-
-      <h1
-        v-if="data.heroText !== null"
-        id="main-title"
-      >
-        {{ data.heroText || $title || 'Hello' }}
-      </h1>
-
-      <p
-        v-if="data.tagline !== null"
-        class="description"
-      >
-        {{ data.tagline || $description || 'Welcome to your VuePress site' }}
-      </p>
-
-      <p
-        v-if="data.actionText && data.actionLink"
-        class="action"
-      >
-        <NavLink
-          class="action-button"
-          :item="actionLink"
-        />
-      </p>
-
-      <div class="ads-centered">
-        <CarbonAds />
-      </div>
-
-      <div class="versions">
-        <div class="version">
-          <h2>Vue 2 version</h2>
-          v.{{pkg.version}}
-        </div>
-        <div class="version changelog">
-          <h2>
-            <a href="https://github.com/oruga-ui/oruga/releases">
-              Changelog
-            </a>
-          </h2>
-        </div>
-        <div class="version">
-          <h2>Vue 3 version</h2>
-          v.{{pkgNext.version}}
-        </div>
-      </div>
-
-      <p align="center">
-        <a href="https://ko-fi.com/orugaui">
-          <img style="min-width:32px;height:32px;" src="https://github.githubassets.com/images/modules/site/icons/funding_platforms/ko_fi.svg" />Buy us a coffee โ˜•๏ธ
-        </a>
-        <a href="https://liberapay.com/oruga-ui/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
-      </p>
-
-    </header>
-
-    <div
-      v-if="data.features && data.features.length"
-      class="features"
-    >
-      <div
-        v-for="(feature, index) in data.features"
-        :key="index"
-        class="feature"
-      >
-        <h2>{{ feature.title }}</h2>
-        <p>{{ feature.details }}</p>
-      </div>
-    </div>
-
-    <Content class="theme-default-content custom" />
-
-    <div
-      v-if="data.footer"
-      class="footer"
-    >
-      {{ data.footer }}
-    </div>
-  </main>
-</template>
-
-<script>
-import NavLink from '@theme/components/NavLink.vue'
-import CarbonAds from '@theme/components/CarbonAds.vue'
-
-
-import pkg from '../../../../oruga/package.json'
-import pkgNext from '../../../../oruga-next/package.json'
-
-export default {
-  name: 'Home',
-
-  components: { NavLink, CarbonAds },
-
-  data() {
-    return {
-      pkg,
-      pkgNext
-    }
-  },
-
-  computed: {
-    data () {
-      return this.$page.frontmatter
-    },
-
-    actionLink () {
-      return {
-        link: this.data.actionLink,
-        text: this.data.actionText
-      }
-    }
-  }
-}
-</script>
-
-<style lang="stylus">
-.ads-centered
-  display: flex
-  justify-content: center
-  margin-bottom: 2rem
-.home
-  padding $navbarHeight 2rem 0
-  max-width $homePageWidth
-  margin 0px auto
-  display block
-  .hero
-    text-align center
-    img
-      max-width: 100%
-      max-height 280px
-      display block
-      margin 1rem auto 0
-    h1
-      font-size 3rem
-    .description, .action
-      margin 1.8rem auto
-    .description
-      max-width 35rem
-      font-size 1.6rem
-      line-height 1.3
-      color lighten($textColor, 40%)
-    .action-button
-      display inline-block
-      font-size 1.2rem
-      color #fff
-      background-color $accentColor
-      padding 0.8rem 1.6rem
-      border-radius 4px
-      transition background-color .1s ease
-      box-sizing border-box
-      border-bottom 1px solid darken($accentColor, 10%)
-      &:hover
-        background-color lighten($accentColor, 10%)
-  .features
-    border-top 1px solid $borderColor
-    padding 1.2rem 0
-    margin-top 1.5rem
-    display flex
-    flex-wrap wrap
-    align-items flex-start
-    align-content stretch
-    justify-content space-between
-  .feature
-    flex-grow 1
-    flex-basis 30%
-    max-width 30%
-    h2
-      font-size 1.4rem
-      font-weight 500
-      border-bottom none
-      padding-bottom 0
-      color lighten($textColor, 10%)
-    p
-      color lighten($textColor, 25%)
-  .versions
-    display flex
-    flex-wrap wrap
-    align-items flex-start
-    align-content stretch
-    justify-content space-between
-    color lighten($textColor, 10%)
-    .version
-      flex-grow 1
-      flex-basis 30%
-      color lighten($textColor, 25%)
-      h2
-        font-size 1.1rem
-        font-weight 500
-        border-bottom none
-        padding 0
-        margin 0
-        color lighten($textColor, 10%)
-  .footer
-    padding 2.5rem
-    border-top 1px solid $borderColor
-    text-align center
-    color lighten($textColor, 25%)
-
-@media (max-width: $MQMobile)
-  .home
-    .features
-      flex-direction column
-    .feature
-      max-width 100%
-      padding 0 2.5rem
-    .versions
-      flex-direction column
-    .version
-      width 100%;
-      padding .5rem
-    .changelog
-      order 2
-
-@media (max-width: $MQMobileNarrow)
-  .home
-    padding-left 1.5rem
-    padding-right 1.5rem
-    .hero
-      img
-        max-height 210px
-        margin 2rem auto 1.2rem
-      h1
-        font-size 2rem
-      h1, .description, .action
-        margin 1.2rem auto
-      .description
-        font-size 1.2rem
-      .action-button
-        font-size 1rem
-        padding 0.6rem 1.2rem
-    .feature
-      h2
-        font-size 1.25rem
-</style>
diff --git a/packages/docs/.vuepress/theme/components/Navbar.vue b/packages/docs/.vuepress/theme/components/Navbar.vue
deleted file mode 100644
index 3dffe35ec..000000000
--- a/packages/docs/.vuepress/theme/components/Navbar.vue
+++ /dev/null
@@ -1,282 +0,0 @@
-<template>
-  <header class="navbar">
-    <SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
-
-    <RouterLink
-      :to="$localePath"
-      class="home-link"
-    >
-      <img
-        v-if="$site.themeConfig.logo"
-        class="logo"
-        :src="$withBase($site.themeConfig.logo)"
-        :alt="$siteTitle"
-      >
-      <span
-        v-if="$siteTitle"
-        ref="siteName"
-        class="site-name"
-        :class="{ 'can-hide': $site.themeConfig.logo }"
-      >{{ $siteTitle }}</span>
-    </RouterLink>
-
-    <div class="docs-switch-box">
-      <o-switch
-        override
-        rootClass="navbar-switch"
-        checkCheckedClass="navbar-switch__check--checked"
-        checkClass="navbar-switch__check"
-        checkSwitchClass="navbar-switch__check-switch"
-        roundedClass="navbar-switch--rounded"
-        :value="lite"
-        @input="toggleOrugaStyle"
-        labelClass="navbar-switch-label">
-        Default CSS <a href="/documentation/#oruga-default-stylesheet" title="What does it mean?">[?]</a>
-      </o-switch>
-    </div>
-
-    <div
-      class="links"
-      :style="linksWrapMaxWidth ? {
-        'max-width': linksWrapMaxWidth + 'px'
-      } : {}"
-    >
-      <AlgoliaSearchBox
-        v-if="isAlgoliaSearch"
-        :options="algolia"
-      />
-      <SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false" />
-      <NavLinks class="can-hide" />
-    </div>
-  </header>
-</template>
-
-<script>
-import AlgoliaSearchBox from '@AlgoliaSearchBox'
-import SearchBox from '@SearchBox'
-import SidebarButton from '@theme/components/SidebarButton.vue'
-import NavLinks from '@theme/components/NavLinks.vue'
-
-import toggleStyle from './togglestyles.js'
-
-export default {
-  name: 'Navbar',
-
-  components: {
-    SidebarButton,
-    NavLinks,
-    SearchBox,
-    AlgoliaSearchBox
-  },
-
-  data () {
-    return {
-      linksWrapMaxWidth: null,
-      lite: false,
-      showSwitch: process.env.NODE_ENV === 'production'
-    }
-  },
-
-  computed: {
-    algolia () {
-      return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
-    },
-
-    isAlgoliaSearch () {
-      return this.algolia && this.algolia.apiKey && this.algolia.indexName
-    }
-  },
-
-  methods: {
-    toggleOrugaStyle(value, immediate = false) {
-        this.lite = value
-        localStorage.setItem('oruga.io_lite', value)
-        toggleStyle(this.lite, immediate)
-    }
-  },
-
-  mounted () {
-    const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
-    const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight'))
-    const handleLinksWrapWidth = () => {
-      if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
-        this.linksWrapMaxWidth = null
-      } else {
-        this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING
-          - (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0)
-      }
-    }
-    handleLinksWrapWidth()
-    window.addEventListener('resize', handleLinksWrapWidth, false)
-    if (typeof window !== 'undefined') {
-      this.lite = localStorage.getItem('oruga.io_lite') === 'true'
-    }
-  }
-}
-
-function css (el, property) {
-  // NOTE: Known bug, will return 'auto' if style value is 'auto'
-  const win = el.ownerDocument.defaultView
-  // null means not to return pseudo styles
-  return win.getComputedStyle(el, null)[property]
-}
-</script>
-
-<style lang="stylus">
-
-.navbar-switch {
-  cursor: pointer;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-
-  margin-left: -0.25em;
-  margin-right: -0.25em;
-  display: inline-flex;
-  align-items: center;
-  position: relative;
-}
-.navbar-switch--primary .navbar-switch__check--checked {
-  background: #445e00;
-}
-.navbar-switch--primary-passive .navbar-switch__check:not(.navbar-switch__check--checked) {
-  background: #445e00;
-}
-.navbar-switch--danger .navbar-switch__check--checked {
-  background: #b60000;
-}
-.navbar-switch--danger-passive .navbar-switch__check:not(.navbar-switch__check--checked) {
-  background: #b60000;
-}
-.navbar-switch--warning .navbar-switch__check--checked {
-  background: #f4c300;
-}
-.navbar-switch--warning-passive .navbar-switch__check:not(.navbar-switch__check--checked) {
-  background: #f4c300;
-}
-.navbar-switch--success .navbar-switch__check--checked {
-  background: #006724;
-}
-.navbar-switch--success-passive .navbar-switch__check:not(.navbar-switch__check--checked) {
-  background: #006724;
-}
-.navbar-switch--info .navbar-switch__check--checked {
-  background: #005c98;
-}
-.navbar-switch--info-passive .navbar-switch__check:not(.navbar-switch__check--checked) {
-  background: #005c98;
-}
-.navbar-switch--small {
-  font-size: 0.75rem;
-}
-.navbar-switch--medium {
-  font-size: 1.25rem;
-}
-.navbar-switch--large {
-  font-size: 1.5rem;
-}
-.navbar-switch > * {
-  margin-left: 0.25em;
-  margin-right: 0.25em;
-}
-.navbar-switch--left {
-  flex-direction: row-reverse;
-}
-.navbar-switch__check-switch {
-  content: "";
-  display: block;
-  height: calc((2.75em - 0.2em * 2) / 2);
-  width: calc((2.75em - 0.2em * 2) / 2);
-  background: #f5f5f5;
-  box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);
-  transition-property: transform;
-  transition-duration: 150ms;
-  transition-timing-function: ease-out;
-  will-change: transform;
-  transform-origin: left;
-}
-.navbar-switch__check {
-  display: flex;
-  align-items: center;
-  flex-shrink: 0;
-  width: 2.75em;
-  height: calc(2.75em / 2 + 0.2em);
-  padding: 0.2em;
-  background: #b5b5b5;
-  border-radius: 4px;
-  transition-property: background;
-  transition-duration: 150ms;
-  transition-timing-function: ease-out;
-}
-.navbar-switch__check--checked {
-  background: #445e00;
-}
-.navbar-switch__check--checked .navbar-switch__check-switch {
-  transform: translate3d(100%, 0, 0);
-}
-.navbar-switch input[type=checkbox] {
-  position: absolute;
-  left: 0;
-  opacity: 0;
-  outline: none;
-  z-index: -1;
-}
-.navbar-switch--rounded {
-  border-radius: 9999px;
-}
-.navbar-switch--disabled {
-  opacity: 0.5;
-}
-
-
-$navbar-vertical-padding = 0.7rem
-$navbar-horizontal-padding = 1.5rem
-
-.navbar
-  padding $navbar-vertical-padding $navbar-horizontal-padding
-  line-height $navbarHeight - 1.4rem
-  .logo
-    height $navbarHeight - 1.4rem
-    min-width $navbarHeight - 1.4rem
-    margin-right 0.8rem
-    vertical-align top
-  .site-name
-    font-size 1.3rem
-    font-weight 600
-    color $textColor
-    position relative
-  .links
-    padding-left 1.5rem
-    box-sizing border-box
-    background-color white
-    white-space nowrap
-    font-size 0.9rem
-    position absolute
-    right $navbar-horizontal-padding
-    top $navbar-vertical-padding
-    display flex
-    .search-box
-      flex: 0 0 auto
-      vertical-align top
-  .docs-switch-box
-    display inline
-    margin-left 0.8rem
-
-.navbar-switch-label
-    font-weight 500
-
-@media (max-width: $MQMobile)
-  .navbar
-    padding-left 4rem
-    .can-hide
-      display none
-    .links
-      padding-left 1.5rem
-    .site-name
-      width calc(100vw - 9.4rem)
-      overflow hidden
-      white-space nowrap
-      text-overflow ellipsis
-</style>
diff --git a/packages/docs/.vuepress/theme/components/togglestyles.js b/packages/docs/.vuepress/theme/components/togglestyles.js
deleted file mode 100644
index 50c439a55..000000000
--- a/packages/docs/.vuepress/theme/components/togglestyles.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export default (value, immediate = false) => {
-    setTimeout(() => {
-        // switch style
-        if (value) {
-            let style = document.getElementById('orugacss-lite')
-            let styleToRemove = document.getElementById('orugacss')
-            style = document.createElement('link')
-            style.id = 'orugacss-lite'
-            style.type = "text/css"
-            style.rel = "stylesheet"
-            style.href = `${location.origin}/cdn/oruga.min.css`
-            document.head.appendChild(style)
-            setTimeout(() => {
-                if (styleToRemove) document.head.removeChild(styleToRemove)
-            }, 100);
-        } else {
-            let style = document.getElementById('orugacss')
-            let styleToRemove = document.getElementById('orugacss-lite')
-            style = document.createElement('link')
-            style.id = 'orugacss'
-            style.type = "text/css"
-            style.rel = "stylesheet"
-            style.href = `${location.origin}/cdn/oruga-full-vars.min.css`
-            document.head.appendChild(style)
-            setTimeout(() => {
-                if (styleToRemove) document.head.removeChild(styleToRemove)
-            }, 100);
-        }
-    }, immediate ? 0 : 250)
-}
diff --git a/packages/docs/.vuepress/theme/index.js b/packages/docs/.vuepress/theme/index.js
deleted file mode 100644
index 59e3ab039..000000000
--- a/packages/docs/.vuepress/theme/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
-    extend: '@vuepress/theme-default'
-}
diff --git a/packages/docs/README.md b/packages/docs/README.md
deleted file mode 100644
index ee5c4e923..000000000
--- a/packages/docs/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-home: true
-heroImage: logo.png
-heroAlt: oruga
-tagline: Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly
-actionText: (๐Ÿ›) => ๐Ÿฆ‹
-actionLink: /documentation/
-features:
-  - title: CSS framework agnostic
-    details: No dependency on a specific CSS framework/library but you can easily integrate the components with one of them because they are fully customizable in different ways
-  - title: Components with steroids
-    details: Most of the components aren't a simple wrapper of native elements but they add new and custom features
-  - title: Lightweight
-    details: No other internal dependency (except for Vue.js) and import only components that you need
-footer: MIT Licensed - Copyright ยฉ 2020 - Walter Tommasi
----
diff --git a/packages/docs/components/Autocomplete.md b/packages/docs/components/Autocomplete.md
deleted file mode 100644
index fab27732a..000000000
--- a/packages/docs/components/Autocomplete.md
+++ /dev/null
@@ -1,551 +0,0 @@
----
-title: Autocomplete
----
-
-# Autocomplete
-
-> Extended input that provide suggestions while the user types
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/autocomplete/examples/Autocomplete.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p class="content"><b>Selected:</b> {{ selected }}</p>
-    <o-field label="Find a JS framework">
-      <o-autocomplete rounded expanded v-model="name" :data="filteredDataArray" placeholder="e.g. jQuery" icon="search" clearable @select="option => selected = option">
-        <template slot="empty">No results found</template>
-      </o-autocomplete>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: ['Angular', 'Angular 2', 'Aurelia', 'Backbone', 'Ember', 'jQuery', 'Meteor', 'Node.js', 'Polymer', 'React', 'RxJS', 'Vue.js'],
-        name: '',
-        selected: null
-      }
-    },
-    computed: {
-      filteredDataArray() {
-        return this.data.filter(option => {
-          return (
-            option
-              .toString()
-              .toLowerCase()
-              .indexOf(this.name.toLowerCase()) >= 0
-          )
-        })
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Object array
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-switch v-model="openOnFocus">Open dropdown on focus</o-switch>
-      <o-switch v-model="keepFirst">Keep-first</o-switch>
-    </o-field>
-    <p class="content"><b>Selected:</b> {{ selected }}</p>
-    <o-field label="Find a name">
-      <o-autocomplete
-        v-model="name"
-        placeholder="e.g. Anne"
-        :keep-first="keepFirst"
-        :open-on-focus="openOnFocus"
-        :data="filteredDataObj"
-        field="user.first_name"
-        @select="option => selected = option"
-      >
-      </o-autocomplete>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  const data = [
-    { id: 1, user: { first_name: 'Jesse', last_name: 'Simmons' }, date: '2016/10/15 13:43:27', gender: 'Male' },
-    { id: 2, user: { first_name: 'John', last_name: 'Jacobs' }, date: '2016/12/15 06:00:53', gender: 'Male' },
-    { id: 3, user: { first_name: 'Tina', last_name: 'Gilbert' }, date: '2016/04/26 06:26:28', gender: 'Female' },
-    { id: 4, user: { first_name: 'Clarence', last_name: 'Flores' }, date: '2016/04/10 10:28:46', gender: 'Male' },
-    { id: 5, user: { first_name: 'Anne', last_name: 'Lee' }, date: '2016/12/06 14:38:38', gender: 'Female' },
-    { id: 6, user: { first_name: 'Sara', last_name: 'Armstrong' }, date: '2016/09/23 18:50:04', gender: 'Female' },
-    { id: 7, user: { first_name: 'Anthony', last_name: 'Webb' }, date: '2016/08/30 23:49:38', gender: 'Male' },
-    { id: 8, user: { first_name: 'Andrew', last_name: 'Greene' }, date: '2016/11/20 14:57:47', gender: 'Male' },
-    { id: 9, user: { first_name: 'Russell', last_name: 'White' }, date: '2016/07/13 09:29:49', gender: 'Male' },
-    { id: 10, user: { first_name: 'Lori', last_name: 'Hunter' }, date: '2016/12/09 01:44:05', gender: 'Female' },
-    { id: 11, user: { first_name: 'Ronald', last_name: 'Wood' }, date: '2016/12/04 02:23:48', gender: 'Male' },
-    { id: 12, user: { first_name: 'Michael', last_name: 'Harper' }, date: '2016/07/27 13:28:15', gender: 'Male' },
-    { id: 13, user: { first_name: 'George', last_name: 'Dunn' }, date: '2017/03/07 12:26:52', gender: 'Male' },
-    { id: 14, user: { first_name: 'Eric', last_name: 'Rogers' }, date: '2016/06/07 05:41:52', gender: 'Male' },
-    { id: 15, user: { first_name: 'Juan', last_name: 'Meyer' }, date: '2017/02/01 04:56:34', gender: 'Male' },
-    { id: 16, user: { first_name: 'Silvia', last_name: 'Rosa' }, date: '2017/01/26 11:50:04', gender: 'Female' },
-    { id: 17, user: { first_name: 'Lori', last_name: 'Cunningham' }, date: '2016/05/01 10:00:56', gender: 'Female' },
-    { id: 18, user: { first_name: 'Charles', last_name: 'Graham' }, date: '2016/05/31 06:43:30', gender: 'Male' },
-    { id: 19, user: { first_name: 'Henry', last_name: 'Morrison' }, date: '2016/09/27 16:15:44', gender: 'Male' },
-    { id: 20, user: { first_name: 'Albert', last_name: 'Mendoza' }, date: '2016/08/08 05:29:24', gender: 'Male' },
-    { id: 21, user: { first_name: 'Ruby', last_name: 'Snyder' }, date: '2017/04/01 12:04:39', gender: 'Female' },
-    { id: 22, user: { first_name: 'Jesse', last_name: 'Warren' }, date: '2016/08/20 01:36:38', gender: 'Male' },
-    { id: 23, user: { first_name: 'Carlos', last_name: 'Ferguson' }, date: '2016/05/31 10:40:29', gender: 'Male' },
-    { id: 24, user: { first_name: 'Melissa', last_name: 'Peters' }, date: '2016/07/23 00:41:54', gender: 'Female' },
-    { id: 25, user: { first_name: 'Arthur', last_name: 'Garza' }, date: '2017/03/11 14:11:37', gender: 'Male' },
-    { id: 26, user: { first_name: 'Joe', last_name: 'Berry' }, date: '2016/07/09 15:16:56', gender: 'Male' },
-    { id: 27, user: { first_name: 'Joseph', last_name: 'Bishop' }, date: '2016/10/04 19:44:54', gender: 'Male' },
-    { id: 28, user: { first_name: 'Sarah', last_name: 'Harper' }, date: '2016/09/23 05:09:11', gender: 'Female' },
-    { id: 29, user: { first_name: 'Christopher', last_name: 'Fuller' }, date: '2016/04/12 00:05:35', gender: 'Male' },
-    { id: 30, user: { first_name: 'Alan', last_name: 'Mendoza' }, date: '2016/04/22 10:48:02', gender: 'Male' },
-    { id: 31, user: { first_name: 'James', last_name: 'Davis' }, date: '2017/01/16 15:17:03', gender: 'Male' },
-    { id: 32, user: { first_name: 'Scott', last_name: 'Welch' }, date: '2016/10/04 23:31:51', gender: 'Male' },
-    { id: 33, user: { first_name: 'Mildred', last_name: 'Myers' }, date: '2016/11/23 13:46:18', gender: 'Female' },
-    { id: 34, user: { first_name: 'Victor', last_name: 'Martinez' }, date: '2016/04/06 17:05:07', gender: 'Male' },
-    { id: 35, user: { first_name: 'Susan', last_name: 'Medina' }, date: '2016/12/09 10:33:37', gender: 'Female' },
-    { id: 36, user: { first_name: 'Judy', last_name: 'Long' }, date: '2016/07/26 16:19:04', gender: 'Female' },
-    { id: 37, user: { first_name: 'Joan', last_name: 'Myers' }, date: '2016/09/22 04:55:54', gender: 'Female' },
-    { id: 38, user: { first_name: 'Rachel', last_name: 'Gonzales' }, date: '2016/07/15 13:56:38', gender: 'Female' },
-    { id: 39, user: { first_name: 'Roger', last_name: 'Hunt' }, date: '2016/08/14 10:43:11', gender: 'Male' },
-    { id: 40, user: { first_name: 'Dorothy', last_name: 'Howard' }, date: '2016/06/19 05:34:49', gender: 'Female' },
-    { id: 41, user: { first_name: 'Eugene', last_name: 'Lynch' }, date: '2016/12/24 08:19:24', gender: 'Male' },
-    { id: 42, user: { first_name: 'Kathy', last_name: 'Webb' }, date: '2017/04/01 21:09:05', gender: 'Female' },
-    { id: 43, user: { first_name: 'Antonio', last_name: 'White' }, date: '2017/02/10 06:51:20', gender: 'Male' },
-    { id: 44, user: { first_name: 'Louis', last_name: 'Spencer' }, date: '2016/10/08 02:20:22', gender: 'Male' },
-    { id: 45, user: { first_name: 'Andrea', last_name: 'Marshall' }, date: '2016/09/04 10:59:57', gender: 'Female' },
-    { id: 46, user: { first_name: 'Eugene', last_name: 'Sims' }, date: '2017/03/15 06:39:48', gender: 'Male' },
-    { id: 47, user: { first_name: 'Mildred', last_name: 'Gibson' }, date: '2016/04/18 06:43:54', gender: 'Female' },
-    { id: 48, user: { first_name: 'Joan', last_name: 'Arnold' }, date: '2016/12/16 04:52:23', gender: 'Female' },
-    { id: 49, user: { first_name: 'Jesse', last_name: 'Schmidt' }, date: '2016/06/11 02:44:33', gender: 'Male' },
-    { id: 50, user: { first_name: 'David', last_name: 'Frazier' }, date: '2017/02/15 21:46:30', gender: 'Male' },
-    { id: 51, user: { first_name: 'Nicholas', last_name: 'Howell' }, date: '2016/11/01 15:08:31', gender: 'Male' },
-    { id: 52, user: { first_name: 'Douglas', last_name: 'Chapman' }, date: '2017/02/08 03:33:24', gender: 'Male' },
-    { id: 53, user: { first_name: 'Bruce', last_name: 'Simmons' }, date: '2016/07/14 12:11:17', gender: 'Male' },
-    { id: 54, user: { first_name: 'Antonio', last_name: 'George' }, date: '2016/11/07 19:12:55', gender: 'Male' },
-    { id: 55, user: { first_name: 'Chris', last_name: 'Marshall' }, date: '2016/07/03 12:11:45', gender: 'Male' },
-    { id: 56, user: { first_name: 'Ashley', last_name: 'Hudson' }, date: '2016/10/14 21:08:05', gender: 'Female' },
-    { id: 57, user: { first_name: 'Alan', last_name: 'Edwards' }, date: '2017/03/22 21:10:25', gender: 'Male' },
-    { id: 58, user: { first_name: 'George', last_name: 'Clark' }, date: '2016/04/28 03:15:05', gender: 'Male' },
-    { id: 59, user: { first_name: 'Frank', last_name: 'Porter' }, date: '2016/09/08 00:48:14', gender: 'Male' },
-    { id: 60, user: { first_name: 'Christopher', last_name: 'Palmer' }, date: '2016/05/24 08:58:12', gender: 'Male' }
-  ]
-
-  export default {
-    data() {
-      return {
-        data,
-        keepFirst: false,
-        openOnFocus: false,
-        name: '',
-        selected: null
-      }
-    },
-    computed: {
-      filteredDataObj() {
-        return this.data.filter(option => {
-          return (
-            option.user.first_name
-              .toString()
-              .toLowerCase()
-              .indexOf(this.name.toLowerCase()) >= 0
-          )
-        })
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Groups
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p class="content"><b>Selected:</b> {{ selected }}</p>
-    <o-field label="Find a food">
-      <o-autocomplete v-model="name" group-field="type" group-options="items" open-on-focus :data="filteredDataObj" field="user.first_name" @select="option => (selected = option)">
-      </o-autocomplete>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            type: 'Fruit',
-            items: ['Apple', 'Banana', 'Watermelon']
-          },
-          {
-            type: 'Vegetables',
-            items: ['Carrot', 'Broccoli', 'Cucumber', 'Onion']
-          }
-        ],
-        name: '',
-        selected: null
-      }
-    },
-    computed: {
-      filteredDataObj() {
-        const newData = []
-        this.data.forEach(element => {
-          const items = element.items.filter(item => item.toLowerCase().indexOf(this.name.toLowerCase()) >= 0)
-          if (items.length) {
-            newData.push({ type: element.type, items })
-          }
-        })
-        return newData
-      }
-    }
-  }
-</script>
-98
-```
-
-:::
-
-### Infinite Scroll
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p class="content"><b>Selected:</b> {{ selected }}</p>
-    <o-field label="Find a movie">
-      <o-autocomplete
-        :data="data"
-        placeholder="e.g. Fight Club"
-        field="title"
-        :loading="isFetching"
-        check-infinite-scroll
-        :debounce-typing="500"
-        @typing="getAsyncData"
-        @select="option => selected = option"
-        @infinite-scroll="getMoreAsyncData"
-      >
-        <template slot-scope="props">
-          <div class="media">
-            <div class="media-left">
-              <img width="32" :src="`https://image.tmdb.org/t/p/w500/${props.option.poster_path}`" />
-            </div>
-            <div class="media-content">
-              {{ props.option.title }}
-              <br />
-              <small> Released at {{ props.option.release_date }}, rated <b>{{ props.option.vote_average }}</b> </small>
-            </div>
-          </div>
-        </template>
-        <template slot="footer">
-          <span v-show="page > totalPages" class="has-text-grey"> Thats it! No more movies found. </span>
-        </template>
-      </o-autocomplete>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [],
-        selected: null,
-        isFetching: false,
-        name: '',
-        page: 1,
-        totalPages: 1
-      }
-    },
-    methods: {
-      getAsyncData(name) {
-        // String update
-        if (this.name !== name) {
-          this.name = name
-          this.data = []
-          this.page = 1
-          this.totalPages = 1
-        }
-        // String cleared
-        if (!name.length) {
-          this.data = []
-          this.page = 1
-          this.totalPages = 1
-          return
-        }
-        // Reached last page
-        if (this.page > this.totalPages) {
-          return
-        }
-        this.isFetching = true
-        fetch(`https://api.themoviedb.org/3/search/movie?api_key=bb6f51bef07465653c3e553d6ab161a8&query=${name}&page=${this.page}`)
-          .then(response => response.json())
-          .then(data => {
-            data.results.forEach(item => this.data.push(item))
-
-            this.page++
-            this.totalPages = data.total_pages
-          })
-          .catch(error => {
-            throw error
-          })
-          .finally(() => {
-            this.isFetching = false
-          })
-      },
-      getMoreAsyncData() {
-        this.getAsyncData(this.name)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_autocomplete.scss)
-
-<br />
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-      <o-autocomplete v-bind="s" group-field="type" group-options="items" placeholder="e.g. Vue.js" :data="filtered" icon="search" clearable @select="option => selected = option">
-        <template slot="empty">No results found</template>
-        <template slot="header">Header slot (optional)</template>
-        <template slot="footer">Footer slot (optional)</template>
-      </o-autocomplete>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            filtered: [
-                {
-                    type: 'Frameworks',
-                    items: ['Vue.js']
-                }
-            ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "menuClass",
-                    description: "Class of the autocomplete menu",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of the autocomplete menu expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "menuPositionClass",
-                    description: "Class of the autocomplete menu position",
-                    properties: ["menu-position"],
-                    suffixes: ["auto", "top", "bottom"],
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the menu items.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemHoverClass",
-                    description: "Class of the menu items on hover.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                        setTimeout(() => {
-                            el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                            el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                        }, 500);
-                    },
-                },
-                {
-                    class: "itemGroupTitleClass",
-                    description: "Class of the menu items group title.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemEmptyClass",
-                    description: "Class of the menu empty placeholder item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "|", char : "|", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the menu header item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemFooterClass",
-                    description: "Class of the menu footer item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-            ],
-        };
-    }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name            | Description                                                                                                                                            | Type           | Values                                            | Default                                                                                                                                       |
-| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-| animation            | Transition name to apply on dropdown list                                                                                                              | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br>&nbsp;&nbsp;animation: 'fade'<br>}</code> |
-| appendToBody         | Append autocomplete content to body                                                                                                                    | boolean        | -                                                 |                                                                                                                                               |
-| autocomplete         | Native options to use in HTML5 validation                                                                                                              | string         | -                                                 |                                                                                                                                               |
-| checkInfiniteScroll  | Makes the component check if list reached scroll end and emit infinite-scroll event.                                                                   | boolean        | -                                                 |                                                                                                                                               |
-| clearOnSelect        | Clear input text on select                                                                                                                             | boolean        | -                                                 |                                                                                                                                               |
-| clearable            | Add a button/icon to clear the inputed text                                                                                                            | boolean        | -                                                 |                                                                                                                                               |
-| clearIcon          | Icon name to be added on the clear button                   | string         | -                                  | 'close-circle'                             |
-| confirmKeys          | Array of keys (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) which will add a tag when typing (default tab and enter) | array          | -                                                 | ['Tab', 'Enter']                                                                                                                              |
-| customFormatter      | Function to format an option to a string for display in the input as alternative to field prop)                                                        | func           | -                                                 |                                                                                                                                               |
-| data                 | Options / suggestions                                                                                                                                  | array          | -                                                 | []                                                                                                                                            |
-| debounceTyping       | Number of milliseconds to delay before to emit typing event                                                                                            | number         | -                                                 |                                                                                                                                               |
-| expanded             | Makes input full width when inside a grouped or addon field                                                                                            | boolean        | -                                                 |                                                                                                                                               |
-| field                | Property of the object (if data is array of objects) to use as display text, and to keep track of selected option                                      | string         | -                                                 | 'value'                                                                                                                                       |
-| groupField           | Property of the object (if <code>data</code> is array of objects) to use as display text of group                                                      | string         | -                                                 |                                                                                                                                               |
-| groupOptions         | Property of the object (if <code>data</code> is array of objects) to use as key to get items array of each group, optional                             | string         | -                                                 |                                                                                                                                               |
-| icon                 | Icon name to be added                                                                                                                                  | string         | -                                                 |                                                                                                                                               |
-| iconPack             | Icon pack to use                                                                                                                                       | string         | `mdi`, `fa`, `fas and any other custom icon pack` |                                                                                                                                               |
-| iconRight            | Icon name to be added on the right side                                                                                                                | string         | -                                                 |                                                                                                                                               |
-| iconRightClickable   | Clickable icon right if exists                                                                                                                         | boolean        | -                                                 |                                                                                                                                               |
-| itemTag              | Menu item tag name                                                                                                                                     | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br>&nbsp;&nbsp;itemTag: 'div'<br>}</code>    |
-| keepFirst            | The first option will always be pre-selected (easier to just hit enter or tab)                                                                         | boolean        | -                                                 |                                                                                                                                               |
-| keepOpen             | Keep open dropdown list after select                                                                                                                   | boolean        | -                                                 |                                                                                                                                               |
-| maxHeight            | Max height of dropdown content                                                                                                                         | string\|number | -                                                 |                                                                                                                                               |
-| maxlength            | Same as native maxlength, plus character counter                                                                                                       | number\|string | -                                                 |                                                                                                                                               |
-| menuPosition         | Position of dropdown                                                                                                                                   | string         | `auto`, `top`, `bottom`                           | 'auto'                                                                                                                                        |
-| menuTag              | Menu tag name                                                                                                                                          | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br>&nbsp;&nbsp;menuTag: 'div'<br>}</code>    |
-| openOnFocus          | Open dropdown list on focus                                                                                                                            | boolean        | -                                                 |                                                                                                                                               |
-| override             | Override classes                                                                                                                                       | boolean        | -                                                 | false                                                                                                                                         |
-| rounded              | Makes the element rounded                                                                                                                              | boolean        | -                                                 |                                                                                                                                               |
-| selectOnClickOutside | Trigger the select event for the first pre-selected option when clicking outside and <code>keep-first</code> is enabled                                | boolean        | -                                                 |                                                                                                                                               |
-| selectableFooter     | Allows the footer in the autocomplete to be selectable                                                                                                 | boolean        | -                                                 |                                                                                                                                               |
-| selectableHeader     | Allows the header in the autocomplete to be selectable                                                                                                 | boolean        | -                                                 |                                                                                                                                               |
-| size                 | Vertical size of input, optional                                                                                                                       | string         | `small`, `medium`, `large`                        |                                                                                                                                               |
-| statusIcon           | Show status icon using field and variant prop                                                                                                          | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>              |
-| type                 | Input type                                                                                                                                             | string         | -                                                 | 'text'                                                                                                                                        |
-| useHtml5Validation   | Enable html 5 native validation                                                                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code>      |
-| v-model              |                                                                                                                                                        | number\|string | -                                                 |                                                                                                                                               |
-| validationMessage    | The message which is shown when a validation error occurs                                                                                              | string         | -                                                 |                                                                                                                                               |
-
-## Events
-
-| Event name       | Properties                                                                  | Description |
-| ---------------- | --------------------------------------------------------------------------- | ----------- |
-| icon-click       |                                                                             |
-| blur             |                                                                             |
-| focus            |                                                                             |
-| invalid          |                                                                             |
-| input            |                                                                             |
-| select           | **selected** `Object` - selected option<br>**event** `Event` - native event |
-| select-header    |                                                                             |
-| select-footer    |                                                                             |
-| infinite-scroll  |                                                                             |
-| typing           |                                                                             |
-| icon-right-click |                                                                             |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| header  |             |          |
-| group   |             | <br>     |
-| default |             | <br>     |
-| empty   |             |          |
-| footer  |             |          |
-
-## Style
-
-| CSS Variable                                     | SASS Variable                              | Default                                                              |
-| ------------------------------------------------ | ------------------------------------------ | -------------------------------------------------------------------- |
-| --oruga-autocomplete-item-color                  | \$autocomplete-item-color                  | #000000                                                              |
-| --oruga-autocomplete-item-disabled-opacity       | \$autocomplete-item-disabled-opacity       | \$base-disabled-opacity                                              |
-| --oruga-autocomplete-item-font-size              | \$autocomplete-item-font-size              | \$base-font-size                                                     |
-| --oruga-autocomplete-item-hover-background-color | \$autocomplete-item-hover-background-color | #f5f5f5                                                              |
-| --oruga-autocomplete-item-hover-color            | \$autocomplete-item-hover-color            | #000000                                                              |
-| --oruga-autocomplete-item-line-height            | \$autocomplete-item-line-height            | \$base-line-height                                                   |
-| --oruga-autocomplete-item-padding                | \$autocomplete-item-padding                | .375rem 1rem                                                         |
-| --oruga-autocomplete-menu-background             | \$autocomplete-menu-background             | #ffffff                                                              |
-| --oruga-autocomplete-menu-border-radius          | \$autocomplete-menu-border-radius          | \$base-border-radius                                                 |
-| --oruga-autocomplete-menu-box-shadow             | \$autocomplete-menu-box-shadow             | 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) |
-| --oruga-autocomplete-menu-margin                 | \$autocomplete-menu-margin                 | 0                                                                    |
-| --oruga-autocomplete-menu-max-height             | \$autocomplete-menu-max-height             | 200px                                                                |
-| --oruga-autocomplete-menu-padding                | \$autocomplete-menu-padding                | .5rem 0 .5rem 0                                                      |
-| --oruga-autocomplete-menu-zindex                 | \$autocomplete-menu-zindex                 | 20                                                                   |
diff --git a/packages/docs/components/Button.md b/packages/docs/components/Button.md
deleted file mode 100644
index e1e6713ad..000000000
--- a/packages/docs/components/Button.md
+++ /dev/null
@@ -1,341 +0,0 @@
----
-title: Button
----
-
-# Button
-
-> The classic button, in different colors, sizes, and states
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/button/examples/Button.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-button @click="clickMe">Click Me</o-button>
-  </section>
-</template>
-
-<script>
-  export default {
-    methods: {
-      clickMe() {
-        alert('Clicked!')
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### States and Styles
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button variant="primary">Primary</o-button>
-      <o-button variant="success">Success</o-button>
-      <o-button variant="danger">Danger</o-button>
-      <o-button variant="warning">Warning</o-button>
-      <o-button variant="info">Info</o-button>
-    </div>
-
-    <div class="buttons">
-      <o-button>Normal</o-button>
-      <o-button disabled>Disabled</o-button>
-      <o-button rounded>Rounded</o-button>
-    </div>
-
-    <div class="buttons">
-      <o-button variant="primary" outlined>Outlined</o-button>
-      <o-button variant="primary" inverted>Inverted</o-button>
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Icons
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button size="small" icon-left="plus">
-        Add
-      </o-button>
-
-      <o-button icon-left="plus">
-        Add
-      </o-button>
-
-      <o-button size="medium" icon-left="plus">
-        Add
-      </o-button>
-
-      <o-button size="large" icon-left="plus">
-        Add
-      </o-button>
-    </div>
-
-    <br />
-
-    <div class="buttons">
-      <o-button variant="danger" icon-left="trash">
-        Delete
-      </o-button>
-
-      <o-button variant="danger" icon-right="trash">
-        Delete
-      </o-button>
-
-      <o-button variant="danger" icon-right="trash" />
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Tags
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button>Button</o-button>
-
-      <o-button tag="a" href="https://oruga.io" target="_blank">
-        Anchor
-      </o-button>
-
-      <o-button tag="input" native-type="submit" value="Submit input" />
-
-      <!-- Need vue-router -->
-      <!-- 
-            <o-button tag="router-link"
-                to="/home"
-                variant="info">
-                Docs
-            </o-button>
-            -->
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_button.scss)
-
-<br />
-<template>
-  <div>
-    <doc-wrapper>
-      <template v-slot:default="s">
-      <o-button v-bind="s">Button</o-button>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "outlinedClass",
-                    description: "Class of the button outlined",
-                    properties: ["outlined"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'primary';
-                        cmp.data.outlined = true;
-                    },
-                },
-                {
-                    class: "loadingClass",
-                    description: "Class of the button loading",
-                    properties: ["loading"],
-                    action: (cmp) => {
-                        cmp.data.loading = true;
-                    },
-                },
-                {
-                    class: "invertedClass",
-                    description: "Class of the button when inverted",
-                    properties: ["inverted"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'primary';
-                        cmp.data.inverted = true;
-                    },
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of the button when expanded",
-                    properties: ["expanded"],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "elementsWrapperClass",
-                    description: "Class of the button elements wrapper",
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the button when rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    },
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class of the button when disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    },
-                },
-                {
-                    class: "labelClass",
-                    description: "Class of the button label"
-                },
-                {
-                    class: "iconClass",
-                    description: "Class of the button icon",
-                    properties: ["iconLeft", "iconRight"],
-                    action: (cmp) => {
-                        cmp.data['icon-left'] = "plus"
-                    },
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the button icon on the left",
-                    properties: ["iconLeft"],
-                    action: (cmp) => {
-                        cmp.data['icon-left'] = "plus"
-                    },
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the button icon on the right",
-                    properties: ["iconRight"],
-                    action: (cmp) => {
-                        cmp.data['icon-right'] = "plus"
-                    },
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the button size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    },
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the button variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-            ],
-        };
-    }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name  | Description                              | Type    | Values                                                                          | Default                                                                                                                              |
-| ---------- | ---------------------------------------- | ------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
-| disabled   | Button will be disabled                  | boolean | -                                                                               |                                                                                                                                      |
-| expanded   | Button will be expanded (full-width)     | boolean | -                                                                               |                                                                                                                                      |
-| iconLeft   | Icon name to show on the left            | string  | -                                                                               |                                                                                                                                      |
-| iconPack   | Icon pack to use                         | string  | `mdi`, `fa`, `fas and any other custom icon pack`                               |                                                                                                                                      |
-| iconRight  | Icon name to show on the right           | string  | -                                                                               |                                                                                                                                      |
-| inverted   |                                          | boolean | -                                                                               |                                                                                                                                      |
-| label      | Button label, optional when default slot | string  | -                                                                               |                                                                                                                                      |
-| loading    | Loading style                            | boolean | -                                                                               |                                                                                                                                      |
-| nativeType | Button type, like native                 | string  | -                                                                               | 'button'                                                                                                                             |
-| outlined   | Outlined style                           | boolean | -                                                                               |                                                                                                                                      |
-| override   | Override classes                         | boolean | -                                                                               | false                                                                                                                                |
-| rounded    | Rounded style                            | boolean | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> button: {<br>&nbsp;&nbsp;rounded: false<br>}</code> |
-| size       | Size of button, optional                 | string  | `small`, `medium`, `large`                                                      |                                                                                                                                      |
-| tag        | Button tag name                          | string  | `button`, `a`, `input`, `router-link`, `nuxt-link (or other nuxt alias)`        | 'button'                                                                                                                             |
-| variant    | Color of the control, optional           | string  | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                      |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                             | SASS Variable                      | Default                             |
-| ---------------------------------------- | ---------------------------------- | ----------------------------------- |
-| --oruga-button-background-color          | \$button-background-color          | \$primary                           |
-| --oruga-button-color                     | \$button-color                     | \$primary-invert                    |
-| --oruga-button-border-radius             | \$button-border-radius             | \$base-border-radius                |
-| --oruga-button-border                    | \$button-border                    | 1px solid \$button-background-color |
-| --oruga-button-box-shadow                | \$button-box-shadow                | none                                |
-| --oruga-button-font-weight               | \$button-font-weight               | 400                                 |
-| --oruga-button-line-height               | \$button-line-height               | \$base-line-height                  |
-| --oruga-button-margin-icon-to-text       | \$button-margin-icon-to-text       | .1875em                             |
-| --oruga-button-margin                    | \$button-margin                    | 0                                   |
-| --oruga-button-height                    | \$button-height                    | \$control-height                    |
-| --oruga-button-padding                   | \$button-padding                   | \$control-padding-vertical .75em    |
-| --oruga-button-rounded-border-radius     | \$button-rounded-border-radius     | \$base-rounded-border-radius        |
-| --oruga-button-disabled-opacity          | \$button-disabled-opacity          | \$base-disabled-opacity             |
-| --oruga-button-outlined-background-color | \$button-outlined-background-color | transparent                         |
diff --git a/packages/docs/components/Carousel.md b/packages/docs/components/Carousel.md
deleted file mode 100644
index 139306874..000000000
--- a/packages/docs/components/Carousel.md
+++ /dev/null
@@ -1,530 +0,0 @@
----
-title: Carousel
----
-
-# Carousel
-
-> A Slideshow for cycling images in confined spaces
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/carousel/examples/Carousel.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <o-carousel>
-    <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-      <section class="ex-slide" :style="{'background-color': carousel.color }">
-        <h1>{{carousel.text}}</h1>
-      </section>
-    </o-carousel-item>
-  </o-carousel>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        carousels: [
-          { text: 'Slide 1', color: '#445e00' },
-          { text: 'Slide 2', color: '#006724' },
-          { text: 'Slide 3', color: '#b60000' },
-          { text: 'Slide 4', color: '#f4c300' },
-          { text: 'Slide 5', color: '#005c98' }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-<style>
-.ex-slide {
-    padding: 9rem 4.5rem;
-    color: #ffffff;
-    text-align: center;
-}
-</style>
-
-### Carousel List
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="example-component">
-      <o-field grouped group-multiline>
-        <div class="control">
-          <o-switch v-model="arrow">Arrow</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="arrowHover" :disabled="!arrow">Arrow on hover</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="drag">Drag event</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="repeat">Repeat</o-switch>
-        </div>
-      </o-field>
-      <o-field grouped group-multiline>
-        <o-field label="Items to Show">
-          <o-input type="number" v-model.number="perList" min="1" :max="items.length" />
-        </o-field>
-        <o-field label="Items to List">
-          <o-input type="number" v-model.number="increment" min="1" :max="items.length - 1" />
-        </o-field>
-      </o-field>
-    </div>
-    <o-carousel v-model="values" :arrow="arrow" :arrow-hover="arrowHover" :items-to-show="perList" :items-to-list="increment" :repeat="repeat" :has-drag="drag">
-      <o-carousel-item v-for="(item, i) in items" :key="i">
-        <img :src="item.image" />
-      </o-carousel-item>
-    </o-carousel>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        arrow: true,
-        arrowHover: true,
-        drag: true,
-        values: 1,
-        perList: 4,
-        increment: 1,
-        repeat: false,
-        items: [
-          {
-            title: 'Slide 1',
-            image: 'https://picsum.photos/id/1/1230/500'
-          },
-          {
-            title: 'Slide 2',
-            image: 'https://picsum.photos/id/2/1230/500'
-          },
-          {
-            title: 'Slide 3',
-            image: 'https://picsum.photos/id/3/1230/500'
-          },
-          {
-            title: 'Slide 4',
-            image: 'https://picsum.photos/id/4/1230/500'
-          },
-          {
-            title: 'Slide 5',
-            image: 'https://picsum.photos/id/5/1230/500'
-          },
-          {
-            title: 'Slide 6',
-            image: 'https://picsum.photos/id/6/1230/500'
-          },
-          {
-            title: 'Slide 7',
-            image: 'https://picsum.photos/id/7/1230/500'
-          }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Custom As indicators
-
-::: demo
-
-```html
-<template>
-  <o-carousel :autoplay="false" :overlay="gallery" @click="switchGallery(true)">
-    <o-carousel-item v-for="(item, i) in items" :key="i">
-      <a class="image">
-        <img :src="item.image" />
-      </a>
-    </o-carousel-item>
-
-    <template #indicators="{ active, switchTo }">
-      <o-carousel :value="active" @input="switchTo($event)" v-bind="al" as-indicator>
-        <o-carousel-item v-for="(item, i) in items" :key="i" item-class="img-indicator" item-active-class="img-indicator-active">
-          <img :src="item.image" />
-        </o-carousel-item>
-      </o-carousel>
-    </template>
-    <template #overlay>
-      <o-icon v-if="gallery" icon="times" root-class="ex-close-icon" clickable @click.native="switchGallery(false)" />
-      <div style="color: #ffffff; text-align: center">
-        Hello, I'm an overlay!
-      </div>
-    </template>
-  </o-carousel>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        gallery: false,
-        al: {
-          itemsToShow: 2,
-          breakpoints: {
-            768: {
-              itemsToShow: 4
-            },
-            960: {
-              itemsToShow: 6
-            }
-          }
-        },
-        items: [
-          {
-            title: 'Slide 1',
-            image: 'https://picsum.photos/id/1/1230/500'
-          },
-          {
-            title: 'Slide 2',
-            image: 'https://picsum.photos/id/2/1230/500'
-          },
-          {
-            title: 'Slide 3',
-            image: 'https://picsum.photos/id/3/1230/500'
-          },
-          {
-            title: 'Slide 4',
-            image: 'https://picsum.photos/id/4/1230/500'
-          },
-          {
-            title: 'Slide 5',
-            image: 'https://picsum.photos/id/5/1230/500'
-          },
-          {
-            title: 'Slide 6',
-            image: 'https://picsum.photos/id/6/1230/500'
-          },
-          {
-            title: 'Slide 7',
-            image: 'https://picsum.photos/id/7/1230/500'
-          }
-        ]
-      }
-    },
-    methods: {
-      switchGallery(value) {
-        this.gallery = value
-        if (value) {
-          document.documentElement.classList.add('o-clipped')
-        } else {
-          document.documentElement.classList.remove('o-clipped')
-        }
-      }
-    }
-  }
-</script>
-
-<style>
-  .image img {
-    display: block;
-    height: auto;
-    width: 100%;
-  }
-  .img-indicator {
-    filter: grayscale(100%);
-  }
-  .img-indicator-active {
-    filter: grayscale(0%);
-  }
-  .ex-close-icon {
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    color: #ffffff;
-    z-index: 99;
-  }
-</style>
-```
-
-:::
-
-### Custom
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="example-component">
-      <o-field grouped group-multiline>
-        <div class="control">
-          <o-switch v-model="autoPlay">Autoplay</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="pauseHover" :disabled="!autoPlay">Pause on hover</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="drag">Drag event</o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="repeat" :disabled="!autoPlay">Repeat</o-switch>
-        </div>
-      </o-field>
-      <o-field grouped group-multiline>
-        <o-field label="Value">
-          <o-input type="number" v-model.number="carousel" min="0" :max="carousels.length - 1" />
-        </o-field>
-        <o-field label="Interval">
-          <o-input type="number" v-model.number="interval" min="0" step="1000" :disabled="!autoPlay" />
-        </o-field>
-      </o-field>
-    </div>
-
-    <o-carousel v-model="carousel" :has-drag="drag" :autoplay="autoPlay" :pause-hover="pauseHover" :interval="interval" :repeat="repeat">
-      <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-        <section class="ex-slide" :style="{'background-color': carousel.color }">
-          <h1>{{carousel.title}}</h1>
-          <o-input :placeholder="carousel.title"></o-input>
-          <p>A link that <a href="#arrow">goes to arrow</a></p>
-        </section>
-      </o-carousel-item>
-    </o-carousel>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        carousel: 0,
-        animated: 'slide',
-        drag: false,
-        autoPlay: false,
-        pauseHover: false,
-        pauseInfo: false,
-        repeat: false,
-        interval: 3000,
-        carousels: [
-          { text: 'Slide 1', color: '#445e00' },
-          { text: 'Slide 2', color: '#006724' },
-          { text: 'Slide 3', color: '#b60000' },
-          { text: 'Slide 4', color: '#f4c300' },
-          { text: 'Slide 5', color: '#005c98' }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_carousel.scss)
-
-<br />
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-carousel v-bind="s">
-            <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-                <section class="ex-slide" :style="{'background-color': carousel.color }">
-                    <h1>{{carousel.text}}</h1>
-                </section>
-            </o-carousel-item>
-        </o-carousel>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            carousels: [
-                { text: 'Slide 1', color: '#445e00' },
-                { text: 'Slide 2', color: '#006724' },
-                { text: 'Slide 3', color: '#b60000' },
-                { text: 'Slide 4', color: '#f4c300' },
-                { text: 'Slide 5', color: '#005c98' }
-            ],
-            subitem: 'carousel-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "overlayClass",
-                    properties: ['overlay'],
-                    description: "Class of the root element in overlay",
-                    action: (cmp) => {
-                        cmp.data.overlay = true;
-                    },
-                },
-                {
-                    class: "sceneClass",
-                    description: "Class of the wrapper element of carousel items",
-                },
-                {
-                    class: "itemsClass",
-                    description: "Class of slider element",
-                },
-                {
-                    class: "itemsDraggingClass",
-                    description: "Class of slider element on drag",
-                },
-                {
-                    class: "arrowIconClass",
-                    description: "Class of arrow elements",
-                },
-                {
-                    class: "arrowIconPrevClass",
-                    description: "Class of prev arrow element",
-                },
-                {
-                    class: "arrowIconNextClass",
-                    description: "Class of next arrow element",
-                },
-                {
-                    class: "indicatorsClass",
-                    description: "Class of indicators element",
-                },
-                {
-                    class: "indicatorsInsideClass",
-                    properties: ['indicatorInside'],
-                    description: "Class of indicators element when inside",
-                    action: (cmp) => {
-                        cmp.data.indicatorInside = true;
-                    }
-                },
-                {
-                    class: "indicatorsInsidePositionClass",
-                    properties: ['indicatorInside', 'indicatorPosition'],
-                    description: "Class of indicators element when inside and position",
-                    action: (cmp) => {
-                        cmp.data.indicatorInside = true;
-                        cmp.data.indicatorPosition = 'top';
-                    }
-                },
-                {
-                    class: "indicatorItemClass",
-                    description: "Class of indicator item element",
-                },
-                {
-                    class: "indicatorItemActiveClass",
-                    description: "Class of indicator element when is active",
-                },
-                {
-                    class: "indicatorItemStyleClass",
-                    properties: ['indicatorStyle'],
-                    description: "Class of indicator element to separate different styles",
-                    action: (cmp) => {
-                        cmp.data.indicatorStyle = 'lines';
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of carousel item",
-                },
-                {
-                    class: "itemActiveClass",
-                    description: "Class of carousel item when is active",
-                },
-            ],
-        };
-    }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name         | Description      | Type    | Values | Default                                                                                                                                           |
-| ----------------- | ---------------- | ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| arrow             |                  | boolean | -      | true                                                                                                                                              |
-| arrowHover        |                  | boolean | -      | true                                                                                                                                              |
-| asIndicator       |                  | boolean | -      |                                                                                                                                                   |
-| autoplay          |                  | boolean | -      | false                                                                                                                                             |
-| breakpoints       |                  | object  | -      | {}                                                                                                                                                |
-| hasDrag           |                  | boolean | -      | true                                                                                                                                              |
-| iconNext          |                  | string  | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br>&nbsp;&nbsp;iconNext: 'chevron-right'<br>}</code> |
-| iconPack          |                  | string  | -      |                                                                                                                                                   |
-| iconPrev          |                  | string  | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br>&nbsp;&nbsp;iconPrev: 'chevron-left'<br>}</code>  |
-| iconSize          |                  | string  | -      |                                                                                                                                                   |
-| indicator         |                  | boolean | -      | true                                                                                                                                              |
-| indicatorInside   |                  | boolean | -      | false                                                                                                                                             |
-| indicatorMode     |                  | string  | -      | 'click'                                                                                                                                           |
-| indicatorPosition |                  | string  | -      | 'bottom'                                                                                                                                          |
-| indicatorStyle    |                  | string  | -      | 'dots'                                                                                                                                            |
-| interval          |                  | number  | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br>&nbsp;&nbsp;interval: 3500<br>}</code>            |
-| itemsToList       |                  | number  | -      | 1                                                                                                                                                 |
-| itemsToShow       |                  | number  | -      | 1                                                                                                                                                 |
-| overlay           |                  | boolean | -      |                                                                                                                                                   |
-| override          | Override classes | boolean | -      | false                                                                                                                                             |
-| pauseHover        |                  | boolean | -      | false                                                                                                                                             |
-| repeat            |                  | boolean | -      | false                                                                                                                                             |
-| value             |                  | number  | -      | 0                                                                                                                                                 |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| scroll     |            |
-| input      |            |
-
-## Slots
-
-| Name       | Description | Bindings     |
-| ---------- | ----------- | ------------ |
-| default    |             |              |
-| arrow      |             | <br><br><br> |
-| indicators |             | <br><br>     |
-| indicator  |             |              |
-| overlay    |             |              |
-
-## Style
-
-| CSS Variable                                  | SASS Variable                           | Default                               |
-| --------------------------------------------- | --------------------------------------- | ------------------------------------- |
-| --oruga-carousel-arrow-background             | \$carousel-arrow-background             | \$white                               |
-| --oruga-carousel-arrow-color                  | \$carousel-arrow-color                  | \$primary                             |
-| --oruga-carousel-arrow-icon-spaced            | \$carousel-arrow-icon-spaced            | 1.5rem                                |
-| --oruga-carousel-arrow-top                    | \$carousel-arrow-top                    | 50%                                   |
-| --oruga-carousel-arrow-size                   | \$carousel-arrow-size                   | 1.5rem                                |
-| --oruga-carousel-arrow-border-radius          | \$carousel-arrow-border-radius          | \$base-rounded-border-radius          |
-| --oruga-carousel-arrow-border                 | \$carousel-arrow-border                 | 1px solid \$carousel-arrow-background |
-| --oruga-carousel-arrow-transition             | \$carousel-arrow-transition             | $speed-slow $easing                   |
-| --oruga-carousel-indicators-background        | \$carousel-indicators-background        | rgba(\$white , 0.50)                  |
-| --oruga-carousel-indicators-padding           | \$carousel-indicators-padding           | .5rem                                 |
-| --oruga-carousel-indicator-margin             | \$carousel-indicator-margin             | 0 .5rem 0 0                           |
-| --oruga-carousel-indicator-color              | \$carousel-indicator-color              | \$primary                             |
-| --oruga-carousel-indicator-background         | \$carousel-indicator-background         | \$white                               |
-| --oruga-carousel-indicator-border             | \$carousel-indicator-border             | 1px solid \$carousel-indicator-color  |
-| --oruga-carousel-indicator-active-background  | \$carousel-indicator-active-background  | \$carousel-indicator-color            |
-| --oruga-carousel-indicator-active-border      | \$carousel-indicator-active-border      | 1px solid \$carousel-indicator-color  |
-| --oruga-carousel-indicator-transition         | \$carousel-indicator-transition         | $speed-slow $easing                   |
-| --oruga-carousel-indicator-size               | \$carousel-indicator-size               | 10px                                  |
-| --oruga-carousel-indicator-dots-border-radius | \$carousel-indicator-dots-border-radius | \$base-border-radius                  |
-| --oruga-carousel-indicator-lines-height       | \$carousel-indicator-lines-height       | 5px                                   |
-| --oruga-carousel-indicator-lines-width        | \$carousel-indicator-lines-width        | 25px                                  |
-| --oruga-carousel-items-transition             | \$carousel-items-transition             | all \$speed-slower ease-out 0s        |
-| --oruga-carousel-item-border                  | \$carousel-item-border                  | 2px solid transparent                 |
-| --oruga-carousel-overlay-background           | \$carousel-overlay-background           | hsla(0,0%,4%,.86)                     |
-| --oruga-carousel-overlay-zindex               | \$carousel-overlay-zindex               | 40                                    |
diff --git a/packages/docs/components/Checkbox.md b/packages/docs/components/Checkbox.md
deleted file mode 100644
index 0f564d3ce..000000000
--- a/packages/docs/components/Checkbox.md
+++ /dev/null
@@ -1,287 +0,0 @@
----
-title: Checkbox
----
-
-# Checkbox
-
-> Select a single or grouped options
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/checkbox/examples/Checkbox.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="field">
-      <o-checkbox>Basic</o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox v-model="checkbox">
-        {{ checkbox }}
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox v-model="checkboxCustom" true-value="Yes" false-value="No">
-        {{ checkboxCustom }}
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :indeterminate="true">
-        Indeterminate
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox disabled>Disabled</o-checkbox>
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        checkbox: false,
-        checkboxCustom: 'Yes'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Variants
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="field">
-      <o-checkbox :value="true">
-        Default
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :value="true" variant="primary">
-        Primary
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :value="true" variant="info">
-        Info
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :value="true" variant="success">
-        Success
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :value="true" variant="danger">
-        Danger
-      </o-checkbox>
-    </div>
-    <div class="field">
-      <o-checkbox :value="true" variant="warning">
-        Warning
-      </o-checkbox>
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Array
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-checkbox v-model="checkboxGroup" native-value="Silver">
-        Silver
-      </o-checkbox>
-      <o-checkbox v-model="checkboxGroup" native-value="Flint">
-        Flint
-      </o-checkbox>
-      <o-checkbox v-model="checkboxGroup" native-value="Vane">
-        Vane
-      </o-checkbox>
-      <o-checkbox v-model="checkboxGroup" native-value="Billy" disabled>
-        Billy
-      </o-checkbox>
-    </div>
-    <p class="content">
-      <b>Selection:</b>
-      {{ checkboxGroup }}
-    </p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        checkboxGroup: ['Flint']
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_checkbox.scss)
-
-<br />
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-checkbox v-model="s.checkbox" v-bind="s">Checkbox</o-checkbox>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'labelClass',
-          description : 'Class of the checkbox label'
-        },
-        {
-          class: 'checkClass',
-          description : 'Class of the checkbox'
-        },
-        {
-          class: 'checkedClass',
-          description : 'Class of the root element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = true;
-          }
-        },
-        {
-          class: 'checkCheckedClass',
-          description : 'Class of the checkbox when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = true;
-          }
-        },
-        {
-          class: 'checkIndeterminateClass',
-          description : 'Class when checkbox is indeterminate',
-          properties: ["indeterminate"],
-          action: (cmp) => {
-            cmp.data.indeterminate = true;
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the checkbox size',
-          properties: ["size"],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        },
-        {
-          class: 'disabledClass',
-          description : 'Class when checkbox is disabled',
-          properties: ["disabled"],
-          action: (cmp) => {
-            cmp.data.disabled = true;
-          }
-        },
-        {
-          class: 'variantClass',
-          description : 'Class of the checkbox variant',
-          properties: ["variant"],
-          suffixes: ['primary', 'info', 'warning', 'danger'],
-          action: (cmp) => {
-            cmp.data.variant = 'warning';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name      | Description                                                                          | Type                           | Values                                                                          | Default |
-| -------------- | ------------------------------------------------------------------------------------ | ------------------------------ | ------------------------------------------------------------------------------- | ------- |
-| ariaLabelledby | Accessibility label to establish relationship between the checkbox and control label | string                         | -                                                                               |         |
-| autocomplete   |                                                                                      | string                         | -                                                                               |         |
-| disabled       | Same as native disabled                                                              | boolean                        | -                                                                               |         |
-| falseValue     | Overrides the returned value when it's not checked                                   | string\|number\|boolean        | -                                                                               | false   |
-| indeterminate  | Same as native indeterminate                                                         | boolean                        | -                                                                               | false   |
-| name           | Same as native name                                                                  | string                         | -                                                                               |         |
-| nativeValue    | Same as native value                                                                 | string\|number\|boolean\|array | -                                                                               |         |
-| override       | Override classes                                                                     | boolean                        | -                                                                               | false   |
-| required       |                                                                                      | boolean                        | -                                                                               |         |
-| size           | Size of the control, optional                                                        | string                         | `small`, `medium`, `large`                                                      |         |
-| trueValue      | Overrides the returned value when it's checked                                       | string\|number\|boolean        | -                                                                               | true    |
-| v-model        |                                                                                      | string\|number\|boolean\|array | -                                                                               |         |
-| variant        | Color of the control, optional                                                       | string                         | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |         |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                | SASS Variable                         | Default                 |
-| ------------------------------------------- | ------------------------------------- | ----------------------- |
-| --oruga-checkbox-active-background-color    | \$checkbox-active-background-color    | \$primary               |
-| --oruga-checkbox-background-color           | \$checkbox-background-color           | \$primary               |
-| --oruga-checkbox-border-color               | \$checkbox-border-color               | \$primary               |
-| --oruga-checkbox-border-radius              | \$checkbox-border-radius              | \$base-border-radius    |
-| --oruga-checkbox-border-width               | \$checkbox-border-width               | 2px                     |
-| --oruga-checkbox-checked-box-shadow-length  | \$checkbox-checked-box-shadow-length  | 0 0 0.5em               |
-| --oruga-checkbox-checked-box-shadow-opacity | \$checkbox-checked-box-shadow-opacity | 0.8                     |
-| --oruga-checkbox-checkmark-color            | \$checkbox-checkmark-color            | \$primary-invert        |
-| --oruga-checkbox-disabled-opacity           | \$checkbox-disabled-opacity           | \$base-disabled-opacity |
-| --oruga-checkbox-label-padding              | \$checkbox-label-padding              | 0 0 0 0.5em             |
-| --oruga-checkbox-margin-sibiling            | \$checkbox-margin-sibiling            | 0.5em                   |
-| --oruga-checkbox-size                       | \$checkbox-size                       | 1rem                    |
-| --oruga-checkbox-line-height                | \$checkbox-line-height                | 1.5                     |
diff --git a/packages/docs/components/Collapse.md b/packages/docs/components/Collapse.md
deleted file mode 100644
index 2529dd056..000000000
--- a/packages/docs/components/Collapse.md
+++ /dev/null
@@ -1,230 +0,0 @@
----
-title: Collapse
----
-
-# Collapse
-
-> An easy way to toggle what you want
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/collapse/examples/Collapse.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-collapse :open="false" aria-id="contentIdForA11y1">
-      <template #trigger="props">
-        <o-button variant="primary" aria-controls="contentIdForA11y1" :aria-expanded="props.open">Click me!</o-button>
-      </template>
-      <div class="notification">
-        <h3>
-          Subtitle
-        </h3>
-        <p>
-          Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br />
-          Nulla accumsan, metus ultrices eleifend gravida, nulla nunc varius lectus, nec rutrum justo nibh eu lectus. <br />
-          Ut vulputate semper dui. Fusce erat odio, sollicitudin vel erat vel, interdum mattis neque.
-        </p>
-      </div>
-    </o-collapse>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Accordion
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-collapse class="card" animation="slide" v-for="(collapse, index) of collapses" :key="index" :open="isOpen == index" @open="isOpen = index">
-      <template #trigger="props">
-        <div class="card-header" role="button" :aria-controls="'contentIdForA11y5-' + index" :aria-expanded="isOpen">
-          <p class="card-header-title">
-            {{ collapse.title }}
-          </p>
-          <a class="card-header-icon">
-            <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon>
-          </a>
-        </div>
-      </template>
-      <div class="card-content">
-        <div class="content">
-          {{ collapse.text }}
-        </div>
-      </div>
-    </o-collapse>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isOpen: 0,
-        collapses: [
-          {
-            title: 'Title 1',
-            text: 'Text 1'
-          },
-          {
-            title: 'Title 2',
-            text: 'Text 2'
-          },
-          {
-            title: 'Title 3',
-            text: 'Text 3'
-          }
-        ]
-      }
-    }
-  }
-</script>
-
-<style>
-  .card {
-    background-color: #fff;
-    box-shadow: 0 2px 3px hsla(0, 0%, 4%, 0.1), 0 0 0 1px hsla(0, 0%, 4%, 0.1);
-    color: #4a4a4a;
-    max-width: 100%;
-    position: relative;
-  }
-  .card-header {
-    background-color: transparent;
-    align-items: stretch;
-    box-shadow: 0 1px 2px hsla(0, 0%, 4%, 0.1);
-    display: flex;
-  }
-  .card-header-title {
-    align-items: center;
-    color: #363636;
-    display: flex;
-    flex-grow: 1;
-    font-weight: 700;
-    padding: 0.75rem;
-    margin: 0;
-  }
-  .card-header-icon {
-    align-items: center;
-    cursor: pointer;
-    display: flex;
-    padding: 0.75rem;
-    justify-content: center;
-  }
-  .card-content {
-    padding: 1.5rem;
-    background-color: transparent;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_collapse.scss)
-
-<br />
-<template>
-  <div>
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-collapse
-          animation="slide"
-          v-bind="s"
-          :open="true"
-          style="border: 1px solid #dfe2e5"
-        >
-          <div
-            slot="trigger"
-            slot-scope="props"
-            class="card-header"
-            role="button"
-          >
-            <p class="card-header-title">
-              Collapse Title
-            </p>
-            <a class="card-header-icon">
-              <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon>
-            </a>
-          </div>
-          <div class="card-content">
-            <div class="content">
-              Collapse Content
-            </div>
-          </div>
-        </o-collapse>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-            class: "rootClass",
-            description: "Class of the root element"
-        },
-        {
-            class: "triggerClass",
-            description: "Class of the trigger element"
-        },
-        {
-            class: "contentClass",
-            description: "Class of the content"
-        }
-      ],
-    };
-  },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name | Description                                                                                                            | Type    | Values          | Default                                                                                                                                   |
-| --------- | ---------------------------------------------------------------------------------------------------------------------- | ------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
-| animation | Custom animation (transition name)                                                                                     | string  | -               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> collapse: {<br>&nbsp;&nbsp;animation: 'fade'<br>}</code> |
-| ariaId    |                                                                                                                        | string  | -               | ''                                                                                                                                        |
-| open      | Whether collapse is open or not, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding | boolean | -               | true                                                                                                                                      |
-| override  | Override classes                                                                                                       | boolean | -               | false                                                                                                                                     |
-| position  | Trigger position                                                                                                       | string  | `top`, `bottom` | 'top'                                                                                                                                     |
-
-## Events
-
-| Event name  | Properties | Description |
-| ----------- | ---------- | ----------- |
-| update:open |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| trigger |             |          |
-| default |             |          |
-
-## Style
-
-| CSS Variable | SASS Variable | Default |
-| ------------ | ------------- | ------- |
-
diff --git a/packages/docs/components/Datepicker.md b/packages/docs/components/Datepicker.md
deleted file mode 100644
index bf746ea56..000000000
--- a/packages/docs/components/Datepicker.md
+++ /dev/null
@@ -1,1094 +0,0 @@
----
-title: Datepicker
----
-
-# Datepicker
-
-> An input with a simple dropdown/modal for selecting a date, uses native datepicker for mobile
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/datepicker/examples/Datepicker.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-field>
-        <o-select v-model="locale" placeholder="Locale">
-          <option :value="undefined"></option>
-          <option value="de-DE">de-DE</option>
-          <option value="en-CA">en-CA</option>
-          <option value="en-GB">en-GB</option>
-          <option value="en-US">en-US</option>
-          <option value="es-ES">es-ES</option>
-          <option value="es-MX">es-MX</option>
-          <option value="fr-CA">fr-CA</option>
-          <option value="fr-FR">fr-FR</option>
-          <option value="it-IT">it-IT</option>
-          <option value="ja-JP">ja-JP</option>
-          <option value="pt-BR">pt-BR</option>
-          <option value="ru-RU">ru-RU</option>
-        </o-select>
-      </o-field>
-      <o-field>
-        <o-switch v-model="showWeekNumber">Show week number</o-switch>
-      </o-field>
-    </o-field>
-    <o-field label="Select a date">
-      <o-datepicker v-model="selected" :show-week-number="showWeekNumber" :locale="locale" placeholder="Click to select..." icon="calendar" trap-focus> </o-datepicker>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        selected: new Date(),
-        showWeekNumber: false,
-        locale: undefined // Browser locale
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Min/Max date
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a date">
-    <o-datepicker placeholder="Click to select..." icon="calendar" :min-date="minDate" :max-date="maxDate"> </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      const today = new Date()
-
-      return {
-        date: new Date(),
-        minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7),
-        maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Range
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a date">
-    <o-datepicker placeholder="Click to select..." icon="calendar" v-model="dates" range> </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        dates: []
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Multiple
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a date">
-    <o-datepicker placeholder="Click to select..." v-model="dates" multiple> </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        dates: []
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Trigger
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Select a date" grouped>
-      <o-datepicker v-model="selected" :mobile-native="false">
-        <template v-slot:trigger>
-          <o-button icon-left="calendar" type="primary" />
-        </template>
-      </o-datepicker>
-      <o-input readonly :value="selectedString" />
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        selected: null
-      }
-    },
-    computed: {
-      selectedString() {
-        return this.selected ? this.selected.toDateString() : ''
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Programmatically
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-datepicker ref="datepicker" expanded placeholder="Select a date"> </o-datepicker>
-      <o-button @click="$refs.datepicker.toggle()" icon-left="calendar" type="primary" />
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Footer slot
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a date">
-    <o-datepicker v-model="date" :first-day-of-week="1" placeholder="Click to select...">
-      <o-button variant="primary" @click="date = new Date()">
-        <o-icon icon="calendar"></o-icon>
-        <span>Today</span>
-      </o-button>
-
-      <o-button variant="danger" @click="date = null">
-        <o-icon icon="times"></o-icon>
-        <span>Clear</span>
-      </o-button>
-    </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        date: new Date()
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Header slot
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a date">
-    <o-datepicker :focused-date="date" :first-day-of-week="1" placeholder="Click to select...">
-      <template slot="header">
-        <o-field>
-          <o-autocomplete open-on-focus readonly v-model="month" :data="months" field="name" @select="selectMonth"> </o-autocomplete>
-          <o-button disabled>{{ date.getFullYear() }}</o-button>
-        </o-field>
-      </template>
-    </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        date: new Date(),
-        month: null,
-        months: [
-          { name: 'January', value: 0 },
-          { name: 'February', value: 1 },
-          { name: 'March', value: 2 },
-          { name: 'April', value: 3 },
-          { name: 'May', value: 4 },
-          { name: 'June', value: 5 },
-          { name: 'July', value: 6 },
-          { name: 'August', value: 7 },
-          { name: 'September', value: 8 },
-          { name: 'October', value: 9 },
-          { name: 'November', value: 10 },
-          { name: 'December', value: 11 }
-        ]
-      }
-    },
-    methods: {
-      selectMonth(option) {
-        if (option) {
-          this.date = new Date(this.date)
-          this.date.setMonth(option.value)
-        }
-      }
-    },
-    mounted() {
-      this.month = this.months.filter(item => item.value == this.date.getMonth())[0].name
-    }
-  }
-</script>
-```
-
-:::
-
-### Events
-
-::: demo
-
-```html
-<template>
-  <span>
-    <o-field>
-      <o-switch v-model="bars">Bars</o-switch>
-    </o-field>
-    <o-datepicker inline v-model="date" :events="events" :indicators="indicators"> </o-datepicker>
-  </span>
-</template>
-
-<script>
-  const thisMonth = new Date().getMonth()
-
-  export default {
-    computed: {
-      indicators() {
-        return this.bars ? 'bars' : 'dots'
-      }
-    },
-    data() {
-      return {
-        date: new Date(2017, thisMonth, 1),
-        events: [
-          new Date(2017, thisMonth, 2),
-          new Date(2017, thisMonth, 6),
-          {
-            date: new Date(2017, thisMonth, 6),
-            type: 'info'
-          },
-          {
-            date: new Date(2017, thisMonth, 8),
-            type: 'danger'
-          },
-          {
-            date: new Date(2017, thisMonth, 10),
-            type: 'success'
-          },
-          {
-            date: new Date(2017, thisMonth, 10),
-            type: 'link'
-          },
-          new Date(2017, thisMonth, 12),
-          {
-            date: new Date(2017, thisMonth, 12),
-            type: 'warning'
-          },
-          {
-            date: new Date(2017, thisMonth, 16),
-            type: 'danger'
-          },
-          new Date(2017, thisMonth, 20),
-          {
-            date: new Date(2017, thisMonth, 29),
-            type: 'success'
-          },
-          {
-            date: new Date(2017, thisMonth, 29),
-            type: 'warning'
-          },
-          {
-            date: new Date(2017, thisMonth, 29),
-            type: 'info'
-          }
-        ],
-        bars: false
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Month picker
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select a month">
-    <o-datepicker placeholder="Click to select..." icon="calendar" type="month" v-model="dates"> </o-datepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        dates: undefined
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_datepicker.scss)
-
-<br />
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select a date">
-                    <o-datepicker v-bind="s" :events="events" locale="en-GB" placeholder="Click to select a date..." icon="calendar" ref="datepicker">
-                        Footer
-                    </o-datepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openDatePicker() {
-            setTimeout(() => {
-                this.$refs.datepicker.$el.getElementsByClassName('o-input-iconspace-left')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            events: [
-                {
-                    date: new Date(),
-                    type: 'info'
-                },
-                {
-                    date: new Date(),
-                    type: 'warning'
-                }
-            ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the Datepicker size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    },
-                },
-                {
-                    class: "boxClass",
-                    description: "Class of the Datepicker box where you choose the date",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerClass",
-                    description: "Class of the Datepicker header inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerButtonsClass",
-                    description: "Class of the Datepicker buttons inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerButtonsSizeClass",
-                    description: "Class of the Datepicker buttons inside the box when a size is choosen",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.size = 'large';
-                        this.openDatePicker();
-                    },
-                },
-                {
-                    class: "prevBtnClass",
-                    description: "Class of the prev. button inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "nextBtnClass",
-                    description: "Class of the next button inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "listsClass",
-                    description: "Class of the month and year selects container inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "footerClass",
-                    description: "Class of the Datepicker footer",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableClass",
-                    description: "Class of the Datepicker table inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableHeadClass",
-                    description: "Class of Datepicker header with days of the week inside the table",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableHeadCellClass",
-                    description: "Class of the cell inside the table header",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableBodyClass",
-                    description: "Class of the table body inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableRowClass",
-                    description: "Class of the table row",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellClass",
-                    description: "Class of the table cell",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellInvisibleClass",
-                    description: "Class of the table cell when nearby month days are hidden",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.nearbyMonthDays = false
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellSelectedClass",
-                    description: "Class of table cell when it's selected",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellFirstSelectedClass",
-                    description: "Class of the first selected table cell when in range",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellWithinSelectedClass",
-                    description: "Class of the table cells within the range when the range is selected",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellLastSelectedClass",
-                    description: "Class of the last selected table cell during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellFirstHoveredClass",
-                    description: "Class of the first hovered table cell during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellWithinHoveredClass",
-                    description: "Class of the table cell when hovered during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellLastHoveredClass",
-                    description: "Class of the last table cell hovered during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellTodayClass",
-                    description: "Class of the table cell of the current day",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellSelectableClass",
-                    description: "Class of the table cell that is selectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellUnselectableClass",
-                    description: "Class of the table cell that is unselectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellNearbyClass",
-                    description: "Class of the table cell when nearby days (prev/next month) are selectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.nearbySelectableMonthDays = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellEventsClass",
-                    description: "Class of the cell of a row when at least one event is present",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventClass",
-                    description: "Class of the event",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventsClass",
-                    description: "Class of the events container",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventVariantClass",
-                    description: "Class of the event indicator when a `variant` is specified",
-                    properties: ["variant in event"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventIndicatorsClass",
-                    description: "Class of the event indicator",
-                    properties: ['indicator'],
-                    suffixes: ['bars', 'dots', '*'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.indicators = 'bars'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthClass",
-                    description: "Class of the Datepicker table inside the box when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthBodyClass",
-                    description: "Class of the table body inside the box when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthRowClass",
-                    description: "Class of the table row when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellClass",
-                    description: "Class of the table cell when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellInvisibleClass",
-                    description: "Class of the table cell when nearby month days are hidden when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.nearbyMonthDays = false
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellSelectedClass",
-                    description: "Class of table cell when it's selected when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellFirstSelectedClass",
-                    description: "Class of the first selected table cell when in range when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellWithinSelectedClass",
-                    description: "Class of the table cells within the range when the range is selected when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellLastSelectedClass",
-                    description: "Class of the last selected table cell during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellFirstHoveredClass",
-                    description: "Class of the first hovered table cell during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellWithinHoveredClass",
-                    description: "Class of the table cell when hovered during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellLastHoveredClass",
-                    description: "Class of the last table cell hovered during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellTodayClass",
-                    description: "Class of the table cell of the current day when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellSelectableClass",
-                    description: "Class of the table cell that is selectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellUnselectableClass",
-                    description: "Class of the table cell that is unselectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellNearbyClass",
-                    description: "Class of the table cell when nearby days (prev/next month) are selectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.nearbySelectableMonthDays = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthEventsClass",
-                    description: "Class of the events container when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of the Datepicker when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    action: (cmp) => {
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-                {
-                    class: "dropdownClasses",
-                    realClass: "dropdownClasses.rootClass",
-                    description: "Classes to apply on dropdown.",
-                    componentRef: "Dropdown",
-                    action: () => {
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "selectListClasses",
-                    description: "Classes to apply on select list (month and year).",
-                    componentRef: "Select",
-                    action: () => {
-                        this.openDatePicker();
-                    }
-                },
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
-
-<br />
-<br />
-
-## Props
-
-| Prop name                 | Description                                                            | Type           | Values                                            | Default                                                                                                                                                     |
-| ------------------------- | ---------------------------------------------------------------------- | -------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| appendToBody              |                                                                        | boolean        | -                                                 |                                                                                                                                                             |
-| ariaNextLabel             |                                                                        | string         | -                                                 |                                                                                                                                                             |
-| ariaPreviousLabel         |                                                                        | string         | -                                                 |                                                                                                                                                             |
-| autocomplete              | Native options to use in HTML5 validation                              | string         | -                                                 |                                                                                                                                                             |
-| closeOnClick              |                                                                        | boolean        | -                                                 | true                                                                                                                                                        |
-| dateCreator               |                                                                        | func           | -                                                 | Default function (see source code)                                                                                                                          |
-| dateFormatter             |                                                                        | func           | -                                                 | Default function (see source code)                                                                                                                          |
-| dateParser                |                                                                        | func           | -                                                 | Default function (see source code)                                                                                                                          |
-| dayNames                  |                                                                        | array          | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;dayNames: undefined<br>}</code>               |
-| disabled                  |                                                                        | boolean        | -                                                 |                                                                                                                                                             |
-| editable                  |                                                                        | boolean        | -                                                 |                                                                                                                                                             |
-| events                    |                                                                        | array          | -                                                 |                                                                                                                                                             |
-| expanded                  | Makes input full width when inside a grouped or addon field            | boolean        | -                                                 |                                                                                                                                                             |
-| firstDayOfWeek            | First day of week to display in table header (getDay() of Date Object) | number         | `0`, `1`, `2`, `3`, `4`, `5`, `6`                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;firstDayOfWeek: 0<br>}</code>                 |
-| focusedDate               |                                                                        | date           | -                                                 |                                                                                                                                                             |
-| icon                      | Icon name to be added                                                  | string         | -                                                 |                                                                                                                                                             |
-| iconNext                  |                                                                        | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;iconNext: 'chevron-right'<br>}</code>         |
-| iconPack                  | Icon pack to use                                                       | string         | `mdi`, `fa`, `fas and any other custom icon pack` |                                                                                                                                                             |
-| iconPrev                  |                                                                        | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;iconPrev: 'chevron-left'<br>}</code>          |
-| iconRight                 | Icon name to be added on the right side                                | string         | -                                                 |                                                                                                                                                             |
-| iconRightClickable        | Make the icon right clickable                                          | boolean        | -                                                 |                                                                                                                                                             |
-| indicators                |                                                                        | string         | -                                                 | 'dots'                                                                                                                                                      |
-| inline                    |                                                                        | boolean        | -                                                 |                                                                                                                                                             |
-| locale                    |                                                                        | string\|array  | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; locale: undefined<br>}</code>                             |
-| maxDate                   |                                                                        | date           | -                                                 |                                                                                                                                                             |
-| maxlength                 | Same as native maxlength, plus character counter                       | number\|string | -                                                 |                                                                                                                                                             |
-| minDate                   |                                                                        | date           | -                                                 |                                                                                                                                                             |
-| mobileBreakpoint          | Mobile breakpoint as max-width value                                   | string         | -                                                 |                                                                                                                                                             |
-| mobileModal               |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;mobileModal: true<br>}</code>                 |
-| mobileNative              |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;mobileNative: true<br>}</code>                |
-| monthNames                |                                                                        | array          | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;monthNames: undefined<br>}</code>             |
-| multiple                  |                                                                        | boolean        | -                                                 | false                                                                                                                                                       |
-| nearbyMonthDays           |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;nearbyMonthDays: true<br>}</code>             |
-| nearbySelectableMonthDays |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;nearbySelectableMonthDays: false<br>}</code>  |
-| openOnFocus               |                                                                        | boolean        | -                                                 |                                                                                                                                                             |
-| override                  | Override classes                                                       | boolean        | -                                                 | false                                                                                                                                                       |
-| placeholder               |                                                                        | string         | -                                                 |                                                                                                                                                             |
-| position                  | Optional, position of the datepicker relative to the input             | string         | `top-right`, `top-left`, `bottom-left`            |                                                                                                                                                             |
-| range                     |                                                                        | boolean        | -                                                 | false                                                                                                                                                       |
-| rounded                   | Makes the element rounded                                              | boolean        | -                                                 |                                                                                                                                                             |
-| rulesForFirstWeek         |                                                                        | number         | -                                                 | Default function (see source code)                                                                                                                          |
-| selectableDates           |                                                                        | array\|func    | -                                                 |                                                                                                                                                             |
-| showWeekNumber            |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;showWeekNumber: false<br>}</code>             |
-| size                      | Size of button, optional                                               | string         | `small`, `medium`, `large`                        |                                                                                                                                                             |
-| statusIcon                | Show status icon using field and variant prop                          | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>                            |
-| trapFocus                 |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;trapFocus: true<br>}</code>                   |
-| type                      |                                                                        | string         | -                                                 |                                                                                                                                                             |
-| unselectableDates         |                                                                        | array\|func    | -                                                 |                                                                                                                                                             |
-| unselectableDaysOfWeek    |                                                                        | array          | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;unselectableDaysOfWeek: undefined<br>}</code> |
-| useHtml5Validation        | Enable html 5 native validation                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code>                    |
-| v-model                   |                                                                        | date\|array    | -                                                 |                                                                                                                                                             |
-| validationMessage         | The message which is shown when a validation error occurs              | string         | -                                                 |                                                                                                                                                             |
-| weekNumberClickable       |                                                                        | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;weekNumberClickable: false<br>}</code>        |
-| yearsRange                |                                                                        | array          | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br>&nbsp;&nbsp;yearsRange: [-100, 10]<br>}</code>            |
-
-## Events
-
-| Event name       | Properties | Description |
-| ---------------- | ---------- | ----------- |
-| icon-right-click |            |
-| range-start      |            |
-| range-end        |            |
-| blur             |            |
-| focus            |            |
-| invalid          |            |
-| input            |            |
-| change-month     |            |
-| change-year      |            |
-| active-change    |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| trigger |             |          |
-| header  |             |          |
-| table   |             |          |
-| footer  |             |          |
-
-## Style
-
-| CSS Variable                                             | SASS Variable                                      | Default                                                |
-| -------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------ |
-| --oruga-datepicker-font-size                             | \$datepicker-font-size                             | \$base-font-size                                       |
-| --oruga-datepicker-box-line-height                       | \$datepicker-box-line-height                       | \$base-line-height                                     |
-| --oruga-datepicker-box-padding                           | \$datepicker-box-padding                           | .375rem 1rem                                           |
-| --oruga-datepicker-header-padding                        | \$datepicker-header-padding                        | 0 0 0.875rem 0                                         |
-| --oruga-datepicker-header-margin                         | \$datepicker-header-margin                         | 0 0 0.875rem 0                                         |
-| --oruga-datepicker-header-border-bottom                  | \$datepicker-header-border-bottom                  | 1px solid \$grey-lighter                               |
-| --oruga-datepicker-footer-padding                        | \$datepicker-footer-padding                        | 0.875rem .5rem 0 .5rem                                 |
-| --oruga-datepicker-footer-margin                         | \$datepicker-footer-margin                         | 0.875rem 0 0.875rem 0                                  |
-| --oruga-datepicker-footer-border-top                     | \$datepicker-footer-border-top                     | 1px solid \$grey-lighter                               |
-| --oruga-datepicker-table-head-padding                    | \$datepicker-table-head-padding                    | 0 0 0.875rem 0                                         |
-| --oruga-datepicker-table-head-margin                     | \$datepicker-table-head-margin                     | 0 0 0.875rem 0                                         |
-| --oruga-datepicker-table-head-border-bottom              | \$datepicker-table-head-border-bottom              | 1px solid \$grey-lighter                               |
-| --oruga-datepicker-table-head-item-color                 | \$datepicker-table-head-item-color                 | \$grey                                                 |
-| --oruga-datepicker-table-head-item-font-weight           | \$datepicker-table-head-item-font-weight           | 600                                                    |
-| --oruga-datepicker-item-today-border                     | \$datepicker-item-today-border                     | solid 1px rgba(\$primary, 0.5)                         |
-| --oruga-datepicker-item-selectable-color                 | \$datepicker-item-selectable-color                 | \$grey-dark                                            |
-| --oruga-datepicker-item-disabled-color                   | \$datepicker-item-disabled-color                   | \$grey-light                                           |
-| --oruga-datepicker-item-border-radius                    | \$datepicker-item-border-radius                    | \$base-border-radius                                   |
-| --oruga-datepicker-item-padding                          | \$datepicker-item-padding                          | 0.5rem 0.75rem                                         |
-| --oruga-datepicker-item-selected-color                   | \$datepicker-item-selected-color                   | \$primary-invert                                       |
-| --oruga-datepicker-item-selected-background-color        | \$datepicker-item-selected-background-color        | \$primary                                              |
-| --oruga-datepicker-item-selected-border-radius           | \$datepicker-item-selected-border-radius           | 0                                                      |
-| --oruga-datepicker-item-selected-within-background-color | \$datepicker-item-selected-within-background-color | rgba(\$datepicker-item-selected-background-color, 0.5) |
-| --oruga-datepicker-item-hovered-background-color         | \$datepicker-item-hovered-background-color         | \$grey                                                 |
-| --oruga-datepicker-item-hovered-color                    | \$datepicker-item-hovered-color                    | \$grey-lighter                                         |
-| --oruga-datepicker-item-hovered-background-color         | \$datepicker-item-hovered-background-color         | #f5f5f5                                                |
-| --oruga-datepicker-item-hovered-within-background-color  | \$datepicker-item-hovered-within-background-color  | rgba(\$datepicker-item-hovered-background-color, 0.5)  |
-| --oruga-datepicker-item-nearby-color                     | \$datepicker-item-nearby-color                     | \$grey-light                                           |
-| --oruga-datepicker-events-item-padding                   | \$datepicker-events-item-padding                   | .3rem .75rem .75rem                                    |
-| --oruga-datepicker-event-background-color                | \$datepicker-event-background-color                | \$grey-light                                           |
-| --oruga-datepicker-event-dots-size                       | \$datepicker-event-dots-size                       | .35em                                                  |
-| --oruga-datepicker-event-dots-margin                     | \$datepicker-event-dots-margin                     | 0 .1em                                                 |
-| --oruga-datepicker-event-bars-height                     | \$datepicker-event-bars-height                     | .25em                                                  |
-| --oruga-datepicker-btn-border-color                      | \$datepicker-btn-border-color                      | \$grey-lighter                                         |
-| --oruga-datepicker-btn-border-radius                     | \$datepicker-btn-border-radius                     | \$base-border-radius                                   |
-| --oruga-datepicker-btn-border                            | \$datepicker-btn-border                            | 1px solid transparent                                  |
-| --oruga-datepicker-btn-color                             | \$datepicker-btn-color                             | #363636                                                |
-| --oruga-datepicker-btn-height                            | \$datepicker-btn-height                            | 2.25em                                                 |
-| --oruga-datepicker-btn-hover-border-color                | \$datepicker-btn-hover-border-color                | \$grey-light                                           |
-| --oruga-datepicker-btn-hover-color                       | \$datepicker-btn-hover-color                       | #363636                                                |
-| --oruga-datepicker-btn-line-height                       | \$datepicker-btn-line-height                       | \$base-line-height                                     |
-| --oruga-datepicker-btn-margin                            | \$datepicker-btn-margin                            | .25rem                                                 |
-| --oruga-datepicker-btn-min-width                         | \$datepicker-btn-min-width                         | 2.25em                                                 |
-| --oruga-datepicker-btn-padding                           | \$datepicker-btn-padding                           | .5em .5em                                              |
diff --git a/packages/docs/components/Datetimepicker.md b/packages/docs/components/Datetimepicker.md
deleted file mode 100644
index 2fcd631ed..000000000
--- a/packages/docs/components/Datetimepicker.md
+++ /dev/null
@@ -1,255 +0,0 @@
----
-title: Datetimepicker
----
-
-# Datetimepicker
-
-> An input with a simple dropdown/modal for selecting a date and time, uses native datetimepicker for mobile
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/datetimepicker/examples/Datetimepicker.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="showWeekNumber">Show week number</o-switch>
-      </div>
-      <div class="control">
-        <o-switch v-model="enableSeconds">Enable seconds</o-switch>
-      </div>
-      <o-field label="Locale">
-        <o-select v-model="locale">
-          <option :value="undefined"></option>
-          <option value="de-DE">de-DE</option>
-          <option value="en-CA">en-CA</option>
-          <option value="en-GB">en-GB</option>
-          <option value="en-US">en-US</option>
-          <option value="es-ES">es-ES</option>
-          <option value="es-MX">es-MX</option>
-          <option value="fr-CA">fr-CA</option>
-          <option value="fr-FR">fr-FR</option>
-          <option value="it-IT">it-IT</option>
-          <option value="ja-JP">ja-JP</option>
-          <option value="pt-BR">pt-BR</option>
-          <option value="ru-RU">ru-RU</option>
-          <option value="zn-CN">zn-CN</option>
-        </o-select>
-      </o-field>
-      <o-field label="Hour format">
-        <o-select v-model="hourFormat">
-          <option :value="undefined"></option>
-          <option value="12">12</option>
-          <option value="24">24</option>
-        </o-select>
-      </o-field>
-    </o-field>
-    <o-field label="Select datetime">
-      <o-datetimepicker rounded placeholder="Click to select..." icon="calendar" :locale="locale" :datepicker="{ showWeekNumber }" :timepicker="{ enableSeconds, hourFormat }">
-      </o-datetimepicker>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        showWeekNumber: false,
-        enableSeconds: false,
-        hourFormat: undefined, // Browser locale
-        locale: undefined // Browser locale
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Footer slot
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select datetime">
-    <o-datetimepicker v-model="datetime" placeholder="Click to select...">
-      <div class="buttons-footer">
-        <o-button variant="primary" @click="datetime = new Date()">
-          <o-icon icon="calendar"></o-icon>
-          <span>Today</span>
-        </o-button>
-        <o-button variant="danger" @click="datetime = null">
-          <o-icon icon="times"></o-icon>
-          <span>Clear</span>
-        </o-button>
-      </div>
-    </o-datetimepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        datetime: new Date()
-      }
-    }
-  }
-</script>
-
-<style>
-  .buttons-footer {
-    margin-top: 1rem;
-  }
-</style>
-```
-
-:::
-
-### Inline
-
-::: demo
-
-```html
-<template>
-  <o-datetimepicker v-model="datetime" inline></o-datetimepicker>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        datetime: new Date()
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_datetimepicker.scss)
-
-<br />
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select datetime">
-                    <o-datetimepicker
-                        v-bind="s"
-                        placeholder="Click to select..."
-                        icon="calendar"
-                        horizontal-time-picker
-                        ref="datetimepicker"
-                    >
-                    </o-datetimepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openDatetimePicker() {
-            setTimeout(() => {
-                this.$refs.datetimepicker.$el.getElementsByClassName('o-drop__trigger')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "datepickerWrapperClass",
-                    description: "Class of the Datepicker wrapper",
-                },
-                {
-                    class: "timepickerWrapperClass",
-                    description: "Class of the Timepicker wrapper",
-                    action: () => {
-                        this.openDatetimePicker();
-                    }
-                }
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
-
-<br />
-<br />
-
-## Props
-
-| Prop name          | Description                                                 | Type           | Values                                            | Default                                                                                                                                  |
-| ------------------ | ----------------------------------------------------------- | -------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
-| appendToBody       |                                                             | boolean        | -                                                 |                                                                                                                                          |
-| autocomplete       | Native options to use in HTML5 validation                   | string         | -                                                 |                                                                                                                                          |
-| datepicker         | Properties and classes to bind to the internal DatePicker   | object         | -                                                 |                                                                                                                                          |
-| datetimeCreator    |                                                             | func           | -                                                 | Default function (see source code)                                                                                                       |
-| datetimeFormatter  |                                                             | func           | -                                                 |                                                                                                                                          |
-| datetimeParser     |                                                             | func           | -                                                 |                                                                                                                                          |
-| disabled           |                                                             | boolean        | -                                                 |                                                                                                                                          |
-| editable           |                                                             | boolean        | -                                                 | false                                                                                                                                    |
-| expanded           | Makes input full width when inside a grouped or addon field | boolean        | -                                                 |                                                                                                                                          |
-| icon               | Icon name to be added                                       | string         | -                                                 |                                                                                                                                          |
-| iconPack           | Icon pack to use                                            | string         | `mdi`, `fa`, `fas and any other custom icon pack` |                                                                                                                                          |
-| iconRight          | Icon name to be added on the right side                     | string         | -                                                 |                                                                                                                                          |
-| iconRightClickable | Make the icon right clickable                               | boolean        | -                                                 |                                                                                                                                          |
-| inline             |                                                             | boolean        | -                                                 |                                                                                                                                          |
-| locale             |                                                             | string\|array  | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; locale: undefined<br>}</code>          |
-| maxDatetime        |                                                             | date           | -                                                 |                                                                                                                                          |
-| maxlength          | Same as native maxlength, plus character counter            | number\|string | -                                                 |                                                                                                                                          |
-| minDatetime        |                                                             | date           | -                                                 |                                                                                                                                          |
-| mobileNative       |                                                             | boolean        | -                                                 | true                                                                                                                                     |
-| openOnFocus        |                                                             | boolean        | -                                                 |                                                                                                                                          |
-| override           | Override classes                                            | boolean        | -                                                 | false                                                                                                                                    |
-| placeholder        |                                                             | string         | -                                                 |                                                                                                                                          |
-| position           | Optional, position of the datepicker relative to the input  | string         | `top-right`, `top-left`, `bottom-left`            |                                                                                                                                          |
-| rounded            | Makes the element rounded                                   | boolean        | -                                                 |                                                                                                                                          |
-| size               | Size of button, optional                                    | string         | `small`, `medium`, `large`                        |                                                                                                                                          |
-| statusIcon         | Show status icon using field and variant prop               | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>         |
-| timepicker         | Properties and classes to bind to the internal TimePicker   | object         | -                                                 |                                                                                                                                          |
-| useHtml5Validation | Enable html 5 native validation                             | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code> |
-| validationMessage  | The message which is shown when a validation error occurs   | string         | -                                                 |                                                                                                                                          |
-| value              |                                                             | date           | -                                                 |                                                                                                                                          |
-
-## Events
-
-| Event name       | Properties | Description |
-| ---------------- | ---------- | ----------- |
-| active-change    |            |
-| icon-right-click |            |
-| change-month     |            |
-| change-year      |            |
-| blur             |            |
-| focus            |            |
-| invalid          |            |
-| input            |            |
-
-## Slots
-
-| Name   | Description | Bindings |
-| ------ | ----------- | -------- |
-| footer |             |          |
diff --git a/packages/docs/components/Dropdown.md b/packages/docs/components/Dropdown.md
deleted file mode 100644
index ec039352f..000000000
--- a/packages/docs/components/Dropdown.md
+++ /dev/null
@@ -1,465 +0,0 @@
----
-title: Dropdown
----
-
-# Dropdown
-
-> Dropdowns are very versatile, can used as a quick menu or even like a select for discoverable content
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/dropdown/examples/Dropdown.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-dropdown aria-role="list">
-      <o-button variant="primary" slot="trigger" slot-scope="{ active }">
-        <span>Click me!</span>
-        <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon>
-      </o-button>
-
-      <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-    </o-dropdown>
-
-    <o-dropdown :triggers="['hover']" aria-role="list">
-      <o-button variant="info" slot="trigger">
-        <span>Hover me!</span>
-        <o-icon icon="caret-down"></o-icon>
-      </o-button>
-
-      <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-    </o-dropdown>
-
-    <o-dropdown disabled aria-role="list">
-      <o-button slot="trigger">
-        <span>Disabled</span>
-        <o-icon icon="caret-down"></o-icon>
-      </o-button>
-
-      <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-    </o-dropdown>
-
-    <o-dropdown aria-role="list">
-      <div slot="trigger">
-        Custom
-        <o-icon variant="success" icon="caret-down" slot="trigger" role="button"> </o-icon>
-      </div>
-
-      <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-    </o-dropdown>
-
-    <o-dropdown :triggers="['contextmenu']" aria-role="list">
-      <o-button slot="trigger" role="button">
-        Right click
-      </o-button>
-
-      <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-      <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-    </o-dropdown>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Multiple
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p class="content"><b>selected</b>: {{ selectedOptions }}</p>
-    <o-dropdown v-model="selectedOptions" multiple aria-role="list">
-      <o-button variant="primary" type="button" slot="trigger">
-        <span>Selected ({{ selectedOptions.length }})</span>
-        <o-icon icon="caret-down"></o-icon>
-      </o-button>
-
-      <o-dropdown-item value="option1" aria-role="listitem">
-        <span>Option 1</span>
-      </o-dropdown-item>
-
-      <o-dropdown-item value="option2" aria-role="listitem">
-        <span>Option 2</span>
-      </o-dropdown-item>
-
-      <o-dropdown-item value="option3" aria-role="listitem">
-        <span>Option 3</span>
-      </o-dropdown-item>
-    </o-dropdown>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        selectedOptions: []
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Scrollable
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-field>
-        <o-switch v-model="isScrollable">Scrollable</o-switch>
-      </o-field>
-    </div>
-
-    <br />
-
-    <o-dropdown :scrollable="isScrollable" :max-height="maxHeight" v-model="currentMenu" aria-role="list">
-      <o-button variant="primary" type="button" slot="trigger">
-        <template>
-          <o-icon :icon="currentMenu.icon"></o-icon>
-          <span>{{currentMenu.text}}</span>
-        </template>
-        <o-icon icon="caret-down"></o-icon>
-      </o-button>
-
-      <o-dropdown-item v-for="(menu, index) in menus" :key="index" :value="menu" aria-role="listitem">
-        <div class="media">
-          <o-icon class="media-left" :icon="menu.icon"></o-icon>
-          <div class="media-content">
-            <span>{{menu.text}}</span>
-          </div>
-        </div>
-      </o-dropdown-item>
-    </o-dropdown>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isScrollable: true,
-        maxHeight: 200,
-        currentMenu: { icon: 'users', text: 'People' },
-        menus: [
-          { icon: 'users', text: 'People' },
-          { icon: 'box', text: 'Orders' },
-          { icon: 'credit-card', text: 'Payments' },
-          { icon: 'dolly', text: 'Logistics' },
-          { icon: 'business-time', text: 'Jobs' },
-          { icon: 'shopping-cart', text: 'Cart' },
-          { icon: 'cog', text: 'Configuration' }
-        ]
-      }
-    }
-  }
-</script>
-
-<style>
-  .media {
-    align-items: flex-start;
-    display: flex;
-    text-align: left;
-  }
-  .media-content {
-    flex-basis: auto;
-    flex-grow: 1;
-    flex-shrink: 1;
-    text-align: left;
-    overflow-y: hidden;
-    overflow-x: auto;
-  }
-  .media-left {
-    margin-right: 1rem;
-    flex-basis: auto;
-    flex-grow: 0;
-    flex-shrink: 0;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_dropdown.scss)
-
-<br />
-<template>
-  <div>
-    <doc-wrapper>
-        <template v-slot:default="s">
-            <o-dropdown v-model="currentMenu" v-bind="s" aria-role="list">
-                <o-button variant="primary" slot="trigger" slot-scope="{ active }" ref="dropdownbtn">
-                    <span>Click me!</span>
-                    <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon>
-                </o-button>
-                <o-dropdown-item v-bind="s" value="ac1" aria-role="listitem">Action</o-dropdown-item>
-                <o-dropdown-item v-bind="s" value="ac2" aria-role="listitem">Another action</o-dropdown-item>
-                <o-dropdown-item v-bind="s" value="ac3" disabled aria-role="listitem">Something else</o-dropdown-item>
-            </o-dropdown>
-        </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            currentMenu: '',
-            subitem: 'dropdown-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "triggerClass",
-                    description: "Class of the trigger element"
-                },
-                {
-                    class: "menuMobileOverlayClass",
-                    description: "Class of the overlay when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "menuClass",
-                    description: "Class of the dropdown menu",
-                    specificity: "when <b>inlineClass</b> or <b>mobileClass</b> or <b>expandedClass</b> is applied",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class of dropdown when disabled",
-                    properties: ['disabled'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "menuActiveClass",
-                    description: "Class of dropdown menu when active",
-                    properties: ['inline'],
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "inlineClass",
-                    description: "Class of dropdown menu when inline",
-                    properties: ['inline'],
-                    action: (cmp) => {
-                        cmp.data.inline = true;
-                    }
-                },
-                {
-                    class: "menuPositionClass",
-                    description: "Class of dropdown menu position",
-                    properties: ['position'],
-                    suffixes: ['top-right', 'top-left', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of dropdown when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of dropdown when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the dropdown item",
-                    subitem: true,
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "itemActiveClass",
-                    description: "Class of the dropdown item when active",
-                    subitem: true,
-                    action: () => {
-                        setTimeout(() => {
-                            this.currentMenu = 'ac1'
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "itemDisabledClass",
-                    subitem: true,
-                    description: "Class of the dropdown item when disabled",
-                    properties: ['disabled'],
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name        | Description                                                                                                                                            | Type                                   | Values                                   | Default                                                                                                                                   |
-| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
-| animation        | Custom animation (transition name)                                                                                                                     | string                                 | -                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;animation: 'fade'<br>}</code> |
-| appendToBody     | Append dropdown content to body                                                                                                                        | boolean                                | -                                        |                                                                                                                                           |
-| ariaRole         | Role attribute to be passed to list container for better accessibility. Use menu only in situations where your dropdown is related to navigation menus | string                                 | `list`, `menu`, `dialog`                 | null                                                                                                                                      |
-| canClose         | Can close dropdown by pressing escape or by clicking outside                                                                                           | array\|boolean                         | `escape`, `outside`                      | true                                                                                                                                      |
-| closeOnClick     | Close dropdown when content is clicked                                                                                                                 | boolean                                | -                                        | true                                                                                                                                      |
-| disabled         | Dropdown disabled                                                                                                                                      | boolean                                | -                                        |                                                                                                                                           |
-| expanded         | Dropdown will be expanded (full-width)                                                                                                                 | boolean                                | -                                        |                                                                                                                                           |
-| inline           | Dropdown content (items) are shown inline, trigger is removed                                                                                          | boolean                                | -                                        |                                                                                                                                           |
-| maxHeight        | Max height of dropdown content                                                                                                                         | string\|number                         | -                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;maxHeight: 200<br>}</code>    |
-| menuTag          | Dropdown menu tag name                                                                                                                                 | string                                 | -                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;menuTag: 'div'<br>}</code>    |
-| mobileBreakpoint | Mobile breakpoint as max-width value                                                                                                                   | string                                 | -                                        |                                                                                                                                           |
-| mobileModal      | Dropdown content (items) are shown into a modal on mobile                                                                                              | boolean                                | -                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;mobileModal: true<br>}</code> |
-| multiple         | Allows multiple selections                                                                                                                             | boolean                                | -                                        |                                                                                                                                           |
-| override         | Override classes                                                                                                                                       | boolean                                | -                                        | false                                                                                                                                     |
-| position         | Optional, position of the dropdown relative to the trigger                                                                                             | string                                 | `top-right`, `top-left`, `bottom-left`   |                                                                                                                                           |
-| scrollable       | Dropdown content will be scrollable                                                                                                                    | boolean                                | -                                        |                                                                                                                                           |
-| trapFocus        | Trap focus inside the dropdown.                                                                                                                        | boolean                                | -                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;trapFocus: true<br>}</code>   |
-| triggerTabindex  | Set the tabindex attribute on the dropdown trigger div (-1 to prevent selection via tab key)                                                           | number                                 | -                                        | 0                                                                                                                                         |
-| triggers         | Dropdown will be triggered by any events                                                                                                               | array                                  | `click`, `hover`, `contextmenu`, `focus` | ['click']                                                                                                                                 |
-| v-model          |                                                                                                                                                        | string\|number\|boolean\|object\|array | -                                        | null                                                                                                                                      |
-
-### Events
-
-| Event name    | Properties | Description |
-| ------------- | ---------- | ----------- |
-| active-change |            |
-| change        |            |
-| input         |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| trigger |             |          |
-| default |             |          |
-
----
-
-# Dropdown Item
-
-> <CarbonAds />
-
-## Props
-
-| Prop name | Description                                           | Type                                   | Values | Default                                                                                                                                |
-| --------- | ----------------------------------------------------- | -------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- |
-| ariaRole  |                                                       | string                                 | -      | ''                                                                                                                                     |
-| clickable | Item is clickable and emit an event                   | boolean                                | -      | true                                                                                                                                   |
-| disabled  | Item is disabled                                      | boolean                                | -      |                                                                                                                                        |
-| override  | Override classes                                      | boolean                                | -      | false                                                                                                                                  |
-| tabindex  |                                                       | number\|string                         | -      | 0                                                                                                                                      |
-| tag       | Dropdown item tag name                                | string                                 | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br>&nbsp;&nbsp;itemTag: 'div'<br>}</code> |
-| value     | The value that will be returned on events and v-model | string\|number\|boolean\|object\|array | -      | null                                                                                                                                   |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| click      |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                  | SASS Variable                           | Default                                                              |
-| --------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------- |
-| --oruga-dropdown-disabled-opacity             | \$dropdown-disabled-opacity             | \$base-disabled-opacity                                              |
-| --oruga-dropdown-item-active-background-color | \$dropdown-item-active-background-color | \$primary                                                            |
-| --oruga-dropdown-item-active-color            | \$dropdown-item-active-color            | \$primary-invert                                                     |
-| --oruga-dropdown-item-color                   | \$dropdown-item-color                   | #000000                                                              |
-| --oruga-dropdown-item-disabled-opacity        | \$dropdown-item-disabled-opacity        | \$base-disabled-opacity                                              |
-| --oruga-dropdown-item-font-size               | \$dropdown-item-font-size               | \$base-font-size                                                     |
-| --oruga-dropdown-item-hover-background-color  | \$dropdown-item-hover-background-color  | #f5f5f5                                                              |
-| --oruga-dropdown-item-hover-color             | \$dropdown-item-hover-color             | #000000                                                              |
-| --oruga-dropdown-item-line-height             | \$dropdown-item-line-height             | \$base-line-height                                                   |
-| --oruga-dropdown-item-padding                 | \$dropdown-item-padding                 | .375rem 1rem                                                         |
-| --oruga-dropdown-item-font-weight             | \$dropdown-item-font-weight             | 400                                                                  |
-| --oruga-dropdown-menu-background              | \$dropdown-menu-background              | #ffffff                                                              |
-| --oruga-dropdown-menu-border-radius           | \$dropdown-menu-border-radius           | \$base-border-radius                                                 |
-| --oruga-dropdown-menu-box-shadow              | \$dropdown-menu-box-shadow              | 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) |
-| --oruga-dropdown-menu-margin                  | \$dropdown-menu-margin                  | 0                                                                    |
-| --oruga-dropdown-menu-padding                 | \$dropdown-menu-padding                 | .5rem 0 .5rem 0                                                      |
-| --oruga-dropdown-menu-width                   | \$dropdown-menu-width                   | 12rem                                                                |
-| --oruga-dropdown-menu-zindex                  | \$dropdown-menu-zindex                  | 20                                                                   |
-| --oruga-dropdown-mobile-max-height            | \$dropdown-mobile-max-height            | calc(100vh - 120px)                                                  |
-| --oruga-dropdown-mobile-max-width             | \$dropdown-mobile-max-width             | 460px                                                                |
-| --oruga-dropdown-mobile-overlay-color         | \$dropdown-mobile-overlay-color         | rgba(#000000, 0.86)                                                  |
-| --oruga-dropdown-mobile-overlay-zindex        | \$dropdown-mobile-overlay-zindex        | 40                                                                   |
-| --oruga-dropdown-mobile-width                 | \$dropdown-mobile-width                 | calc(100vw - 40px)                                                   |
-| --oruga-dropdown-mobile-zindex                | \$dropdown-mobile-zindex                | 50                                                                   |
diff --git a/packages/docs/components/Field.md b/packages/docs/components/Field.md
deleted file mode 100644
index d2b8e6aa0..000000000
--- a/packages/docs/components/Field.md
+++ /dev/null
@@ -1,441 +0,0 @@
----
-title: Field
----
-
-# Field
-
-> Fields are used to add functionality to controls and to attach/group components and elements together
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/field/examples/Field.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Name">
-      <o-input value="Kevin Garvey"></o-input>
-    </o-field>
-
-    <o-field label="Email" variant="danger" message="This email is invalid">
-      <o-input type="email" value="john@" maxlength="30"> </o-input>
-    </o-field>
-
-    <o-field label="Username" variant="success" message="This username is available">
-      <o-input value="johnsilver" maxlength="30"></o-input>
-    </o-field>
-
-    <o-field label="Password" variant="warning">
-      <o-input value="123" type="password" maxlength="30"></o-input>
-    </o-field>
-
-    <o-field label="Subject">
-      <o-select placeholder="Select a subject">
-        <option value="1">Option 1</option>
-        <option value="2">Option 2</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Wrong subject" variant="danger" message="Selected subject is wrong">
-      <o-select placeholder="Select a subject">
-        <option value="1">Option 1</option>
-        <option value="2">Option 2</option>
-      </o-select>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Addons
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field variant="danger">
-      <o-input placeholder="Search..." type="search" icon="search"> </o-input>
-      <o-button variant="primary">Search</o-button>
-    </o-field>
-
-    <o-field>
-      <o-input placeholder="This is expanded" expanded></o-input>
-      <o-button>@gmail.com</o-button>
-    </o-field>
-
-    <hr />
-
-    <o-field>
-      <o-select placeholder="Currency">
-        <option>$</option>
-        <option>ยฃ</option>
-        <option>โ‚ฌ</option>
-      </o-select>
-      <o-input type="number" placeholder="0,00"></o-input>
-      <o-button variant="success">Transfer</o-button>
-    </o-field>
-
-    <o-field>
-      <o-button icon-left="bold"></o-button>
-      <o-button icon-left="italic"></o-button>
-      <o-button icon-left="underline"></o-button>
-      <o-button icon-left="align-left"></o-button>
-      <o-button icon-left="align-center"></o-button>
-      <o-button icon-left="align-right"></o-button>
-
-      <o-input placeholder="Search..." type="search" icon="search"></o-input>
-    </o-field>
-
-    <o-field>
-      <o-button variant="primary">
-        Button
-      </o-button>
-      <o-dropdown>
-        <o-button variant="primary" icon-right="caret-down" slot="trigger"> </o-button>
-
-        <o-dropdown-item>Action</o-dropdown-item>
-        <o-dropdown-item>Another action</o-dropdown-item>
-        <o-dropdown-item>Something else</o-dropdown-item>
-      </o-dropdown>
-    </o-field>
-
-    <o-field>
-      <o-dropdown>
-        <o-button icon-right="caret-down" slot="trigger">
-          Filters
-        </o-button>
-
-        <o-dropdown-item value="open_issues">Open Issues and Pull Requests</o-dropdown-item>
-        <o-dropdown-item value="your_issues">Your Issues</o-dropdown-item>
-        <o-dropdown-item value="pull_requests">Your Pull Requests</o-dropdown-item>
-        <o-dropdown-item value="everything">Everything</o-dropdown-item>
-      </o-dropdown>
-      <o-input icon="search" type="search" placeholder="Search..."></o-input>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Grouped
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped variant="danger" message="What do you want to search?">
-      <o-input placeholder="Search..."></o-input>
-      <o-button variant="primary">Search</o-button>
-    </o-field>
-
-    <o-field grouped message="What do you want to search?">
-      <o-input placeholder="Search..." expanded></o-input>
-      <o-button variant="primary">Search</o-button>
-    </o-field>
-
-    <o-field grouped group-multiline>
-      <o-input></o-input>
-      <o-button>First</o-button>
-      <o-button>Second</o-button>
-      <o-button>Third</o-button>
-      <o-button>Fourth</o-button>
-      <o-button>Fifth</o-button>
-      <o-button>Sixth</o-button>
-      <o-button>Seventh</o-button>
-      <o-button>Eighth</o-button>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Horizontal
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field horizontal label="Subject" variant="danger" message="Please enter a subject">
-      <o-input name="subject" expanded></o-input>
-    </o-field>
-
-    <o-field horizontal label="From">
-      <o-input name="name" placeholder="Name" expanded></o-input>
-      <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input>
-    </o-field>
-
-    <o-field horizontal label="Topic">
-      <o-select placeholder="Select a topic">
-        <option value="1">Oruga</option>
-        <option value="2">Vue.js</option>
-        <option value="3">UI</option>
-      </o-select>
-    </o-field>
-
-    <o-field horizontal label="Message">
-      <o-input type="textarea"></o-input>
-    </o-field>
-
-    <o-field horizontal
-      ><!-- Label left empty for spacing -->
-      <o-button variant="primary">
-        Send message
-      </o-button>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Slots
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field horizontal>
-      <template slot="label">
-        With tooltip
-        <o-tooltip label="Help text here for explanation">
-          <o-icon size="small" icon="question-circle"></o-icon>
-        </o-tooltip>
-      </template>
-      <o-input size="medium"></o-input>
-    </o-field>
-
-    <o-field>
-      <template slot="label"> Label with custom <i>style</i> </template>
-      <o-input></o-input>
-      <template slot="message"> Message with custom <b>style</b> </template>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_field.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field v-bind="s" label="Field">
-                    <o-input v-model="name" name="name" placeholder="Name" expanded></o-input>
-                    <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            name: '',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of file component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "horizontalClass",
-                    description: "Class to align label and control in horizontal forms",
-                    properties: ['horizontal'],
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "groupedClass",
-                    description: "Class when fields are grouped together",
-                    properties: ['grouped'],
-                    action: (cmp) => {
-                        cmp.data.grouped = true;
-                    }
-                },
-                {
-                    class: "groupMultilineClass",
-                    description: "Class when fields fill up multiple lines",
-                    properties: ['groupMultiline'],
-                    action: (cmp) => {
-                        cmp.data.groupMultiline = true;
-                    }
-                },
-                {
-                    class: "labelClass",
-                    description: "Class for field label"
-                },
-                {
-                    class: "labelSizeClass",
-                    description: "Class for field label size",
-                    properties: ['labelSize'],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.labelSize = "large";
-                    }
-                },
-                {
-                    class: "labelHorizontalClass",
-                    description: "Class for field label when horizontal",
-                    properties: ['horizontal'],
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "bodyClass",
-                    description: "Class for field body"
-                },
-                {
-                    class: "bodyHorizontalClass",
-                    description: "Class for field body when horizontal",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    properties: ['horizontal'],
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "addonsClass",
-                    description: "Class for components automatically attached together when inside a field",
-                    warning: "Use the <code>expanded</code> prop on the control to fill up the remaining space",
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "messageClass",
-                    description: "Class for the field message",
-                    properties: ["message"],
-                    action: (cmp) => {
-                        cmp.data.message = 'This is a message for the field';
-                    }
-                },
-                {
-                    class: "variantMessageClass",
-                    description: "Class of the message field variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "info";
-                        cmp.data.message = 'This is a message for the field';
-                    }
-                },
-                {
-                    class: "variantLabelClass",
-                    description: "Class of the label field variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "info";
-                    }
-                },
-                {
-                    class: "focusedClass",
-                    description: "Class for the focused field",
-                    warning: "focus event emitted by form elements",
-                    action: (cmp) => {
-                        cmp.$el.focus()
-                    }
-                },
-                {
-                    class: "filledClass",
-                    description: "Class for the filled field",
-                    warning: "when it contains a input",
-                    action: () => {
-                        this.name = 'Oruga'
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name        | Description                                                                                                      | Type    | Values                                                                          | Default |
-| ---------------- | ---------------------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------- | ------- |
-| addons           | Field automatically attach controls together                                                                     | boolean | -                                                                               | true    |
-| groupMultiline   | Allow controls to fill up multiple lines, making it responsive                                                   | boolean | -                                                                               |         |
-| grouped          | Direct child components/elements of Field will be grouped horizontally (see which ones at the top of the page)   | boolean | -                                                                               |         |
-| horizontal       | Group label and control on the same line for horizontal forms                                                    | boolean | -                                                                               |         |
-| label            | Field label                                                                                                      | string  | -                                                                               |         |
-| labelFor         | Same as native for set on the label                                                                              | string  | -                                                                               |         |
-| labelSize        | Vertical size of input, optional                                                                                 | string  | `small`, `medium`, `large`                                                      |         |
-| message          | Help message text                                                                                                | string  | -                                                                               |         |
-| mobileBreakpoint | Mobile breakpoint as max-width value                                                                             | string  | -                                                                               |         |
-| override         | Override classes                                                                                                 | boolean | -                                                                               | false   |
-| variant          | Color of the field and help message, also adds a matching icon, optional. Used by Input, Select and Autocomplete | string  | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |         |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| label   |             |          |
-| default |             |          |
-| message |             |          |
-
-## Style
-
-| CSS Variable                          | SASS Variable                   | Default      |
-| ------------------------------------- | ------------------------------- | ------------ |
-| --oruga-field-label-color             | \$field-label-color             | #363636      |
-| --oruga-field-label-font-weight       | \$field-label-font-weight       | 600          |
-| --oruga-field-margin-bottom           | \$field-margin-bottom           | .75rem       |
-| --oruga-field-message-font-size       | \$field-message-font-size       | .75rem       |
-| --oruga-field-message-margin-top      | \$field-message-margin-top      | .25rem       |
-| --oruga-field-margin-right            | \$field-margin-right            | .37rem       |
-| --oruga-field-horizontal-label-margin | \$field-horizontal-label-margin | 0 1.5rem 0 0 |
diff --git a/packages/docs/components/Icon.md b/packages/docs/components/Icon.md
deleted file mode 100644
index 2f397bf98..000000000
--- a/packages/docs/components/Icon.md
+++ /dev/null
@@ -1,360 +0,0 @@
----
-title: Icon
----
-
-# Icon
-
-> Icons take an important role of any application
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/icon/examples/Icon.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-Oruga is compatible with both <a href="https://materialdesignicons.com/" target="_blank">Material Design Icons</a>
-and <a href="https://fontawesome.com/" target="_blank">FontAwesome 5</a> but you can also add your own custom icon pack.<br>
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-icon pack="fas" icon="user" size="small"> </o-icon>
-      <o-icon pack="fas" icon="home" size="small"> </o-icon>
-      <o-icon pack="fas" icon="tachometer-alt" size="small"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="fas" icon="user"> </o-icon>
-      <o-icon pack="fas" icon="home"> </o-icon>
-      <o-icon pack="fas" icon="tachometer-alt"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="fas" icon="user" size="medium"> </o-icon>
-      <o-icon pack="fas" icon="home" size="medium"> </o-icon>
-      <o-icon pack="fas" icon="tachometer-alt" size="medium"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="fas" icon="user" size="large" variant="success"> </o-icon>
-      <o-icon pack="fas" icon="home" size="large" variant="info"> </o-icon>
-      <o-icon pack="fas" icon="tachometer-alt" size="large" variant="primary"> </o-icon>
-    </div>
-
-    <o-button variant="success">
-      <o-icon pack="fas" icon="check"></o-icon>
-      <span>Finish</span>
-    </o-button>
-
-    <o-button variant="warning">
-      <o-icon pack="fas" icon="check"></o-icon>
-      <span>Finish</span>
-    </o-button>
-
-    <o-button variant="warning">
-      <o-icon pack="fas" icon="sync-alt" spin> </o-icon>
-      <span>Refresh</span>
-    </o-button>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Custom icon pack
-
-<p>
-    You can also add it during Oruga import as default config.
-</p>
-
-::: tip
-Take a look at below example code (click on "Show code") to know all internal icons to replace with the releated icons of your custom icon pack
-:::
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-icon pack="ionicons" icon="person" size="small"> </o-icon>
-      <o-icon pack="ionicons" icon="home" size="small"> </o-icon>
-      <o-icon pack="ionicons" icon="apps" size="small"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="ionicons" icon="person"> </o-icon>
-      <o-icon pack="ionicons" icon="home"> </o-icon>
-      <o-icon pack="ionicons" icon="apps"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="ionicons" icon="person" size="medium"> </o-icon>
-      <o-icon pack="ionicons" icon="home" size="medium"> </o-icon>
-      <o-icon pack="ionicons" icon="apps" size="medium"> </o-icon>
-    </div>
-
-    <div class="block">
-      <o-icon pack="ionicons" icon="person" size="large" variant="success"> </o-icon>
-      <o-icon pack="ionicons" icon="home" size="large" variant="info"> </o-icon>
-      <o-icon pack="ionicons" icon="apps" size="large" variant="primary"> </o-icon>
-    </div>
-
-    <o-button variant="primary">
-      <o-icon pack="ionicons" icon="checkmark"></o-icon>
-      <span>Finish</span>
-    </o-button>
-
-    <o-button variant="warning">
-      <o-icon pack="ionicons" icon="checkmark"></o-icon>
-      <span>Finish</span>
-    </o-button>
-
-    <o-button variant="warning">
-      <o-icon spin pack="ionicons" icon="refresh"> </o-icon>
-      <span>Refresh</span>
-    </o-button>
-  </section>
-</template>
-
-<script>
-  const customIconConfig = {
-    iconComponent: undefined,
-    customIconPacks: {
-      ionicons: {
-        sizes: {
-          default: 'is-size-5',
-          small: '',
-          medium: 'is-size-3',
-          large: 'is-size-1'
-        },
-        iconPrefix: 'ion-md-',
-        internalIcons: {
-          check: 'checkmark',
-          information: 'information',
-          alert: 'alert',
-          'alert-circle': 'alert',
-          'arrow-up': 'arrow-up',
-          'chevron-right': 'arrow-forward',
-          'chevron-left': 'arrow-back',
-          'chevron-down': 'arrow-down',
-          eye: 'eye',
-          'eye-off': 'eye-off',
-          'caret-down': 'arrow-dropdown',
-          'caret-up': 'arrow-dropup',
-          loading: 'reload-outline',
-          times: 'close-outline',
-          'close-circle': 'close-circle-outline'
-        }
-      }
-    }
-  }
-  export default {
-    data() {
-      return {
-        docsIcon: undefined
-      }
-    },
-    created() {
-      this.$oruga.config.setOptions(customIconConfig)
-    },
-    beforeCreate() {
-      // only for docs purpose
-      const docsIcon = this.$oruga.config.getOptions().iconComponent
-      if (typeof window !== 'undefined') {
-        window.requestAnimationFrame(() => {
-          this.$oruga.config.setOptions({
-            iconComponent: docsIcon
-          })
-        })
-      }
-    }
-  }
-</script>
-
-<style>
-  @import 'https://unpkg.com/ionicons@4.5.10-0/dist/css/ionicons.min.css';
-</style>
-```
-
-:::
-
-### Override icon pack
-
-<p>
-    You can also customize some properties of the default icon packs. In this example, default sizes for FontAwesome have been modified.
-</p>
-
-```js
-const customIconConfig = {
-  customIconPacks: {
-    fas: {
-      sizes: {
-        default: null,
-        small: null,
-        medium: 'fa-lg',
-        large: 'fa-2x'
-      }
-    }
-  }
-}
-export default {
-  created() {
-    // only for docs purpose, you can set in globally
-    this.$oruga.config.setOptions(customIconConfig)
-  }
-}
-```
-
-### Custom icon component
-
-::: tip
-You can set the `iconComponent` config option to render icons with the vue-fontawesome component (it should work with other Vue icon components as well).
-:::
-
-```js
-import { library } from '@fortawesome/fontawesome-svg-core'
-// internal icons
-import {
-  faCheck,
-  faCheckCircle,
-  faInfoCircle,
-  faExclamationTriangle,
-  faExclamationCircle,
-  faArrowUp,
-  faAngleRight,
-  faAngleLeft,
-  faAngleDown,
-  faEye,
-  faEyeSlash,
-  faCaretDown,
-  faCaretUp
-} from '@fortawesome/free-solid-svg-icons'
-import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
-
-library.add(
-  faCheck,
-  faCheckCircle,
-  faInfoCircle,
-  faExclamationTriangle,
-  faExclamationCircle,
-  faArrowUp,
-  faAngleRight,
-  faAngleLeft,
-  faAngleDown,
-  faEye,
-  faEyeSlash,
-  faCaretDown,
-  faCaretUp
-)
-Vue.component('vue-fontawesome', FontAwesomeIcon)
-
-// ...
-
-import Oruga from '@oruga-ui/oruga'
-Vue.use(Oruga, {
-  iconComponent: 'vue-fontawesome',
-  iconPack: 'fas'
-})
-```
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_icon.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-icon v-bind="s" pack="fas" icon="home"></o-icon>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "clickableClass",
-                    description: "Class of the icon when clickable",
-                    properties: ['clickable'],
-                    action: (cmp) => {
-                        cmp.data.clickable = true;
-                    }
-                },
-                {
-                    class: "spinClass",
-                    description: "Class of the element when spin",
-                    properties: ['spin'],
-                    action: (cmp) => {
-                        cmp.data.spin = true;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description : 'Class of the icon size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = "large";
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the icon variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "warning";
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name   | Description                                                                                                          | Type           | Values                                                                                                                             | Default |
-| ----------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| clickable   | When true makes icon clickable                                                                                       | boolean        | -                                                                                                                                  |         |
-| component   | Icon component name                                                                                                  | string         | -                                                                                                                                  |         |
-| customClass | Add class to icon font, optional. See here for MDI, here for FontAwesome 4 and here for FontAwesome 5 custom classes | string         | -                                                                                                                                  |         |
-| customSize  | Overrides icon font size, optional                                                                                   | string         | `Depends on library: null (smallest)`, `fa-lg`, `fa-2x`, `fa-3x`, `fa-4x`, `fa-5x`, `mdi-18px`, `mdi-24px`, `mdi-36px`, `mdi-48px` |         |
-| icon        | Icon name                                                                                                            | string         | -                                                                                                                                  |         |
-| override    | Override classes                                                                                                     | boolean        | -                                                                                                                                  | false   |
-| pack        | Icon pack to use                                                                                                     | string         | `mdi`, `fa`, `fas and any other custom icon pack`                                                                                  |         |
-| rotation    | Rotation 0-360                                                                                                       | number\|string | -                                                                                                                                  |         |
-| size        | Icon size, optional                                                                                                  | string         | `small`, `medium`, `large`                                                                                                         |         |
-| spin        | Enable spin effect on icon                                                                                           | boolean        | -                                                                                                                                  |         |
-| variant     | Color of the icon, optional                                                                                          | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color`                                                    |         |
-
-## Style
-
-| CSS Variable               | SASS Variable        | Default |
-| -------------------------- | -------------------- | ------- |
-| --oruga-icon-spin-duration | \$icon-spin-duration | 2s      |
diff --git a/packages/docs/components/Input.md b/packages/docs/components/Input.md
deleted file mode 100644
index 7e207d72e..000000000
--- a/packages/docs/components/Input.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-title: Input
----
-
-# Input
-
-> Get user Input. Use with Field to access all functionalities
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/input/examples/Input.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Name">
-      <o-input v-model="name"></o-input>
-    </o-field>
-
-    <o-field label="Email" variant="danger" message="This email is invalid">
-      <o-input type="email" value="john@" maxlength="30"> </o-input>
-    </o-field>
-
-    <o-field label="Username" variant="success" message="This username is available">
-      <o-input value="johnsilver" maxlength="30"></o-input>
-    </o-field>
-
-    <o-field label="Password">
-      <o-input type="password" value="iwantmytreasure" password-reveal> </o-input>
-    </o-field>
-
-    <o-field label="Message">
-      <o-input maxlength="200" type="textarea"></o-input>
-    </o-field>
-
-    <o-field>
-      <o-input placeholder="No label"></o-input>
-    </o-field>
-
-    <o-field label="Rounded">
-      <o-input placeholder="No label" rounded></o-input>
-    </o-field>
-
-    <o-field label="Success" variant="success">
-      <o-input placeholder="Success"></o-input>
-    </o-field>
-
-    <o-field label="Error" variant="danger" message="You can have a message too">
-      <o-input placeholder="Error"></o-input>
-    </o-field>
-
-    <o-field label="Info" variant="info">
-      <o-input placeholder="Info"></o-input>
-    </o-field>
-
-    <o-field label="Warning" variant="warning">
-      <o-input placeholder="Warning"></o-input>
-    </o-field>
-
-    <o-field label="Disabled">
-      <o-input placeholder="Disabled" disabled></o-input>
-    </o-field>
-
-    <o-field>
-      <o-input placeholder="Large" size="large" icon="user"> </o-input>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        name: 'John Silver'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <h3 class="subtitle">With Icons</h3>
-    <o-field>
-      <o-input placeholder="Search..." type="search" icon="search" icon-clickable @icon-click="searchIconClick"> </o-input>
-    </o-field>
-
-    <o-field>
-      <o-input placeholder="Email" v-model="email" type="email" icon="envelope" icon-right="times-circle" icon-right-clickable @icon-right-click="clearIconClick"> </o-input>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        email: ''
-      }
-    },
-    methods: {
-      searchIconClick() {
-        alert('You wanna make a search?')
-      },
-      clearIconClick() {
-        this.email = ''
-        alert('Email cleared!')
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_input.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field :variant="s.fieldvariant">
-                    <o-input v-bind="s" placeholder="Input"></o-input>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of input when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "iconLeftSpaceClass",
-                    description: "Class of the left icon space inside the input",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                    }
-                },
-                {
-                    class: "iconRightSpaceClass",
-                    description: "Class of the right icon space inside the input",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                    }
-                },
-                {
-                    class: "inputClass",
-                    description: "Class of the native input element"
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of input when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    }
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the left icon",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                    }
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the right icon",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                    }
-                },
-                {
-                    class: "counterClass",
-                    description: "Class of the counter element",
-                    properties: ['hasCounter', 'maxlength'],
-                    action: (cmp) => {
-                        cmp.data.hasCounter = true;
-                        cmp.data.maxlength = 10;
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                    }
-                },
-               {
-                    class: "sizeClass",
-                    description : 'Class of the input size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = "large";
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the input variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    warning: "Variant property should be applied to the wrapping field",
-                    action: (cmp) => {
-                        cmp.data.fieldvariant = "warning";
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name          | Description                                                 | Type           | Values                                                                          | Default                                                                                                                                  |
-| ------------------ | ----------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
-| autocomplete       | Native options to use in HTML5 validation                   | string         | -                                                                               |                                                                                                                                          |
-| autosize           | Automatically adjust height in textarea                     | boolean        | -                                                                               | false                                                                                                                                    |
-| clearable          | Add a button/icon to clear the inputed text                 | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> input: {<br>&nbsp;&nbsp;clearable: false<br>}</code>    |
-| clearIcon          | Icon name to be added on the clear button                   | string         | -                                  | 'close-circle'                             |
-| expanded           | Makes input full width when inside a grouped or addon field | boolean        | -                                                                               |                                                                                                                                          |
-| hasCounter         | Show character counter when maxlength prop is passed        | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> input: {<br>&nbsp;&nbsp;counter: false<br>}</code>      |
-| icon               | Icon name to be added                                       | string         | -                                                                               |                                                                                                                                          |
-| iconClickable      | Makes the icon clickable                                    | boolean        | -                                                                               |                                                                                                                                          |
-| iconPack           | Icon pack to use                                            | string         | `mdi`, `fa`, `fas and any other custom icon pack`                               |                                                                                                                                          |
-| iconRight          | Icon name to be added on the right side                     | string         | -                                                                               |                                                                                                                                          |
-| iconRightClickable | Make the icon right clickable                               | boolean        | -                                                                               |                                                                                                                                          |
-| iconRightVariant   | Variant of right icon                                       | string         | -                                                                               |                                                                                                                                          |
-| maxlength          | Same as native maxlength, plus character counter            | number\|string | -                                                                               |                                                                                                                                          |
-| override           | Override classes                                            | boolean        | -                                                                               | false                                                                                                                                    |
-| passwordReveal     | Adds the reveal password functionality                      | boolean        | -                                                                               |                                                                                                                                          |
-| rounded            | Makes the element rounded                                   | boolean        | -                                                                               |                                                                                                                                          |
-| size               | Vertical size of input, optional                            | string         | `small`, `medium`, `large`                                                      |                                                                                                                                          |
-| statusIcon         | Show status icon using field and variant prop               | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>         |
-| type               | Input type, like native                                     | string         | `Any native input type`, `and textarea`                                         | 'text'                                                                                                                                   |
-| useHtml5Validation | Enable html 5 native validation                             | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code> |
-| v-model            |                                                             | number\|string | -                                                                               |                                                                                                                                          |
-| validationMessage  | The message which is shown when a validation error occurs   | string         | -                                                                               |                                                                                                                                          |
-| variant            | Color of the control, optional                              | string         | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                          |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| blur       |            |
-| focus      |            |
-| invalid    |            |
-| input      |            |
-
-## Style
-
-| CSS Variable                        | SASS Variable                 | Default                                               |
-| ----------------------------------- | ----------------------------- | ----------------------------------------------------- |
-| --oruga-input-background-color      | \$input-background-color      | #ffffff                                               |
-| --oruga-input-border-color          | \$input-border-color          | \$grey-lighter                                        |
-| --oruga-input-border-style          | \$input-border-style          | solid                                                 |
-| --oruga-input-border-width          | \$input-border-width          | 1px                                                   |
-| --oruga-input-border-radius         | \$input-border-radius         | \$base-border-radius                                  |
-| --oruga-input-rounded-border-radius | \$input-rounded-border-radius | \$base-rounded-border-radius                          |
-| --oruga-input-box-shadow            | \$input-box-shadow            | inset 0 1px 2px hsla(0,0%,4%,.1)                      |
-| --oruga-input-color                 | \$input-color                 | #363636                                               |
-| --oruga-input-icon-zindex           | \$input-icon-zindex           | 4                                                     |
-| --oruga-input-counter-font-size     | \$input-counter-font-size     | .75rem                                                |
-| --oruga-input-counter-margin        | \$input-counter-margin        | .25rem 0 0 .5rem                                      |
-| --oruga-input-height                | \$input-height                | \$control-height                                      |
-| --oruga-input-line-height           | \$input-line-height           | \$base-line-height                                    |
-| --oruga-input-margin                | \$input-margin                | 0                                                     |
-| --oruga-input-padding               | \$input-padding               | $control-padding-vertical $control-padding-horizontal |
-| --oruga-input-textarea-max-height   | \$input-textarea-max-height   | 600px                                                 |
-| --oruga-input-textarea-min-height   | \$input-textarea-min-height   | 120px                                                 |
-| --oruga-input-textarea-padding      | \$input-textarea-padding      | 0.625em                                               |
-| --oruga-input-width                 | \$input-width                 | 100%                                                  |
-| --oruga-input-max-width             | \$input-max-width             | 100%                                                  |
diff --git a/packages/docs/components/Inputitems.md b/packages/docs/components/Inputitems.md
deleted file mode 100644
index 0b8cc9521..000000000
--- a/packages/docs/components/Inputitems.md
+++ /dev/null
@@ -1,494 +0,0 @@
----
-title: Inputitems
----
-
-# Inputitems
-
-> A simple item input field that can have autocomplete functionality
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/inputitems/examples/Inputitems.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Add some items">
-      <o-inputitems v-model="tags" icon="tag" placeholder="Add an item" aria-close-label="Delete this item"> </o-inputitems>
-    </o-field>
-    <p class="content"><b>Items:</b> {{ tags }}</p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        tags: ['Pistoia', 'Valdinievole']
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Autocomplete
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-switch v-model="allowNew">
-        Allow new items
-      </o-switch>
-      <o-switch v-model="openOnFocus">
-        Open on focus
-      </o-switch>
-    </div>
-    <o-field label="Enter some items">
-      <o-inputitems
-        v-model="tags"
-        :data="filteredTags"
-        autocomplete
-        :allow-new="allowNew"
-        :open-on-focus="openOnFocus"
-        field="user.first_name"
-        icon="tag"
-        placeholder="Add an item"
-        @typing="getFilteredTags"
-      >
-      </o-inputitems>
-    </o-field>
-    <p class="content"><b>Items:</b> {{ tags }}</p>
-  </section>
-</template>
-
-<script>
-  const data = [
-    { id: 1, user: { first_name: 'Jesse', last_name: 'Simmons' }, date: '2016/10/15 13:43:27', gender: 'Male' },
-    { id: 2, user: { first_name: 'John', last_name: 'Jacobs' }, date: '2016/12/15 06:00:53', gender: 'Male' },
-    { id: 3, user: { first_name: 'Tina', last_name: 'Gilbert' }, date: '2016/04/26 06:26:28', gender: 'Female' },
-    { id: 4, user: { first_name: 'Clarence', last_name: 'Flores' }, date: '2016/04/10 10:28:46', gender: 'Male' },
-    { id: 5, user: { first_name: 'Anne', last_name: 'Lee' }, date: '2016/12/06 14:38:38', gender: 'Female' },
-    { id: 6, user: { first_name: 'Sara', last_name: 'Armstrong' }, date: '2016/09/23 18:50:04', gender: 'Female' },
-    { id: 7, user: { first_name: 'Anthony', last_name: 'Webb' }, date: '2016/08/30 23:49:38', gender: 'Male' },
-    { id: 8, user: { first_name: 'Andrew', last_name: 'Greene' }, date: '2016/11/20 14:57:47', gender: 'Male' },
-    { id: 9, user: { first_name: 'Russell', last_name: 'White' }, date: '2016/07/13 09:29:49', gender: 'Male' },
-    { id: 10, user: { first_name: 'Lori', last_name: 'Hunter' }, date: '2016/12/09 01:44:05', gender: 'Female' },
-    { id: 11, user: { first_name: 'Ronald', last_name: 'Wood' }, date: '2016/12/04 02:23:48', gender: 'Male' },
-    { id: 12, user: { first_name: 'Michael', last_name: 'Harper' }, date: '2016/07/27 13:28:15', gender: 'Male' },
-    { id: 13, user: { first_name: 'George', last_name: 'Dunn' }, date: '2017/03/07 12:26:52', gender: 'Male' },
-    { id: 14, user: { first_name: 'Eric', last_name: 'Rogers' }, date: '2016/06/07 05:41:52', gender: 'Male' },
-    { id: 15, user: { first_name: 'Juan', last_name: 'Meyer' }, date: '2017/02/01 04:56:34', gender: 'Male' },
-    { id: 16, user: { first_name: 'Silvia', last_name: 'Rosa' }, date: '2017/01/26 11:50:04', gender: 'Female' },
-    { id: 17, user: { first_name: 'Lori', last_name: 'Cunningham' }, date: '2016/05/01 10:00:56', gender: 'Female' },
-    { id: 18, user: { first_name: 'Charles', last_name: 'Graham' }, date: '2016/05/31 06:43:30', gender: 'Male' },
-    { id: 19, user: { first_name: 'Henry', last_name: 'Morrison' }, date: '2016/09/27 16:15:44', gender: 'Male' },
-    { id: 20, user: { first_name: 'Albert', last_name: 'Mendoza' }, date: '2016/08/08 05:29:24', gender: 'Male' },
-    { id: 21, user: { first_name: 'Ruby', last_name: 'Snyder' }, date: '2017/04/01 12:04:39', gender: 'Female' },
-    { id: 22, user: { first_name: 'Jesse', last_name: 'Warren' }, date: '2016/08/20 01:36:38', gender: 'Male' },
-    { id: 23, user: { first_name: 'Carlos', last_name: 'Ferguson' }, date: '2016/05/31 10:40:29', gender: 'Male' },
-    { id: 24, user: { first_name: 'Melissa', last_name: 'Peters' }, date: '2016/07/23 00:41:54', gender: 'Female' },
-    { id: 25, user: { first_name: 'Arthur', last_name: 'Garza' }, date: '2017/03/11 14:11:37', gender: 'Male' },
-    { id: 26, user: { first_name: 'Joe', last_name: 'Berry' }, date: '2016/07/09 15:16:56', gender: 'Male' },
-    { id: 27, user: { first_name: 'Joseph', last_name: 'Bishop' }, date: '2016/10/04 19:44:54', gender: 'Male' },
-    { id: 28, user: { first_name: 'Sarah', last_name: 'Harper' }, date: '2016/09/23 05:09:11', gender: 'Female' },
-    { id: 29, user: { first_name: 'Christopher', last_name: 'Fuller' }, date: '2016/04/12 00:05:35', gender: 'Male' },
-    { id: 30, user: { first_name: 'Alan', last_name: 'Mendoza' }, date: '2016/04/22 10:48:02', gender: 'Male' },
-    { id: 31, user: { first_name: 'James', last_name: 'Davis' }, date: '2017/01/16 15:17:03', gender: 'Male' },
-    { id: 32, user: { first_name: 'Scott', last_name: 'Welch' }, date: '2016/10/04 23:31:51', gender: 'Male' },
-    { id: 33, user: { first_name: 'Mildred', last_name: 'Myers' }, date: '2016/11/23 13:46:18', gender: 'Female' },
-    { id: 34, user: { first_name: 'Victor', last_name: 'Martinez' }, date: '2016/04/06 17:05:07', gender: 'Male' },
-    { id: 35, user: { first_name: 'Susan', last_name: 'Medina' }, date: '2016/12/09 10:33:37', gender: 'Female' },
-    { id: 36, user: { first_name: 'Judy', last_name: 'Long' }, date: '2016/07/26 16:19:04', gender: 'Female' },
-    { id: 37, user: { first_name: 'Joan', last_name: 'Myers' }, date: '2016/09/22 04:55:54', gender: 'Female' },
-    { id: 38, user: { first_name: 'Rachel', last_name: 'Gonzales' }, date: '2016/07/15 13:56:38', gender: 'Female' },
-    { id: 39, user: { first_name: 'Roger', last_name: 'Hunt' }, date: '2016/08/14 10:43:11', gender: 'Male' },
-    { id: 40, user: { first_name: 'Dorothy', last_name: 'Howard' }, date: '2016/06/19 05:34:49', gender: 'Female' },
-    { id: 41, user: { first_name: 'Eugene', last_name: 'Lynch' }, date: '2016/12/24 08:19:24', gender: 'Male' },
-    { id: 42, user: { first_name: 'Kathy', last_name: 'Webb' }, date: '2017/04/01 21:09:05', gender: 'Female' },
-    { id: 43, user: { first_name: 'Antonio', last_name: 'White' }, date: '2017/02/10 06:51:20', gender: 'Male' },
-    { id: 44, user: { first_name: 'Louis', last_name: 'Spencer' }, date: '2016/10/08 02:20:22', gender: 'Male' },
-    { id: 45, user: { first_name: 'Andrea', last_name: 'Marshall' }, date: '2016/09/04 10:59:57', gender: 'Female' },
-    { id: 46, user: { first_name: 'Eugene', last_name: 'Sims' }, date: '2017/03/15 06:39:48', gender: 'Male' },
-    { id: 47, user: { first_name: 'Mildred', last_name: 'Gibson' }, date: '2016/04/18 06:43:54', gender: 'Female' },
-    { id: 48, user: { first_name: 'Joan', last_name: 'Arnold' }, date: '2016/12/16 04:52:23', gender: 'Female' },
-    { id: 49, user: { first_name: 'Jesse', last_name: 'Schmidt' }, date: '2016/06/11 02:44:33', gender: 'Male' },
-    { id: 50, user: { first_name: 'David', last_name: 'Frazier' }, date: '2017/02/15 21:46:30', gender: 'Male' },
-    { id: 51, user: { first_name: 'Nicholas', last_name: 'Howell' }, date: '2016/11/01 15:08:31', gender: 'Male' },
-    { id: 52, user: { first_name: 'Douglas', last_name: 'Chapman' }, date: '2017/02/08 03:33:24', gender: 'Male' },
-    { id: 53, user: { first_name: 'Bruce', last_name: 'Simmons' }, date: '2016/07/14 12:11:17', gender: 'Male' },
-    { id: 54, user: { first_name: 'Antonio', last_name: 'George' }, date: '2016/11/07 19:12:55', gender: 'Male' },
-    { id: 55, user: { first_name: 'Chris', last_name: 'Marshall' }, date: '2016/07/03 12:11:45', gender: 'Male' },
-    { id: 56, user: { first_name: 'Ashley', last_name: 'Hudson' }, date: '2016/10/14 21:08:05', gender: 'Female' },
-    { id: 57, user: { first_name: 'Alan', last_name: 'Edwards' }, date: '2017/03/22 21:10:25', gender: 'Male' },
-    { id: 58, user: { first_name: 'George', last_name: 'Clark' }, date: '2016/04/28 03:15:05', gender: 'Male' },
-    { id: 59, user: { first_name: 'Frank', last_name: 'Porter' }, date: '2016/09/08 00:48:14', gender: 'Male' },
-    { id: 60, user: { first_name: 'Christopher', last_name: 'Palmer' }, date: '2016/05/24 08:58:12', gender: 'Male' }
-  ]
-
-  export default {
-    data() {
-      return {
-        filteredTags: data,
-        tags: [],
-        allowNew: false,
-        openOnFocus: false
-      }
-    },
-    methods: {
-      getFilteredTags(text) {
-        this.filteredTags = data.filter(option => {
-          return (
-            option.user.first_name
-              .toString()
-              .toLowerCase()
-              .indexOf(text.toLowerCase()) >= 0
-          )
-        })
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Custom selected
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Enter some items">
-      <o-inputitems v-model="items" ref="input" icon="tag" placeholder="Add an item">
-        <template #selected="{ items }">
-          <o-button native-type="button" v-for="(item, index) in items" :key="index" :variant="getType(item)" rounded @click="$refs.input.removeItem(index, $event)">
-            {{ item }}
-          </o-button>
-        </template>
-      </o-inputitems>
-    </o-field>
-    <p class="content"><b>Items:</b> {{ items }}</p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        items: []
-      }
-    },
-    methods: {
-      getType(item) {
-        const random = 'Z'.charCodeAt(0) - item.toUpperCase().charCodeAt(0)
-        if (random >= 1 && random < 5) {
-          return 'primary'
-        } else if (random >= 6 && random < 10) {
-          return 'danger'
-        } else if (random >= 11 && random < 15) {
-          return 'warning'
-        } else if (random >= 15 && random < 20) {
-          return 'success'
-        } else if (random >= 20 && random < 25) {
-          return 'info'
-        }
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Limits
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Limited to 10 characters">
-      <o-inputitems maxlength="10" :value="['Oruga', 'Vue', 'CSS']"> </o-inputitems>
-    </o-field>
-
-    <o-field label="Limited to 5 tags">
-      <o-inputitems maxitems="5" :value="['One', 'Two', 'Three', 'Four']"> </o-inputitems>
-    </o-field>
-
-    <o-field label="Limited to 10 characters and 5 tags">
-      <o-inputitems maxlength="10" maxitems="5" :value="['Red', 'Green', 'Blue', 'White']"> </o-inputitems>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_inputitems.scss)
-
-<br />
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-inputitems
-                    v-bind="s"
-                    v-model="tags"
-                    :data="filteredTags"
-                    autocomplete
-                    field="user.first_name"
-                    icon="tag"
-                    placeholder="Add a tag"
-                    @typing="getFilteredTags">
-                </o-inputitems>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-
- const data = [
-    {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"},
-    {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"},
-    {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"},
-    {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"},
-    {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"},
-    {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"},
-    {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"},
-    {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"},
-    {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"},
-    {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"},
-    {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"},
-    {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"},
-    {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"},
-    {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"},
-    {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"},
-    {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"},
-    {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"},
-    {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"},
-    {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"},
-    {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"},
-    {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"},
-    {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"},
-    {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"},
-    {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"},
-    {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"},
-    {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"},
-    {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"},
-    {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"},
-    {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"},
-    {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"},
-    {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"},
-    {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"},
-    {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"},
-    {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"},
-    {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"},
-    {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"},
-    {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"},
-    {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"},
-    {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"},
-    {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"},
-    {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"},
-    {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"},
-    {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"},
-    {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"},
-    {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"},
-    {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"},
-    {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"},
-    {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"},
-    {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"},
-    {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"},
-    {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"},
-    {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"},
-    {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"},
-    {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"},
-    {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"},
-    {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"},
-    {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"},
-    {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"},
-    {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"},
-    {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"}
-]
-
-export default {
-    data() {
-        return {
-            filteredTags: data,
-            tags: [ data[1] ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of input when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the entered item"
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the entered item variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-                {
-                    class: "closeClass",
-                    properties: ["closable"],
-                    description: "Class of the close button of entered item",
-                    action: (cmp) => {
-                        cmp.data.closable = true;
-                    }
-                },
-                {
-                    class: "counterClass",
-                    description: "Class of the counter element",
-                    properties: ['hasCounter', 'maxitems'],
-                    action: (cmp) => {
-                        cmp.data.hasCounter = true;
-                        cmp.data.maxitems = 5;
-                    }
-                },
-                {
-                    class: "autocompleteClasses",
-                    realClass: "autocompleteClasses.inputClass",
-                    description: "Classes to apply on internal autocomplete.",
-                    componentRef: "Autocomplete"
-                },
-            ],
-        };
-    },
-      methods: {
-        getFilteredTags(text) {
-            this.filteredTags = data.filter((option) => {
-                return option.user.first_name
-                    .toString()
-                    .toLowerCase()
-                    .indexOf(text.toLowerCase()) >= 0
-            })
-        }
-    }
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name           | Description                                                                                                                                                          | Type           | Values                                                                          | Default                                                                                                                                                      |
-| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| allowDuplicates     | Allows adding the same item multiple time                                                                                                                            | boolean        | -                                                                               | false                                                                                                                                                        |
-| allowNew            | When autocomplete, it allow to add new items                                                                                                                         | boolean        | -                                                                               |                                                                                                                                                              |
-| appendToBody        | Append autocomplete content to body                                                                                                                                  | boolean        | -                                                                               |                                                                                                                                                              |
-| ariaCloseLabel      | Accessibility label for the close button                                                                                                                             | string         | -                                                                               |                                                                                                                                                              |
-| autocomplete        | Add autocomplete feature (if true, any Autocomplete props may be used too)                                                                                           | boolean        | -                                                                               |                                                                                                                                                              |
-| beforeAdding        | Function to validate the value of the item before adding                                                                                                             | func           | -                                                                               | Default function (see source code)                                                                                                                           |
-| checkInfiniteScroll | Makes the autocomplete component check if list reached scroll end and emit infinite-scroll event                                                                     | boolean        | -                                                                               | false                                                                                                                                                        |
-| closable            | Add close/delete button to the item                                                                                                                                  | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;closable: true<br>}</code>                     |
-| closeIcon           | Icon name of close icon on selected item                                                                                                                             | string         | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;closeIcon: 'close'<br>}</code>                 |
-| confirmKeys         | Array of keys<br>(https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)<br>which will add a item when typing (default comma, tab and enter) | array          | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;confirmKeys: [',', 'Tab', 'Enter']<br>}</code> |
-| createItem          | Function to create a new item to push into v-model (items)                                                                                                           | func           | -                                                                               | Default function (see source code)                                                                                                                           |
-| data                | Items data                                                                                                                                                           | array          | -                                                                               | []                                                                                                                                                           |
-| disabled            | Input will be disabled                                                                                                                                               | boolean        | -                                                                               |                                                                                                                                                              |
-| expanded            | Makes input full width when inside a grouped or addon field                                                                                                          | boolean        | -                                                                               |                                                                                                                                                              |
-| field               | Property of the object (if data is array of objects) to use as display text                                                                                          | string         | -                                                                               | 'value'                                                                                                                                                      |
-| groupField          | Property of the object (if data is array of objects) to use as display text of group                                                                                 | string         | -                                                                               |                                                                                                                                                              |
-| groupOptions        | Property of the object (if data is array of objects) to use as key to get items array of each group, optional                                                        | string         | -                                                                               |                                                                                                                                                              |
-| hasCounter          | Show counter when maxlength or maxtags props are passed                                                                                                              | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;hasCounter: true<br>}</code>                   |
-| icon                | Icon name to be added                                                                                                                                                | string         | -                                                                               |                                                                                                                                                              |
-| iconPack            | Icon pack to use                                                                                                                                                     | string         | `mdi`, `fa`, `fas and any other custom icon pack`                               |                                                                                                                                                              |
-| keepFirst           | The first option will always be pre-selected (easier to just hit enter or tab)                                                                                       | boolean        | -                                                                               |                                                                                                                                                              |
-| maxitems            | Limits the number of items, plus item counter                                                                                                                        | number\|string | -                                                                               |                                                                                                                                                              |
-| maxlength           | Same as native maxlength, plus character counter                                                                                                                     | number\|string | -                                                                               |                                                                                                                                                              |
-| nativeAutocomplete  |                                                                                                                                                                      | string         | -                                                                               |                                                                                                                                                              |
-| onPasteSeparators   | Array of chars used to split when pasting a new string                                                                                                               | array          | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;onPasteSeparators: [',']<br>}</code>           |
-| openOnFocus         | Opens a dropdown with choices when the input field is focused                                                                                                        | boolean        | -                                                                               |                                                                                                                                                              |
-| override            | Override classes                                                                                                                                                     | boolean        | -                                                                               | false                                                                                                                                                        |
-| removeOnKeys        | Allow removing last item when pressing given keys, if input is empty                                                                                                 | array          | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br>&nbsp;&nbsp;removeOnKeys: ['Backspace']<br>}</code>        |
-| rounded             | Makes the element rounded                                                                                                                                            | boolean        | -                                                                               |                                                                                                                                                              |
-| statusIcon          | Show status icon using field and variant prop                                                                                                                        | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>                             |
-| useHtml5Validation  | Enable html 5 native validation                                                                                                                                      | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code>                     |
-| v-model             |                                                                                                                                                                      | array          | -                                                                               | []                                                                                                                                                           |
-| validationMessage   | The message which is shown when a validation error occurs                                                                                                            | string         | -                                                                               |                                                                                                                                                              |
-| variant             | Color of the each items, optional                                                                                                                                    | string         | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                                              |
-
-## Events
-
-| Event name       | Properties | Description |
-| ---------------- | ---------- | ----------- |
-| infinite-scroll  |            |
-| icon-right-click |            |
-| blur             |            |
-| focus            |            |
-| invalid          |            |
-| input            |            |
-| add              |            |
-| typing           |            |
-| remove           |            |
-
-## Slots
-
-| Name     | Description | Bindings |
-| -------- | ----------- | -------- |
-| selected |             |          |
-| header   |             |          |
-| default  |             | <br>     |
-| empty    |             |          |
-| footer   |             |          |
-
-## Style
-
-| CSS Variable                             | SASS Variable                      | Default                          |
-| ---------------------------------------- | ---------------------------------- | -------------------------------- |
-| --oruga-inputitems-background-color      | \$inputitems-background-color      | \$input-background-color         |
-| --oruga-inputitems-height                | \$inputitems-height                | calc(2em - 1px)                  |
-| --oruga-inputitems-padding               | \$inputitems-padding               | calc(.275em - 1px) 0 0           |
-| --oruga-inputitems-border-color          | \$inputitems-border-color          | \$grey-lighter                   |
-| --oruga-inputitems-border-style          | \$inputitems-border-style          | solid                            |
-| --oruga-inputitems-border-width          | \$inputitems-border-width          | 1px                              |
-| --oruga-inputitems-border-radius         | \$inputitems-border-radius         | \$base-border-radius             |
-| --oruga-inputitems-color                 | \$inputitems-color                 | #363636                          |
-| --oruga-inputitems-line-height           | \$inputitems-line-height           | \$base-line-height               |
-| --oruga-inputitems-box-shadow            | \$inputitems-box-shadow            | inset 0 1px 2px hsla(0,0%,4%,.1) |
-| --oruga-inputitems-max-width             | \$inputitems-max-width             | 100%                             |
-| --oruga-inputitems-width                 | \$inputitems-width                 | 100%                             |
-| --oruga-inputitems-counter-font-size     | \$inputitems-counter-font-size     | .75rem                           |
-| --oruga-inputitems-counter-margin        | \$inputitems-counter-margin        | .25rem 0 0 .5rem                 |
-| --oruga-inputitems-item-background-color | \$inputitems-item-background-color | \$primary                        |
-| --oruga-inputitems-item-color            | \$inputitems-item-color            | \$primary-invert                 |
-| --oruga-inputitems-item-border-radius    | \$inputitems-item-border-radius    | \$base-border-radius             |
-| --oruga-inputitems-item-margin           | \$inputitems-item-margin           | 0 0 0 0.275em                    |
-| --oruga-inputitems-item-padding          | \$inputitems-item-padding          | 0 .75em 0 .75em                  |
-| --oruga-inputitems-margin-icon-to-text   | \$inputitems-margin-icon-to-text   | .1875em                          |
diff --git a/packages/docs/components/Loading.md b/packages/docs/components/Loading.md
deleted file mode 100644
index bdc5af97b..000000000
--- a/packages/docs/components/Loading.md
+++ /dev/null
@@ -1,336 +0,0 @@
----
-title: Loading
----
-
-# Loading
-
-> A simple loading overlay
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/loading/examples/Loading.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-button size="medium" variant="primary" @click="openLoading">
-        Launch loading
-      </o-button>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-    </o-field>
-    <p style="position: relative">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-      <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"></o-loading>
-    </p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isLoading: false,
-        isFullPage: true
-      }
-    },
-    methods: {
-      openLoading() {
-        this.isLoading = true
-        setTimeout(() => {
-          this.isLoading = false
-        }, 10 * 1000)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Slot
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-button size="medium" variant="primary" @click="openLoading">
-        Launch loading
-      </o-button>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-    </o-field>
-    <p style="position: relative">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-      <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true">
-        <o-icon pack="fas" icon="sync-alt" size="large" spin> </o-icon>
-      </o-loading>
-    </p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isLoading: false,
-        isFullPage: true
-      }
-    },
-    methods: {
-      openLoading() {
-        this.isLoading = true
-        setTimeout(() => {
-          this.isLoading = false
-        }, 10 * 1000)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Programmatically
-
-::: demo
-
-```html
-<template>
-  <div>
-    <o-field>
-      <o-button size="medium" variant="primary" @click="openLoading">
-        Launch loading
-      </o-button>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-    </o-field>
-    <p style="position: relative" ref="element">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </p>
-  </div>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isFullPage: true
-      }
-    },
-    methods: {
-      openLoading() {
-        const loadingComponent = this.$oruga.loading.open({
-          fullPage: this.isFullPage,
-          container: this.isFullPage ? null : this.$refs.element
-        })
-        setTimeout(() => loadingComponent.close(), 3 * 1000)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Programmatically (with promise)
-
-::: demo
-
-```html
-<template>
-  <div>
-    <o-field>
-      <div class="buttons">
-        <o-button size="medium" variant="primary" @click="openLoading">
-          Launch loading
-        </o-button>
-        <o-button size="medium" variant="primary" @click="openLoadingCloseAll">
-          Launch loading (closeAll)
-        </o-button>
-      </div>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-    </o-field>
-    <p style="position: relative" ref="element">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </p>
-  </div>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isFullPage: true
-      }
-    },
-    methods: {
-      async openLoading() {
-        const loadingComponent = this.$oruga.loading.open({
-          fullPage: this.isFullPage,
-          container: this.isFullPage ? null : this.$refs.element,
-          canCancel: true
-        })
-        setTimeout(() => loadingComponent.close({ action: 'cancel', method: 'timeout' }), 3 * 1000)
-        // Note utilizing the promise requires Promise be supported by the browser
-        // If you are running Vue 2 on IE 11 this will not be the case unless you
-        // add a polyfill in your build.
-        const ret = await loadingComponent.promise
-        this.$oruga.notification.open({
-          duration: 2000,
-          message: 'Loading returned ' + JSON.stringify(ret),
-          variant: 'info',
-          position: 'top'
-        })
-      },
-      async openLoadingCloseAll() {
-        const loadingComponent = this.$oruga.loading.open({
-          fullPage: this.isFullPage,
-          container: this.isFullPage ? null : this.$refs.element,
-          canCancel: true
-        })
-        setTimeout(() => this.$oruga.loading.closeAll({ action: 'cancel', method: 'closeAll' }), 3 * 1000)
-        // Note utilizing the promise requires Promise be supported by the browser
-        // If you are running Vue 2 on IE 11 this will not be the case unless you
-        // add a polyfill in your build.
-        const ret = await loadingComponent.promise
-        this.$oruga.notification.open({
-          duration: 2000,
-          message: 'Loading returned ' + JSON.stringify(ret),
-          variant: 'info',
-          position: 'top'
-        })
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_loading.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <p style="position: relative">
-                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-                    <o-loading v-bind="s" icon="sync-alt" :active.sync="loading" :iconSpin="true">
-                    </o-loading>
-                </p>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            loading: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the loading overlay",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "iconClass",
-                    description: "Class for the loading icon",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "fullPageClass",
-                    description: "Class for the root element when fullpage",
-                    properties: ['fullPage'],
-                    action: (cmp) => {
-                        cmp.data.fullPage = true;
-                        cmp.data.canCancel = true;
-                        this.loading = true;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name | Description                                                                                                             | Type                      | Values | Default                                                                                                                                  |
-| --------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
-| active    | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean                   | -      |                                                                                                                                          |
-| animation |                                                                                                                         | string                    | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> loading: {<br>&nbsp;&nbsp;animation: 'fade'<br>}</code> |
-| canCancel | Can close Loading by pressing escape or clicking outside                                                                | boolean                   | -      | false                                                                                                                                    |
-| container |                                                                                                                         | object\|func\|HTMLElement | -      |                                                                                                                                          |
-| fullPage  | Loader will overlay the full page                                                                                       | boolean                   | -      | true                                                                                                                                     |
-| icon      | Icon name                                                                                                               | string                    | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> loading: {<br>&nbsp;&nbsp;icon: 'loading'<br>}</code>   |
-| iconSize  |                                                                                                                         | string                    | -      | 'medium'                                                                                                                                 |
-| iconSpin  | Enable spin effect on icon                                                                                              | boolean                   | -      | true                                                                                                                                     |
-| onCancel  | Callback function to call after user canceled (pressed escape / clicked outside)                                        | func                      | -      | Default function (see source code)                                                                                                       |
-| overlay   |                                                                                                                         | boolean                   | -      | true                                                                                                                                     |
-| override  | Override classes                                                                                                        | boolean                   | -      | false                                                                                                                                    |
-
-## Events
-
-| Event name       | Properties | Description |
-| ---------------- | ---------- | ----------- |
-| close            |            |
-| update:active    |            |
-| update:full-page |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                    | SASS Variable             | Default               |
-| ------------------------------- | ------------------------- | --------------------- |
-| --oruga-loading-overlay-legacy  | \$loading-overlay-legacy  | #7f7f7f               |
-| --oruga-loading-overlay         | \$loading-overlay         | rgba(255,255,255,0.5) |
-| --oruga-loading-zindex          | \$loading-zindex          | 29                    |
-| --oruga-loading-fullpage-zindex | \$loading-fullpage-zindex | 999                   |
diff --git a/packages/docs/components/Menu.md b/packages/docs/components/Menu.md
deleted file mode 100644
index 27bcac5e1..000000000
--- a/packages/docs/components/Menu.md
+++ /dev/null
@@ -1,176 +0,0 @@
----
-title: Menu
----
-
-# Menu
-
-> A simple vertical menu
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/menu/examples/Menu.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-    <o-menu>
-        <o-menu-list label="Menu">
-            <o-menu-item icon="info-circle" label="Info"></o-menu-item>
-            <o-menu-item icon="cog" :active="isActive" expanded>
-                <template #label="props">
-                    Administrator
-                    <o-icon class="is-pulled-right" :icon="props.expanded ? 'chevron-up' : 'chevron-down'"></o-icon>
-                </template>
-                <o-menu-item icon="user" label="Users"></o-menu-item>
-                <o-menu-item icon="mobile">
-                    <template #label>
-                        Devices
-                    </template>
-                </o-menu-item>
-                <o-menu-item icon="money-bill" label="Payments" disabled></o-menu-item>
-            </o-menu-item>
-            <o-menu-item icon="user" label="My Account">
-                <o-menu-item label="Account data"></o-menu-item>
-                <o-menu-item label="Addresses"></o-menu-item>
-            </o-menu-item>
-        </o-menu-list>
-        <o-menu-list>
-            <o-menu-item label="Documentation" icon="link" tag="a" target="_blank" href="/documentation/"></o-menu-item>
-        </o-menu-list>
-        <o-menu-list label="Actions">
-            <o-menu-item label="Logout"></o-menu-item>
-        </o-menu-list>
-    </o-menu>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isActive: true
-            }
-        }
-    }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_menu.scss)
-
-<br />
-<template>
-  <div class="field">
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            filtered: [
-                {
-                    type: 'Frameworks',
-                    items: ['Vue.js']
-                }
-            ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root menu element",
-                },
-            ],
-        };
-    }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-### Menu
-
-| Prop name            | Description                                         | Type    | Values | Default |
-| -------------------- |-----------------------------------------------------|---------|--------|---------|
-| accordion            | Close automatically the previous selected menu list | Boolean | -      | true    |
-| activable            | Active automatically the clicked menu item          | Boolean | -      | true    |
-
-### Menu List
-
-| Prop name  | Description                                                                                                                                                 | Type    | Values | Default |
-|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|--------|---------|
-| label      | Menu list label                                                                                                                                             | String  | -      | -       |
-| icon       | Icon name                                                                                                                                                   | String  | -      | -       |
-| icon-pack  | Icon pack to use                                                                                                                                            | String  | -      | -       |
-| aria-role  | Role attribute to be passed to list container for better accessibility. Use `menu` only in situations where your dropdown is really related to navigation.  | String  | `menu` | -       |
-
-### Menu Item
-
-| Prop name | Description                                                                                             | Type    | Values                                              | Default |
-|-----------|---------------------------------------------------------------------------------------------------------|---------|-----------------------------------------------------|---------|
-| label     | Menu item label                                                                                         | String  | -                                                   | -       |
-| icon      | Icon name                                                                                               | String  | -                                                   | -       |
-| icon-pack | Icon pack to use                                                                                        | String  | -                                                   | -       |
-| disabled  | Item is disabled                                                                                        | Boolean | -                                                   | false   |
-| active    | Item is active, use the `.sync` modifier to make it two-way binding                                     | Boolean | -                                                   | false   |
-| expanded  | Item is expanded when `default` contains menu items, use the .sync modifier to make it two-way binding  | Boolean | -                                                   | false   |
-| animation | Custom animation (transition name)                                                                      | String  | -                                                   | `fade`  |
-| tag       | Item tag name                                                                                           | String  | `a`, `router-link`, `nuxt-link` or other nuxt alias | `a`     |
-| aria-role | Item is active, use the `.sync` modifier to make it two-way binding                                     | String  | `menu-item`                                         | -       |
-
-## Slots
-
-### Menu
-
-| Name    | Description        | Bindings |
-| ------- |--------------------| -------- |
-| default | Menu list elements |          |
-
-### Menu List
-
-| Name    | Description            | Bindings |
-|---------|------------------------| -------- |
-| default | Menu item elements     |          |
-| label   | Menu list custom label |          |
-
-### Menu Item
-
-| Name    | Description            | Bindings |
-|---------|------------------------| -------- |
-| default | Menu item body         |          |
-| label   | Menu item custom label |          |
-
-
-## Style
-
-| CSS Variable                              | SASS Variable                       | Default            |
-|-------------------------------------------|-------------------------------------|--------------------|
-| --oruga-menu-font-size-small              | \$sizes['small']                    |                    |
-| --oruga-menu-font-size-medium             | \$sizes['medium']                   |                    |
-| --oruga-menu-font-size-large              | \$sizes['large']                    |                    |
-| --oruga-menu-list-line-height             | \$menu-list-line-height             | 1.25em             |
-| --oruga-menu-list-border-left             | \$menu-list-border-left             | 1px solid $primary |
-| --oruga-menu-nested-list-padding-left     | \$menu-nested-list-padding-left     | .75em              |
-| --oruga-menu-nested-list-margin           | \$menu-nested-list-margin           | .75em              |
-| --oruga-menu-label-color                  | \$menu-label-color                  | $grey              |
-| --oruga-menu-label-font-size              | \$menu-label-font-size              | .75em              |
-| --oruga-menu-label-spacing                | \$menu-label-spacing                | 1em                |
-| --oruga-menu-item-color                   | \$menu-item-color                   | $grey-dark         |
-| --oruga-menu-item-padding                 | \$menu-item-padding                 | 0.5em 0.75em       |
-| --oruga-menu-item-hover-color             | \$menu-item-hover-color             | $black             |
-| --oruga-menu-item-hover-background-color  | \$menu-item-hover-background-color  | $grey-light        |
-| --oruga-menu-item-active-color            | \$menu-item-active-color            | $primary-invert    |
-| --oruga-menu-item-active-background-color | \$menu-item-active-background-color | $primary           |
-| --oruga-menu-item-disabled-color          | \$menu-item-disabled-color          | $grey-light        |
diff --git a/packages/docs/components/Modal.md b/packages/docs/components/Modal.md
deleted file mode 100644
index 19c9f1312..000000000
--- a/packages/docs/components/Modal.md
+++ /dev/null
@@ -1,520 +0,0 @@
----
-title: Modal
----
-
-# Modal
-
-> Classic modal overlay to include any content you may need
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/modal/examples/Modal.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button size="medium" variant="primary" @click="isImageModalActive = true">
-        Open modal
-      </o-button>
-      <o-button size="medium" variant="primary" @click="isCardModalActive = true">
-        Open modal (clip scroll)
-      </o-button>
-    </div>
-
-    <o-modal :active.sync="isImageModalActive">
-      <p style="text-align: center">
-        <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" />
-      </p>
-    </o-modal>
-
-    <o-modal :active.sync="isCardModalActive" :width="640" scroll="clip">
-      <p>
-        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sodales leo nec convallis rutrum. Vivamus pharetra molestie arcu at dictum. Nulla faucibus leo eget enim
-        egestas, in tempus justo venenatis. Duis dictum suscipit erat, a dapibus eros lobortis ac. Praesent tempor rhoncus convallis. Nullam in ipsum convallis, rutrum elit eget,
-        dictum ipsum. Nunc sagittis aliquet massa. Etiam lacus sapien, eleifend non eros quis, finibus ornare nisl. Ut laoreet sit amet lacus non dignissim. Sed convallis mattis
-        enim, sed interdum risus molestie ut. Praesent vel ex hendrerit, cursus lectus a, blandit felis. Nam luctus orci nec varius commodo.
-      </p>
-      <p>
-        Sed vulputate metus purus, ut egestas erat congue et. Donec tellus orci, malesuada eget dolor sed, pellentesque bibendum nunc. In eu egestas diam. Integer sed congue massa.
-        Sed a urna quam. Morbi vulputate dolor eleifend ligula lobortis venenatis. Aenean pellentesque risus sit amet faucibus molestie. Aliquam eu lorem aliquet, aliquam nulla in,
-        vestibulum lorem. Donec mollis mi at sollicitudin tristique. Nullam id nibh pulvinar, dignissim nisl id, gravida risus. Nulla arcu elit, scelerisque in sollicitudin et,
-        laoreet et metus. Aenean placerat turpis nec tincidunt tempus.
-      </p>
-    </o-modal>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isImageModalActive: false,
-        isCardModalActive: false
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Programmatically
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button size="medium" variant="primary" @click="imageModal()">
-        Open modal (HTML)
-      </o-button>
-      <o-button size="medium" variant="primary" @click="cardModal()">
-        Open modal (Component)
-      </o-button>
-    </div>
-  </section>
-</template>
-
-<script>
-  const ModalForm = {
-    props: ['email', 'password'],
-    template: `
-            <form action="">
-                <div class="modal-card" style="width: auto">
-                    <header class="modal-card-head">
-                        <p class="modal-card-title">Login</p>
-                        <o-icon
-                            clickable
-                            native-type="button"
-                            icon="times"
-                            @click.native="$emit('close')"/>
-                    </header>
-                    <section class="modal-card-body">
-                        <o-field label="Email">
-                            <o-input
-                                type="email"
-                                :value="email"
-                                placeholder="Your email"
-                                required>
-                            </o-input>
-                        </o-field>
-
-                        <o-field label="Password">
-                            <o-input
-                                type="password"
-                                :value="password"
-                                password-reveal
-                                placeholder="Your password"
-                                required>
-                            </o-input>
-                        </o-field>
-
-                        <o-field>
-                            <o-checkbox>Remember me</o-checkbox>
-                        </o-field>
-                    </section>
-                    <footer class="modal-card-foot">
-                        <o-button type="button" @click="$emit('close')">Close</o-button>
-                        <o-button variant="primary">Login</o-button>
-                    </footer>
-                </div>
-            </form>
-        `
-  }
-
-  export default {
-    methods: {
-      imageModal() {
-        const h = this.$createElement
-        const vnode = h('p', { style: { 'text-align': 'center' } }, [h('img', { attrs: { src: 'https://avatars2.githubusercontent.com/u/66300512?s=200&v=4' } })])
-        this.$oruga.modal.open({
-          content: [vnode]
-        })
-      },
-      cardModal() {
-        this.$oruga.modal.open({
-          // parent is only for Vue2. in Vue 3 omit this option
-          parent: this,
-          component: ModalForm,
-          trapFocus: true
-        })
-      }
-    }
-  }
-</script>
-
-<style>
-  .modal-card {
-    display: flex;
-    flex-direction: column;
-    max-height: calc(100vh - 40px);
-    overflow: hidden;
-  }
-  @media screen and (min-width: 769px) {
-    .modal-card {
-      margin: 0 auto;
-      max-height: calc(100vh - 40px);
-      width: 640px;
-    }
-  }
-  .modal-card {
-    margin: 0 20px;
-    max-height: calc(100vh - 160px);
-    overflow: auto;
-    position: relative;
-    width: 100%;
-  }
-  .modal-card-foot,
-  .modal-card-head {
-    align-items: center;
-    background-color: #f5f5f5;
-    display: flex;
-    flex-shrink: 0;
-    justify-content: flex-start;
-    padding: 20px;
-    position: relative;
-  }
-  .modal-card-head {
-    border-bottom: 1px solid #dbdbdb;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-  }
-  .modal-card-body {
-    -webkit-overflow-scrolling: touch;
-    background-color: #fff;
-    flex-grow: 1;
-    flex-shrink: 1;
-    overflow: auto;
-    padding: 20px;
-  }
-  .modal-card-foot {
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top: 1px solid #dbdbdb;
-  }
-  .modal-card-title {
-    color: #363636;
-    flex-grow: 1;
-    flex-shrink: 0;
-    font-size: 1.5rem;
-    line-height: 1;
-    margin: 0;
-  }
-  .modal-card-foot .o-button:not(:last-child) {
-    margin-right: 0.5em;
-  }
-</style>
-```
-
-:::
-
-### Programmatically (with promises and async/await)
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button size="medium" variant="primary" @click="promptModal()">
-        Open prompt
-      </o-button>
-      <o-button size="medium" variant="primary" @click="promptModalCloseAll()">
-        Open prompt (closeAll timeout)
-      </o-button>
-    </div>
-  </section>
-</template>
-
-<script>
-  const ModalForm = {
-    props: ['message', 'title'],
-    template: `
-            <form action="">
-                <div class="modal-card" style="width: auto">
-                    <header class="modal-card-head">
-                        <p class="modal-card-title">{{ title }}</p>
-                        <o-icon
-                            clickable
-                            native-type="button"
-                            icon="times"
-                            @click.native="$emit('close', {action: 'cancel', method: 'x'})"/>
-                    </header>
-                    <section class="modal-card-body">
-                        <p>{{ message }}</p>
-                    </section>
-                    <footer class="modal-card-foot">
-                        <o-button @click="$emit('close', {action: 'no'})">No</o-button>
-                        <o-button variant="primary" @click="$emit('close', {action: 'yes'})">Yes</o-button>
-                    </footer>
-                </div>
-            </form>
-        `
-  }
-
-  export default {
-    methods: {
-      async promptModal() {
-        const instance = this.$oruga.modal.open({
-          // parent is only for Vue2. in Vue 3 omit this option
-          parent: this,
-          component: ModalForm,
-          props: {
-            title: 'Ship sprockets?',
-            message: 'Do you really want me to ship the selected sprockets?'
-          },
-          trapFocus: true
-        })
-        // Note utilizing the promise requires Promise be supported by the browser
-        // If you are running Vue 2 on IE 11 this will not be the case unless you
-        // add a polyfill in your build.
-        const result = await instance.promise
-
-        this.$oruga.notification.open({
-          duration: 5000,
-          message: 'Modal dialog returned ' + JSON.stringify(result),
-          variant: 'info',
-          position: 'top',
-          closable: true
-        })
-      },
-      async promptModalCloseAll() {
-        const instance = this.$oruga.modal.open({
-          // parent is only for Vue2. in Vue 3 omit this option
-          parent: this,
-          component: ModalForm,
-          props: {
-            title: 'Close All test',
-            message: 'There is a 3 second timeout that will close all programmatic modals'
-          },
-          trapFocus: true
-        })
-
-        setTimeout(() => this.$oruga.modal.closeAll({ action: 'closeAll' }), 3 * 1000)
-
-        // Note utilizing the promise requires Promise be supported by the browser
-        // If you are running Vue 2 on IE 11 this will not be the case unless you
-        // add a polyfill in your build.
-        const result = await instance.promise
-
-        this.$oruga.notification.open({
-          duration: 5000,
-          message: 'Modal dialog returned ' + JSON.stringify(result),
-          variant: 'info',
-          position: 'top',
-          closable: true
-        })
-      }
-    }
-  }
-</script>
-
-<style>
-  .modal-card {
-    display: flex;
-    flex-direction: column;
-    max-height: calc(100vh - 40px);
-    overflow: hidden;
-  }
-  @media screen and (min-width: 769px) {
-    .modal-card {
-      margin: 0 auto;
-      max-height: calc(100vh - 40px);
-      width: 640px;
-    }
-  }
-  .modal-card {
-    margin: 0 20px;
-    max-height: calc(100vh - 160px);
-    overflow: auto;
-    position: relative;
-    width: 100%;
-  }
-  .modal-card-foot,
-  .modal-card-head {
-    align-items: center;
-    background-color: #f5f5f5;
-    display: flex;
-    flex-shrink: 0;
-    justify-content: flex-start;
-    padding: 20px;
-    position: relative;
-  }
-  .modal-card-head {
-    border-bottom: 1px solid #dbdbdb;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-  }
-  .modal-card-body {
-    -webkit-overflow-scrolling: touch;
-    background-color: #fff;
-    flex-grow: 1;
-    flex-shrink: 1;
-    overflow: auto;
-    padding: 20px;
-  }
-  .modal-card-foot {
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top: 1px solid #dbdbdb;
-  }
-  .modal-card-title {
-    color: #363636;
-    flex-grow: 1;
-    flex-shrink: 0;
-    font-size: 1.5rem;
-    line-height: 1;
-    margin: 0;
-  }
-  .modal-card-foot .o-button:not(:last-child) {
-    margin-right: 0.5em;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_modal.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-modal v-bind="s" :active.sync="isImageModalActive">
-                    <p style="text-align: center">
-                        <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" />
-                    </p>
-                </o-modal>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            isImageModalActive: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of modal component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the modal overlay",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the modal content",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "closeClass",
-                    description: "Class of the close button",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "fullScreenClass",
-                    description: "Class of the modal when fullscreen",
-                    properties: ['fullScreen'],
-                    action: (cmp) => {
-                        this.isImageModalActive = true;
-                        cmp.data.fullScreen = true;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name        | Description                                                                                                                                                            | Type           | Values                             | Default                                                                                                                                                              |
-| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| active           | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding                                                | boolean        | -                                  |                                                                                                                                                                      |
-| animation        | Custom animation (transition name)                                                                                                                                     | string         | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;animation: 'zoom-out'<br>}</code>                           |
-| ariaLabel        |                                                                                                                                                                        | string         | -                                  |                                                                                                                                                                      |
-| ariaModal        |                                                                                                                                                                        | boolean        | -                                  |                                                                                                                                                                      |
-| ariaRole         |                                                                                                                                                                        | string         | -                                  |                                                                                                                                                                      |
-| autoFocus        | Automatically focus modal when active                                                                                                                                  | boolean        | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;autoFocus: true<br>}</code>                                 |
-| canCancel        | Can close Modal by clicking 'X', pressing escape or clicking outside                                                                                                   | array\|boolean | `escape`, `x`, `outside`, `button` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;canCancel: ['escape', 'x', 'outside', 'button']<br>}</code> |
-| closeIcon        | Icon name                                                                                                                                                              | string         | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;closeIcon: 'close'<br>}</code>                              |
-| closeIconSize    |                                                                                                                                                                        | string         | -                                  | 'medium'                                                                                                                                                             |
-| component        | Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ€” this.\$emit('close')         | object\|func   | -                                  |                                                                                                                                                                      |
-| content          | Text content                                                                                                                                                           | string         | -                                  |                                                                                                                                                                      |
-| destroyOnHide    | Destroy modal on hide                                                                                                                                                  | boolean        | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;destroyOnHide: true<br>}</code>                             |
-| events           | Events to be binded to the injected component                                                                                                                          | object         | -                                  |                                                                                                                                                                      |
-| fullScreen       | Display modal as full screen                                                                                                                                           | boolean        | -                                  |                                                                                                                                                                      |
-| mobileBreakpoint | Mobile breakpoint as max-width value                                                                                                                                   | string         | -                                  |                                                                                                                                                                      |
-| onCancel         | Callback function to call after user canceled (clicked 'X' / pressed escape / clicked outside)                                                                         | func           | -                                  | Default function (see source code)                                                                                                                                   |
-| onClose          | Callback function to call after close (programmatically close or user canceled)                                                                                        | func           | -                                  | Default function (see source code)                                                                                                                                   |
-| override         | Override classes                                                                                                                                                       | boolean        | -                                  | false                                                                                                                                                                |
-| props            | Props to be binded to the injected component                                                                                                                           | object         | -                                  |                                                                                                                                                                      |
-| scroll           | clip to remove the body scrollbar, keep to have a non scrollable scrollbar to avoid shifting background, but will set body to position fixed, might break some layouts | string         | `keep`, `clip`                     | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;scroll: 'keep'<br>}</code>                                  |
-| trapFocus        | Trap focus inside the modal.                                                                                                                                           | boolean        | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;trapFocus: true<br>}</code>                                 |
-| width            | Width of the Modal                                                                                                                                                     | string\|number | -                                  | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br>&nbsp;&nbsp;width: 960<br>}</code>                                      |
-
-## Events
-
-| Event name    | Properties | Description |
-| ------------- | ---------- | ----------- |
-| close         |            |
-| update:active |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                      | SASS Variable                               | Default                      |
-| ------------------------------------------------- | ------------------------------------------- | ---------------------------- |
-| --oruga-modal-content-background-color            | \$modal-content-background-color            | \$white                      |
-| --oruga-modal-content-border-radius               | \$modal-content-border-radius               | \$base-border-radius         |
-| --oruga-modal-overlay-background-color            | \$modal-overlay-background-color            | hsla(0,0%,4%,.86)            |
-| --oruga-modal-close-border-radius                 | \$modal-close-border-radius                 | \$base-rounded-border-radius |
-| --oruga-modal-close-right                         | \$modal-close-right                         | 20px                         |
-| --oruga-modal-close-top                           | \$modal-close-top                           | 20px                         |
-| --oruga-modal-close-size                          | \$modal-close-size                          | 32px                         |
-| --oruga-modal-close-color                         | \$modal-close-color                         | \$white                      |
-| --oruga-modal-content-fullscreen-background-color | \$modal-content-fullscreen-background-color | #f5f5f5                      |
-| --oruga-modal-content-max-height                  | \$modal-content-max-height                  | calc(100vh - 160px)          |
-| --oruga-modal-content-margin                      | \$modal-content-margin                      | 0 auto                       |
-| --oruga-modal-zindex                              | \$modal-zindex                              | 40                           |
diff --git a/packages/docs/components/Notification.md b/packages/docs/components/Notification.md
deleted file mode 100644
index 9291baeb3..000000000
--- a/packages/docs/components/Notification.md
+++ /dev/null
@@ -1,443 +0,0 @@
----
-title: Notification/Toast
----
-
-# Notification/Toast
-
-> Bold notification blocks to alert your users of something
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/notification/examples/Notification.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Programmatically opening
-
-Go to [Notification Notice](#notification-notice) section to see all the available options.
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="buttons">
-      <o-button label="Launch notification (default)" size="medium" @click="simple" />
-      <o-button label="Launch notification (custom)" variant="success" size="medium" @click="success" />
-      <hr />
-      <o-button label="Launch toast" size="medium" @click="toast" />
-      <o-button label="Launch toast (queued)" variant="success" size="medium" @click="queueToast" />
-      <hr />
-      <o-button label="Launch notification (custom)" variant="danger" size="medium" @click="danger" />
-      <o-button label="Launch notification (component)" variant="warning" size="medium" @click="component" />
-      <hr />
-      <o-button label="Launch with promise" size="medium" @click="promise" />
-      <o-button label="Launch indefinite" size="medium" @click="indefinite" />
-      <o-button label="Close all open" size="medium" @click="closeAll" />
-    </div>
-  </section>
-</template>
-
-<script>
-  const NotificationForm = {
-    props: ['email', 'password'],
-    template: `
-                <form action="">
-                    <div class="modal-card" style="width: auto">
-                        <header class="modal-card-head">
-                            <p class="modal-card-title">Login</p>
-                        </header>
-                        <section class="modal-card-body">
-                            <o-field label="Email">
-                                <o-input
-                                    type="email"
-                                    :value="email"
-                                    placeholder="Your email"
-                                    required>
-                                </o-input>
-                            </o-field>
-
-                            <o-field label="Password">
-                                <o-input
-                                    type="password"
-                                    :value="password"
-                                    password-reveal
-                                    placeholder="Your password"
-                                    required>
-                                </o-input>
-                            </o-field>
-
-                            <o-field>
-                                <o-checkbox>Remember me</o-checkbox>
-                            </o-field>
-                        </section>
-                        <footer class="modal-card-foot">
-                            <o-button type="button" @click="$emit('close')">Close</o-button>
-                            <o-button variant="primary">Login</o-button>
-                        </footer>
-                    </div>
-                </form>
-            `
-  }
-  export default {
-    methods: {
-      simple() {
-        this.$oruga.notification.open('Something happened')
-      },
-      success() {
-        this.$oruga.notification.open({
-          message: 'Something happened correctly!',
-          variant: 'success',
-          closable: true
-        })
-      },
-      toast() {
-        this.$oruga.notification.open({
-          message: 'Something happened correctly!',
-          rootClass: 'toast-notification',
-          position: 'top'
-        })
-      },
-      queueToast() {
-        this.$oruga.notification.open({
-          message: 'Something happened correctly!',
-          rootClass: 'toast-notification',
-          position: 'top',
-          queue: true
-        })
-      },
-      danger() {
-        const notif = this.$oruga.notification.open({
-          duration: 5000,
-          message: `Something's not good, also I'm on <b>bottom</b>`,
-          position: 'bottom-right',
-          variant: 'danger',
-          closable: true,
-          onClose: () => {
-            this.$oruga.notification.open('Custom notification closed!')
-          }
-        })
-      },
-      component() {
-        this.$oruga.notification.open({
-          // parent is only for Vue2. in Vue 3 omit this option
-          parent: this,
-          component: NotificationForm,
-          position: 'bottom-right',
-          variant: 'warning',
-          indefinite: true
-        })
-      },
-      async promise() {
-        const instance = this.$oruga.notification.open({
-          message: "Notification with promise response. The promise returns how the notification was closed. (value from $emit('close', value)",
-          position: 'top',
-          variant: 'info',
-          duration: 5000,
-          closable: true
-        })
-
-        // Note utilizing the promise requires Promise be supported by the browser
-        // If you are running Vue 2 on IE 11 this will not be the case unless you
-        // add a polyfill in your build.
-        const ret = await instance.promise
-
-        this.$oruga.notification.open({
-          message: 'Notification was resolved with ' + JSON.stringify(ret),
-          position: 'top',
-          variant: 'success',
-          duration: 2000
-        })
-      },
-      indefinite() {
-        this.$oruga.notification.open({
-          message: 'Indefinite sticky notification',
-          closable: true,
-          indefinite: true
-        })
-      },
-      closeAll() {
-        // any parameter here is passed to the onClose handler and resolved to the promise
-        // for each open notification
-        this.$oruga.notification.closeAll({ action: 'closeAll' })
-      }
-    }
-  }
-</script>
-<style>
-  .toast-notification {
-    margin: 0.5em 0;
-    text-align: center;
-    box-shadow: 0 1px 4px rgb(0 0 0 / 12%), 0 0 6px rgb(0 0 0 / 4%);
-    border-radius: 2em;
-    padding: 0.75em 1.5em;
-    pointer-events: auto;
-    color: rgba(0, 0, 0, 0.7);
-    background: #ffdd57;
-  }
-</style>
-```
-
-:::
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-notification closable aria-close-label="Close notification">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-    <o-notification closable variant="info" aria-close-label="Close notification">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-    <o-notification closable variant="success" aria-close-label="Close notification">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-    <o-notification closable variant="warning" aria-close-label="Close notification" role="alert">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-    <o-notification closable variant="danger" aria-close-label="Close notification" role="alert">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-  </section>
-</template>
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Use types
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-notification closable type="info" variant="info" aria-close-label="Close notification">
-      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-    </o-notification>
-  </section>
-</template>
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Add custom buttons
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-notification aria-close-label="Close notification" v-slot="{closeNotification}">
-      <div class="notification-content">
-        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit</span>
-        <o-button label="Cancel" size="small" @click="closeNotification" />
-      </div>
-    </o-notification>
-  </section>
-</template>
-<script>
-  export default {}
-</script>
-<style>
-  .notification-content {
-    display: flex;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_notification.scss)
-
-<br />
-<template>
-  <div>
-    <doc-wrapper>
-        <template v-slot:default="s">
-            <o-notification v-bind="s">
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-            </o-notification>
-        </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "noticeClass",
-                    description: "Root class of the notice",
-                    nospec: true
-                },
-                {
-                    class: "noticePositionClass",
-                    description: "Class of the notice when positioned",
-                    properties: ["position"],
-                    suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                    },
-                    nospec: true
-                },
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "closeClass",
-                    description: "Class of the close button container",
-                    properties: ["closable"],
-                    action: (cmp) => {
-                        cmp.data.closable = true;
-                    },
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the content element"
-                },
-                {
-                    class: "iconClass",
-                    description: "Class of the icon on the left",
-                    properties: ["type"],
-                    action: (cmp) => {
-                        cmp.data.type = 'info';
-                    },
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of the element when positioned",
-                    properties: ["position"],
-                    suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                    },
-                },
-                {
-                    class: "wrapperClass",
-                    description: "Class of the wrapper element"
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the notification variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name      | Description                                                                                                                                                    | Type           | Values                                                                          | Default                                                                                                                                        |
-| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
-| active         | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding                                        | boolean        | -                                                                               | true                                                                                                                                           |
-| animation      | Custom animation (transition name).                                                                                                                            | string         | -                                                                               | 'fade'                                                                                                                                         |
-| ariaCloseLabel | Label for the close button, to be read by accessibility screenreaders.                                                                                         | string         | -                                                                               |                                                                                                                                                |
-| autoClose      | Hide notification after duration only not programmatic.                                                                                                        | boolean        | -                                                                               | false                                                                                                                                          |
-| closable       | Adds an 'X' button that closes the notification.                                                                                                               | boolean        | -                                                                               | false                                                                                                                                          |
-| closeIcon      | Close icon name                                                                                                                                                | string         | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br>&nbsp;&nbsp;closeIcon: 'close'<br>}</code> |
-| closeIconSize  | Size of close icon                                                                                                                                             | string         | -                                                                               | 'small'                                                                                                                                        |
-| component      | Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ€” this.\$emit('close') | object\|func   | -                                                                               |                                                                                                                                                |
-| duration       | Visibility duration in miliseconds.                                                                                                                            | number         | -                                                                               | 2000                                                                                                                                           |
-| events         | Events to be binded to the injected component                                                                                                                  | object         | -                                                                               |                                                                                                                                                |
-| hasIcon        | Adds an icon on the left side depending on the type (or the icon prop if defined).                                                                             | boolean        | -                                                                               |                                                                                                                                                |
-| icon           | Icon name to use with has-icon.                                                                                                                                | string         | -                                                                               |                                                                                                                                                |
-| iconPack       | Icon pack to use.                                                                                                                                              | string         | -                                                                               |                                                                                                                                                |
-| iconSize       | Icon size                                                                                                                                                      | string         | -                                                                               | 'large'                                                                                                                                        |
-| message        | Message text (can contain HTML).                                                                                                                               | string         | -                                                                               |                                                                                                                                                |
-| override       | Override classes                                                                                                                                               | boolean        | -                                                                               | false                                                                                                                                          |
-| position       | Which position the notification will appear when programmatically                                                                                              | string         | `top-right`, `top`, `top-left`, `bottom-right`, `bottom`, `bottom-left`         |                                                                                                                                                |
-| props          | Props to be binded to the injected component                                                                                                                   | object         | -                                                                               |                                                                                                                                                |
-| type           | Type (color) of the notification, optional.                                                                                                                    | string         | -                                                                               |                                                                                                                                                |
-| variant        | Color of the control, optional                                                                                                                                 | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                                |
-
-### Events
-
-| Event name    | Properties | Description |
-| ------------- | ---------- | ----------- |
-| close         |            |
-| update:active |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
----
-
-# Notification Notice
-
-> <CarbonAds />
-
-## Props
-
-| Prop name  | Description                                                                                                                                                         | Type          | Values                                                                  | Default                                                                                                                                                 |
-| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| container  | DOM element the toast will be created on. Note that this also changes the position of the toast from fixed to absolute. Meaning that the container should be fixed. | string        | -                                                                       | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br>&nbsp;&nbsp;containerElement: undefined<br>}</code> |
-| duration   | Visibility duration in miliseconds.                                                                                                                                 | number        | -                                                                       | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br>&nbsp;&nbsp;duration: 1000<br>}</code>              |
-| indefinite | Show the Notification indefinitely until it is dismissed when programmatically.                                                                                     | boolean       | -                                                                       | false                                                                                                                                                   |
-| message    | Message text (can contain HTML).                                                                                                                                    | string\|array | -                                                                       |                                                                                                                                                         |
-| onClose    | Callback function to call after close (programmatically close or user canceled)                                                                                     | func          | -                                                                       | Default function (see source code)                                                                                                                      |
-| override   | Override classes                                                                                                                                                    | boolean       | -                                                                       | false                                                                                                                                                   |
-| position   | Which position the notification will appear when programmatically.                                                                                                  | string        | `top-right`, `top`, `top-left`, `bottom-right`, `bottom`, `bottom-left` | 'top'                                                                                                                                                   |
-| queue      | If should queue with others notices (snackbar/toast/notification).                                                                                                  | boolean       | -                                                                       | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br>&nbsp;&nbsp;noticeQueue: false<br>}</code>          |
-| type       | Type (color) of the notification, optional.                                                                                                                         | string        | -                                                                       |                                                                                                                                                         |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| close      |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                | SASS Variable                         | Default                      |
-| ------------------------------------------- | ------------------------------------- | ---------------------------- |
-| --oruga-notification-background-color       | \$notification-background-color       | \$primary                    |
-| --oruga-notification-border-radius          | \$notification-border-radius          | 4px                          |
-| --oruga-notification-padding                | \$notification-padding                | 1.75em 1.75em                |
-| --oruga-notification-margin-bottom          | \$notification-margin-bottom          | 1.5rem                       |
-| --oruga-notification-animantion             | \$notification-animantion             | append-animate .3s linear    |
-| --oruga-notification-color                  | \$notification-color                  | \$white                      |
-| --oruga-notification-close-border-radius    | \$notification-close-border-radius    | \$base-rounded-border-radius |
-| --oruga-notification-close-right            | \$notification-close-right            | .5rem                        |
-| --oruga-notification-close-top              | \$notification-close-top              | .5rem                        |
-| --oruga-notification-close-size             | \$notification-close-size             | 20px                         |
-| --oruga-notification-close-color            | \$notification-close-color            | \$white                      |
-| --oruga-notification-close-background-color | \$notification-close-background-color | hsla(0,0%,4%,.2)             |
-| --oruga-notification-icon-margin-right      | \$notification-icon-margin-right      | 1rem                         |
-| --oruga-notification-notices-padding        | \$notification-notices-padding        | 2em                          |
-| --oruga-notification-notices-zindex         | \$notification-notices-zindex         | 1000                         |
diff --git a/packages/docs/components/Pagination.md b/packages/docs/components/Pagination.md
deleted file mode 100644
index 43486c9e2..000000000
--- a/packages/docs/components/Pagination.md
+++ /dev/null
@@ -1,413 +0,0 @@
----
-title: Pagination
----
-
-# Pagination
-
-> A responsive and flexible pagination
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/pagination/examples/Pagination.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-field label="Total">
-        <o-input type="number" v-model="total"></o-input>
-      </o-field>
-      <o-field label="Items per page">
-        <o-input type="number" v-model="perPage"></o-input>
-      </o-field>
-    </o-field>
-    <o-field grouped group-multiline>
-      <o-field label="Show buttons before current">
-        <o-input type="number" v-model="rangeBefore" min="0"></o-input>
-      </o-field>
-      <o-field label="Show buttons after current">
-        <o-input type="number" v-model="rangeAfter" min="0"></o-input>
-      </o-field>
-    </o-field>
-    <o-field grouped group-multiline>
-      <o-field label="Order">
-        <o-select v-model="order">
-          <option value="">default</option>
-          <option value="centered">centered</option>
-          <option value="right">right</option>
-        </o-select>
-      </o-field>
-      <o-field label="Size">
-        <o-select v-model="size">
-          <option value="">default</option>
-          <option value="small">small</option>
-          <option value="medium">medium</option>
-          <option value="large">large</option>
-        </o-select>
-      </o-field>
-    </o-field>
-    <o-field grouped group-multiline>
-      <o-field label="Previous icon">
-        <o-select v-model="prevIcon">
-          <option value="chevron-left">Chevron</option>
-          <option value="arrow-left">Arrow</option>
-        </o-select>
-      </o-field>
-      <o-field label="Next icon">
-        <o-select v-model="nextIcon">
-          <option value="chevron-right">Chevron</option>
-          <option value="arrow-right">Arrow</option>
-        </o-select>
-      </o-field>
-    </o-field>
-    <div class="block">
-      <o-switch v-model="isSimple">Simple</o-switch>
-      <o-switch v-model="isRounded">Rounded</o-switch>
-    </div>
-
-    <hr />
-    <o-pagination
-      :total="total"
-      :current.sync="current"
-      :range-before="rangeBefore"
-      :range-after="rangeAfter"
-      :order="order"
-      :size="size"
-      :simple="isSimple"
-      :rounded="isRounded"
-      :per-page="perPage"
-      :icon-prev="prevIcon"
-      :icon-next="nextIcon"
-      aria-next-label="Next page"
-      aria-previous-label="Previous page"
-      aria-page-label="Page"
-      aria-current-label="Current page"
-    >
-    </o-pagination>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        total: 200,
-        current: 10,
-        perPage: 10,
-        rangeBefore: 3,
-        rangeAfter: 1,
-        order: '',
-        size: '',
-        isSimple: false,
-        isRounded: false,
-        prevIcon: 'chevron-left',
-        nextIcon: 'chevron-right'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Slots
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-pagination :total="200" :current.sync="current" :per-page="10">
-      <o-pagination-button slot-scope="props" :page="props.page" :id="`page${props.page.number}`">
-        {{ convertToRoman(props.page.number) }}
-      </o-pagination-button>
-
-      <o-pagination-button slot="previous" slot-scope="props" :page="props.page">
-        Previous
-      </o-pagination-button>
-
-      <o-pagination-button slot="next" slot-scope="props" :page="props.page">
-        Next
-      </o-pagination-button>
-    </o-pagination>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        current: 10,
-        basicRomanNumeral: [
-          '',
-          'I',
-          'II',
-          'III',
-          'IV',
-          'V',
-          'VI',
-          'VII',
-          'VIII',
-          'IX',
-          '',
-          'X',
-          'XX',
-          'XXX',
-          'XL',
-          'L',
-          'LX',
-          'LXX',
-          'LXXX',
-          'XC',
-          '',
-          'C',
-          'CC',
-          'CCC',
-          'CD',
-          'D',
-          'DC',
-          'DCC',
-          'DCCC',
-          'CM',
-          '',
-          'M',
-          'MM',
-          'MMM'
-        ]
-      }
-    },
-    methods: {
-      convertToRoman(num) {
-        const numArray = num.toString().split('')
-        const base = numArray.length
-        let count = base - 1
-        const convertedRoman = numArray.reduce((roman, digit) => {
-          const digitRoman = this.basicRomanNumeral[+digit + count * 10]
-          const result = roman + digitRoman
-          count -= 1
-          return result
-        }, '')
-        return convertedRoman
-      }
-    }
-    /*
-        watch: {
-            $route: {
-                immediate: true,
-                handler(newVal, oldVal) {
-                    if (newVal.hash) {
-                        this.current = parseInt(newVal.hash.replace(/\#page/g, ''))
-                    }
-                },
-            },
-        }
-        */
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_pagination.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-pagination
-                    v-bind='s'
-                    :total="total"
-                    :current.sync="current"
-                    :range-before="rangeBefore"
-                    :range-after="rangeAfter"
-                    :per-page="perPage"
-                    aria-next-label="Next page"
-                    aria-previous-label="Previous page"
-                    aria-page-label="Page"
-                    aria-current-label="Current page"
-                    icon-prev='chevron-left'
-                    icon-next='chevron-right'
-                    >
-                </o-pagination>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            total: 200,
-            current: 10,
-            perPage: 10,
-            rangeBefore: 3,
-            rangeAfter: 1,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of pagination component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "prevBtnClass",
-                    description: "Class of the prev. button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "nextBtnClass",
-                    description: "Class of the next button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "listClass",
-                    description: "Class of the pagination list",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "linkClass",
-                    description: "Class of the link button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "linkCurrentClass",
-                    description: "Class of the current link",
-                },
-                {
-                    class: "ellipsisClass",
-                    description: "Class of the pagination ellipsis ",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "infoClass",
-                    description: "Class of the info in `simple` mode",
-                    properties: ['simple'],
-                    action: (cmp) => {
-                        cmp.data.simple = true;
-                    }
-                },
-                {
-                    class: "orderClass",
-                    description: "Class of the pagination order",
-                    properties: ['order'],
-                    suffixes: ['centered', 'right', 'left'],
-                    action: (cmp) => {
-                        cmp.data.order = 'centered';
-                    }
-                },
-                {
-                    class: "simpleClass",
-                    description: "Class of the pagination in `simple` mode",
-                    properties: ['simple'],
-                    action: (cmp) => {
-                        cmp.data.simple = true;
-                    }
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the pagination when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    }
-                },
-                {
-                    class: "linkDisabledClass",
-                    description: "Class of the disabled link",
-                    action: () => {
-                        this.current = 20;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class for the pagination size",
-                    properties: ['size'],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'small';
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name         | Description                                                                                                   | Type           | Values                                            | Default                                                                                                                                             |
-| ----------------- | ------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
-| ariaCurrentLabel  |                                                                                                               | string         | -                                                 |                                                                                                                                                     |
-| ariaNextLabel     |                                                                                                               | string         | -                                                 |                                                                                                                                                     |
-| ariaPageLabel     |                                                                                                               | string         | -                                                 |                                                                                                                                                     |
-| ariaPreviousLabel |                                                                                                               | string         | -                                                 |                                                                                                                                                     |
-| current           | Current page number, use the .sync modifier (Vue 2.x) or v-model:current (Vue 3.x) to make it two-way binding | number\|string | -                                                 | 1                                                                                                                                                   |
-| iconNext          | Icon to use for next button                                                                                   | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br>&nbsp;&nbsp;iconNext: 'chevron-right'<br>}</code> |
-| iconPack          | Icon pack to use                                                                                              | string         | `mdi`, `fa`, `fas and any other custom icon pack` |                                                                                                                                                     |
-| iconPrev          | Icon to use for previous button                                                                               | string         | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br>&nbsp;&nbsp;iconPrev: 'chevron-left'<br>}</code>  |
-| mobileBreakpoint  | Mobile breakpoint as max-width value                                                                          | string         | -                                                 |                                                                                                                                                     |
-| order             | Buttons order, optional                                                                                       | string         | `centered`, `right`, `left`                       | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br>&nbsp;&nbsp;order: 'right'<br>}</code>            |
-| override          | Override classes                                                                                              | boolean        | -                                                 | false                                                                                                                                               |
-| perPage           | Items count for each page                                                                                     | number\|string | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br>&nbsp;&nbsp;perPage: 20<br>}</code>               |
-| rangeAfter        | Number of pagination items to show after current page                                                         | number\|string | -                                                 | 1                                                                                                                                                   |
-| rangeBefore       | Number of pagination items to show before current page                                                        | number\|string | -                                                 | 1                                                                                                                                                   |
-| rounded           | Rounded button styles                                                                                         | boolean        | -                                                 |                                                                                                                                                     |
-| simple            | Simple style                                                                                                  | boolean        | -                                                 |                                                                                                                                                     |
-| size              | Pagination size, optional                                                                                     | string         | `small`, `medium`, `large`                        |                                                                                                                                                     |
-| total             | Total count of items                                                                                          | number\|string | -                                                 |                                                                                                                                                     |
-
-## Events
-
-| Event name     | Properties | Description |
-| -------------- | ---------- | ----------- |
-| change         |            |
-| update:current |            |
-
-## Slots
-
-| Name     | Description | Bindings |
-| -------- | ----------- | -------- |
-| previous |             | <br><br> |
-| next     |             | <br><br> |
-| default  |             | <br><br> |
-
-## Style
-
-| CSS Variable                                     | SASS Variable                              | Default                      |
-| ------------------------------------------------ | ------------------------------------------ | ---------------------------- |
-| --oruga-pagination-disabled-opacity              | \$pagination-disabled-opacity              | \$base-disabled-opacity      |
-| --oruga-pagination-ellipsis-color                | \$pagination-ellipsis-color                | \$grey-light                 |
-| --oruga-pagination-link-border-color             | \$pagination-link-border-color             | \$grey-lighter               |
-| --oruga-pagination-link-border-radius            | \$pagination-link-border-radius            | \$base-border-radius         |
-| --oruga-pagination-link-border                   | \$pagination-link-border                   | 1px solid transparent        |
-| --oruga-pagination-link-color                    | \$pagination-link-color                    | #363636                      |
-| --oruga-pagination-link-current-background-color | \$pagination-link-current-background-color | \$primary                    |
-| --oruga-pagination-link-current-border-color     | \$pagination-link-current-border-color     | \$primary // !!!             |
-| --oruga-pagination-link-current-color            | \$pagination-link-current-color            | #fff                         |
-| --oruga-pagination-link-height                   | \$pagination-link-height                   | 2.25em                       |
-| --oruga-pagination-link-hover-border-color       | \$pagination-link-hover-border-color       | \$grey-light                 |
-| --oruga-pagination-link-line-height              | \$pagination-link-line-height              | \$base-line-height           |
-| --oruga-pagination-link-margin                   | \$pagination-link-margin                   | .25rem                       |
-| --oruga-pagination-link-min-width                | \$pagination-link-min-width                | 2.25em                       |
-| --oruga-pagination-link-padding                  | \$pagination-link-padding                  | .5em .5em                    |
-| --oruga-pagination-margin                        | \$pagination-margin                        | -.25rem                      |
-| --oruga-pagination-rounded-border-radius         | \$pagination-rounded-border-radius         | \$base-rounded-border-radius |
diff --git a/packages/docs/components/Radio.md b/packages/docs/components/Radio.md
deleted file mode 100644
index 2e6f5953e..000000000
--- a/packages/docs/components/Radio.md
+++ /dev/null
@@ -1,225 +0,0 @@
----
-title: Radio
----
-
-# Radio
-
-> Select an option from a set
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/radio/examples/Radio.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="block">
-      <o-radio v-model="radio" name="name" native-value="Flint">
-        Flint
-      </o-radio>
-      <o-radio v-model="radio" name="name" native-value="Silver">
-        Silver
-      </o-radio>
-      <o-radio v-model="radio" name="name" native-value="Jack">
-        Jack
-      </o-radio>
-      <o-radio v-model="radio" name="name" native-value="Vane" disabled>
-        Vane
-      </o-radio>
-    </div>
-    <p class="content">
-      <b>Selection:</b>
-      {{ radio }}
-    </p>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        radio: 'Jack'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Variants
-
-::: demo
-
-```html
-<template>
-  <section>
-    <div class="field">
-      <o-radio v-model="radio" native-value="default">
-        Default
-      </o-radio>
-    </div>
-    <div class="field">
-      <o-radio v-model="radio" native-value="info" variant="info">
-        Info
-      </o-radio>
-    </div>
-    <div class="field">
-      <o-radio v-model="radio" native-value="success" variant="success">
-        Success
-      </o-radio>
-    </div>
-    <div class="field">
-      <o-radio v-model="radio" native-value="danger" variant="danger">
-        Danger
-      </o-radio>
-    </div>
-    <div class="field">
-      <o-radio v-model="radio" native-value="warning" variant="warning">
-        Warning
-      </o-radio>
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        radio: 'default'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_radio.scss)
-
-<br />
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-radio v-model="s.checkbox" native-value="default" v-bind="s">Radio</o-radio>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'labelClass',
-          description : 'Class of the radio label'
-        },
-        {
-          class: 'checkClass',
-          description : 'Class of the native radio element'
-        },
-        {
-          class: 'checkedClass',
-          description : 'Class of the root element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = 'default';
-          }
-        },
-        {
-          class: 'checkCheckedClass',
-          description : 'Class of the native radio element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = 'default';
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the radio size',
-          properties: ["size"],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        },
-        {
-          class: 'disabledClass',
-          description : 'Class when radio is disabled',
-          properties: ["disabled"],
-          action: (cmp) => {
-            cmp.data.disabled = true;
-          }
-        },
-        {
-          class: 'variantClass',
-          description : 'Class of the radio variant',
-          properties: ["variant"],
-          suffixes: ['primary', 'info', 'warning', 'danger'],
-          action: (cmp) => {
-            cmp.data.variant = 'warning';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name   | Description                    | Type                           | Values                                                                          | Default |
-| ----------- | ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------- | ------- |
-| disabled    | Same as native disabled        | boolean                        | -                                                                               |         |
-| name        | Same as native name            | string                         | -                                                                               |         |
-| nativeValue | Same as native value           | string\|number\|boolean\|array | -                                                                               |         |
-| override    | Override classes               | boolean                        | -                                                                               | false   |
-| required    |                                | boolean                        | -                                                                               |         |
-| size        | Size of the control, optional  | string                         | `small`, `medium`, `large`                                                      |         |
-| v-model     |                                | string\|number\|boolean\|array | -                                                                               |         |
-| variant     | Color of the control, optional | string                         | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |         |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                             | SASS Variable                      | Default                 |
-| ---------------------------------------- | ---------------------------------- | ----------------------- |
-| --oruga-radio-active-background-color    | \$radio-active-background-color    | \$primary               |
-| --oruga-radio-checked-box-shadow-length  | \$radio-checked-box-shadow-length  | 0 0 0.5em               |
-| --oruga-radio-checked-box-shadow-opacity | \$radio-checked-box-shadow-opacity | 0.8                     |
-| --oruga-radio-disabled-opacity           | \$radio-disabled-opacity           | \$base-disabled-opacity |
-| --oruga-radio-label-padding              | \$radio-label-padding              | 0 0 0 .5em              |
-| --oruga-radio-margin-sibiling            | \$radio-margin-sibiling            | 0.5em                   |
-| --oruga-radio-size                       | \$radio-size                       | 1rem                    |
-| --oruga-radio-line-height                | \$radio-line-height                | 1.25                    |
diff --git a/packages/docs/components/Select.md b/packages/docs/components/Select.md
deleted file mode 100644
index c5a6317e6..000000000
--- a/packages/docs/components/Select.md
+++ /dev/null
@@ -1,342 +0,0 @@
----
-title: Select
----
-
-# Select
-
-> Select an item in a dropdown list. Use with Field to access all functionalities
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/select/examples/Select.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Simple">
-      <o-select placeholder="Select a name">
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Grouped">
-      <o-select placeholder="Select a character" icon="user">
-        <optgroup label="Black Sails">
-          <option value="flint">Flint</option>
-          <option value="silver">Silver</option>
-          <option value="vane">Vane</option>
-          <option value="billy">Billy</option>
-          <option value="jack">Jack</option>
-        </optgroup>
-
-        <optgroup label="Breaking Bad">
-          <option value="heisenberg">Heisenberg</option>
-          <option value="jesse">Jesse</option>
-          <option value="saul">Saul</option>
-          <option value="mike">Mike</option>
-        </optgroup>
-
-        <optgroup label="Game of Thrones">
-          <option value="tyrion-lannister">Tyrion Lannister</option>
-          <option value="jamie-lannister">Jamie Lannister</option>
-          <option value="daenerys-targaryen">Daenerys Targaryen</option>
-          <option value="jon-snow">Jon Snow</option>
-        </optgroup>
-      </o-select>
-    </o-field>
-
-    <o-field label="Error" variant="danger" message="Something went wrong with this field">
-      <o-select placeholder="Select a character">
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Rounded">
-      <o-select placeholder="Select a character" rounded>
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Disabled">
-      <o-select placeholder="Select a character" disabled>
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Disabled option">
-      <o-select placeholder="Select a character">
-        <option value="flint">Flint</option>
-        <option value="silver" disabled>Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Expanded">
-      <o-select placeholder="Select a character" expanded>
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Size 'large'">
-      <o-select placeholder="Large" size="large">
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-      </o-select>
-    </o-field>
-
-    <o-field label="Multiple">
-      <o-select multiple native-size="8" v-model="selectedOptions">
-        <option value="flint">Flint</option>
-        <option value="silver">Silver</option>
-        <option value="vane">Vane</option>
-        <option value="billy">Billy</option>
-        <option value="jack">Jack</option>
-        <option value="heisenberg">Heisenberg</option>
-        <option value="jesse">Jesse</option>
-        <option value="saul">Saul</option>
-        <option value="mike">Mike</option>
-      </o-select>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        selectedOptions: []
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_select.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field :variant="s.fieldvariant" :message="s.fieldmessage">
-                    <o-select placeholder="Select a character" v-bind="s" v-model="selectedOptions">
-                        <optgroup label="Black Sails">
-                            <option value="flint">Flint</option>
-                            <option value="silver">Silver</option>
-                            <option value="vane">Vane</option>
-                            <option value="billy">Billy</option>
-                            <option value="jack">Jack</option>
-                        </optgroup>
-                        <optgroup label="Breaking Bad">
-                            <option value="heisenberg">Heisenberg</option>
-                            <option value="jesse">Jesse</option>
-                            <option value="saul">Saul</option>
-                            <option value="mike">Mike</option>
-                        </optgroup>
-                    </o-select>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            selectedOptions: null,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconLeftSpaceClass",
-                    description: "Class of the left icon space inside the select",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconRightSpaceClass",
-                    description: "Class of the right icon space inside the select",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of select when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "multipleClass",
-                    description: "Class of the select when multiple mode is active",
-                    properties: ['multiple'],
-                    action: (cmp) => {
-                        cmp.data.multiple = true;
-                        this.selectedOptions = [];
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of select when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the left icon",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the right icon",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the select size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the select variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.fieldvariant = 'info';
-                        cmp.data.fieldmessage = "Info for this field"
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "selectClass",
-                    description: "Class of the native select element"
-                },
-                {
-                    class: "placeholderClass",
-                    description: "Class of the select placeholder",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "arrowClass",
-                    description: "Class of the select arrow",
-                    warning: "It applies the arrow icon using background-image and background-position on select element. An alternative to override it is iconRight prop (globally or not)",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name          | Description                                                 | Type                                   | Values                                                                          | Default                                                                                                                                    |
-| ------------------ | ----------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| autocomplete       | Native options to use in HTML5 validation                   | string                                 | -                                                                               |                                                                                                                                            |
-| expanded           | Makes input full width when inside a grouped or addon field | boolean                                | -                                                                               |                                                                                                                                            |
-| icon               | Icon name to be added                                       | string                                 | -                                                                               |                                                                                                                                            |
-| iconPack           | Icon pack to use                                            | string                                 | `mdi`, `fa`, `fas and any other custom icon pack`                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> select: {<br>&nbsp;&nbsp;iconPack: undefined<br>}</code>  |
-| iconRight          | Icon name to be added on the right side                     | string                                 | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> select: {<br>&nbsp;&nbsp;iconRight: undefined<br>}</code> |
-| maxlength          | Same as native maxlength, plus character counter            | number\|string                         | -                                                                               |                                                                                                                                            |
-| multiple           |                                                             | boolean                                | -                                                                               |                                                                                                                                            |
-| nativeSize         | Same as native size                                         | string\|number                         | -                                                                               |                                                                                                                                            |
-| override           | Override classes                                            | boolean                                | -                                                                               | false                                                                                                                                      |
-| placeholder        | Text when nothing is selected                               | string                                 | -                                                                               |                                                                                                                                            |
-| rounded            | Makes the element rounded                                   | boolean                                | -                                                                               |                                                                                                                                            |
-| size               | Vertical size of input, optional                            | string                                 | `small`, `medium`, `large`                                                      |                                                                                                                                            |
-| statusIcon         | Show status icon using field and variant prop               | boolean                                | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>           |
-| useHtml5Validation | Enable html 5 native validation                             | boolean                                | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code>   |
-| v-model            |                                                             | string\|number\|boolean\|object\|array | -                                                                               | null                                                                                                                                       |
-| validationMessage  | The message which is shown when a validation error occurs   | string                                 | -                                                                               |                                                                                                                                            |
-| variant            | Color of the control, optional                              | string                                 | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                            |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| blur       |            |
-| focus      |            |
-| invalid    |            |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                         | SASS Variable                  | Default                                               |
-| ------------------------------------ | ------------------------------ | ----------------------------------------------------- |
-| --oruga-select-background-color      | \$select-background-color      | #fff                                                  |
-| --oruga-select-border-color          | \$select-border-color          | \$grey-lighter                                        |
-| --oruga-select-border-width          | \$select-border-width          | 1px                                                   |
-| --oruga-select-border-style          | \$select-border-style          | solid                                                 |
-| --oruga-select-border-radius         | \$select-border-radius         | \$base-border-radius                                  |
-| --oruga-select-rounded-border-radius | \$select-rounded-border-radius | \$base-rounded-border-radius                          |
-| --oruga-select-box-shadow            | \$select-box-shadow            | none                                                  |
-| --oruga-select-color                 | \$select-color                 | #363636                                               |
-| --oruga-select-icon-zindex           | \$select-icon-zindex           | 4                                                     |
-| --oruga-select-height                | \$select-height                | \$control-height                                      |
-| --oruga-select-arrow-size            | \$select-arrow-size            | 1rem                                                  |
-| --oruga-select-line-height           | \$select-line-height           | \$base-line-height                                    |
-| --oruga-select-margin                | \$select-margin                | 0                                                     |
-| --oruga-select-max-width             | \$select-max-width             | 100%                                                  |
-| --oruga-select-width                 | \$select-width                 | 100%                                                  |
-| --oruga-select-placeholder-opacity   | \$select-placeholder-opacity   | \$base-disabled-opacity                               |
-| --oruga-select-padding               | \$select-padding               | $control-padding-vertical $control-padding-horizontal |
diff --git a/packages/docs/components/Sidebar.md b/packages/docs/components/Sidebar.md
deleted file mode 100644
index a406ed8a8..000000000
--- a/packages/docs/components/Sidebar.md
+++ /dev/null
@@ -1,371 +0,0 @@
----
-title: Sidebar
----
-
-# Sidebar
-
-> A sidebar to use as left/right overlay or static
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/sidebar/examples/Sidebar.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-sidebar :fullheight="fullheight" :fullwidth="fullwidth" :overlay="overlay" :right="right" :open.sync="open">
-      <o-button v-if="fullwidth" icon-left="times" label="Close" @click="open = false" />
-      <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-      <h3>Example</h3>
-    </o-sidebar>
-    <div class="block">
-      <o-field grouped group-multiline>
-        <o-switch v-model="overlay">Overlay</o-switch>
-        <o-switch v-model="fullheight">Fullheight</o-switch>
-        <o-switch v-model="fullwidth">Fullwidth</o-switch>
-        <o-switch v-model="right">Right</o-switch>
-      </o-field>
-    </div>
-
-    <br />
-
-    <o-button @click="open = true">Show</o-button>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        open: false,
-        overlay: true,
-        fullheight: true,
-        fullwidth: false,
-        right: false
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Static
-
-::: demo
-
-```html
-<template>
-  <div class="sidebar-page">
-    <section class="sidebar-layout">
-      <o-sidebar position="static" :mobile="mobile" :expand-on-hover="expandOnHover" :reduce="reduce" open>
-        <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-        <section style="padding: 1em">
-          <h5>Example 1</h5>
-          <h5>Example 2</h5>
-          <h5>Example 3</h5>
-          <h5>Example 4</h5>
-          <h5>Example 5</h5>
-        </section>
-      </o-sidebar>
-
-      <div style="padding: 1em">
-        <o-field>
-          <o-switch v-model="reduce">Reduced</o-switch>
-        </o-field>
-        <o-field>
-          <o-switch v-model="expandOnHover">Expand on hover</o-switch>
-        </o-field>
-        <br />
-        <o-field label="Mobile Layout">
-          <o-select v-model="mobile">
-            <option :value="null"></option>
-            <option value="reduced">Reduced</option>
-            <option value="hidden">Hidden</option>
-            <option value="fullwidth">Fullwidth</option>
-          </o-select>
-        </o-field>
-      </div>
-    </section>
-  </div>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        expandOnHover: false,
-        mobile: 'reduced',
-        reduce: false
-      }
-    }
-  }
-</script>
-
-<style>
-  .sidebar-page {
-    display: flex;
-    flex-direction: column;
-    width: 100%;
-    min-height: 100%;
-  }
-  .sidebar-layout {
-    display: flex;
-    flex-direction: row;
-    min-height: 100%;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_sidebar.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <div class="sidebar-page">
-                    <section class="sidebar-layout" v-if="position === 'static'">
-                        <o-sidebar v-bind="s" position="static" open>
-                            <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-                            <section style="padding: 1em">
-                            <h5>Example 1</h5>
-                            <h5>Example 2</h5>
-                            <h5>Example 3</h5>
-                            <h5>Example 4</h5>
-                            <h5>Example 5</h5>
-                            </section>
-                        </o-sidebar>
-                    </section>
-                    <section class="sidebar-layout" v-if="position !== 'static'">
-                        <o-sidebar v-bind="s" :position="position" :open.sync="open" variant="primary" style="--oruga-sidebar-zindex: 50">
-                            <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-                            <section style="padding: 1em">
-                            <h5>Example 1</h5>
-                            <h5>Example 2</h5>
-                            <h5>Example 3</h5>
-                            <h5>Example 4</h5>
-                            <h5>Example 5</h5>
-                            </section>
-                        </o-sidebar>
-                    </section>
-                </div>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            position: 'static',
-            open: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of sidebar component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the sidebar overlay",
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            this.open = true;
-                            cmp.data.overlay = true
-                            cmp.data.fullheight = true
-                        }, 400)
-                    }
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the sidebar content",
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "fixedClass",
-                    description: "Class of the sidebar when its position is fixed",
-                    properties: ['position'],
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            this.open = true;
-                            cmp.data.overlay = true
-                            cmp.data.fullheight = true
-                        }, 400)
-                    }
-                },
-                {
-                    class: "staticClass",
-                    description: "Class of the sidebar when its position is static",
-                    properties: ['position'],
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "absoluteClass",
-                    description: "Class of the sidebar when its position is absolute",
-                    properties: ['position'],
-                    warning: "Scroll to the top of this page to see the sidebar",
-                    action: (cmp) => {
-                        this.position = 'absolute';
-                        setTimeout(() => {
-                            cmp.data.fullheight = true
-                            this.open = true;
-                        }, 400)
-                    }
-                },
-                {
-                    class: "fullheightClass",
-                    description: "Class of the sidebar when is fullheight",
-                    properties: ['fullheight'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.fullheight = true;
-                    }
-                },
-                {
-                    class: "fullwidthClass",
-                    description: "Class of the sidebar when is fullwidth",
-                    properties: ['fullwidth'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.fullwidth = true;
-                    }
-                },
-                {
-                    class: "rightClass",
-                    description: "Class of the sidebar when is positioned on the right",
-                    properties: ['right'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.right = true;
-                    }
-                },
-                {
-                    class: "reduceClass",
-                    description: "Class of the sidebar when reduced",
-                    properties: ['reduce'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.reduce = true;
-                    }
-                },
-                {
-                    class: "expandOnHoverClass",
-                    description: "Class of the sidebar when expanded on hover",
-                    properties: ['expandOnHover'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.expandOnHover = true;
-                    }
-                },
-                {
-                    class: "expandOnHoverFixedClass",
-                    description: "Class of the sidebar when expanded on hover and its position is fixed",
-                    properties: ['expandOnHover', 'expandOnHoverFixed'],
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            cmp.data.expandOnHover = true;
-                            cmp.data.expandOnHoverFixed = true;
-                            this.open = true;
-                        }, 400)
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the sidebar variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "visibleClass",
-                    description : 'Class of the sidebar when sidebar is visible',
-                },
-                {
-                    class: "hiddenClass",
-                    description : 'Class of the sidebar when sidebar is hidden',
-                },
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name          | Description                                                                                                                                     | Type           | Values                                                                          | Default                                                                                                                                                 |
-| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| canCancel          | Sidebar cancel options                                                                                                                          | array\|boolean | `true`, `false`, `'escape'`, `'outside'`                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br>&nbsp;&nbsp;canCancel: ['escape', 'outside']<br>}</code> |
-| expandOnHover      | Expand sidebar on hover when reduced or mobile is reduce                                                                                        | boolean        | -                                                                               |                                                                                                                                                         |
-| expandOnHoverFixed | Expand sidebar on hover with fixed position when reduced or mobile is reduce                                                                    | boolean        | -                                                                               |                                                                                                                                                         |
-| fullheight         | Show sidebar in fullheight                                                                                                                      | boolean        | -                                                                               |                                                                                                                                                         |
-| fullwidth          | Show sidebar in fullwidth                                                                                                                       | boolean        | -                                                                               |                                                                                                                                                         |
-| mobile             | Custom layout on mobile                                                                                                                         | string         | `fullwidth`, `reduced`, `hidden`                                                |                                                                                                                                                         |
-| mobileBreakpoint   | Mobile breakpoint as max-width value                                                                                                            | string         | -                                                                               |                                                                                                                                                         |
-| onCancel           | Callback on cancel                                                                                                                              | func           | -                                                                               | Default function (see source code)                                                                                                                      |
-| open               | To control the behaviour of the sidebar programmatically, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding | boolean        | -                                                                               |                                                                                                                                                         |
-| overlay            | Show an overlay like modal                                                                                                                      | boolean        | -                                                                               |                                                                                                                                                         |
-| override           | Override classes                                                                                                                                | boolean        | -                                                                               | false                                                                                                                                                   |
-| position           | Skeleton position in relation to the window                                                                                                     | string         | `fixed`, `absolute`, `static`                                                   | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br>&nbsp;&nbsp;position: 'fixed'<br>}</code>                |
-| reduce             | Show a small sidebar                                                                                                                            | boolean        | -                                                                               |                                                                                                                                                         |
-| right              | Show the sidebar on right                                                                                                                       | boolean        | -                                                                               |                                                                                                                                                         |
-| scroll             |                                                                                                                                                 | string         | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br>&nbsp;&nbsp;scroll: 'clip'<br>}</code>                   |
-| variant            | Color of the sidebar, optional                                                                                                                  | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                                         |
-
-## Events
-
-| Event name  | Properties | Description |
-| ----------- | ---------- | ----------- |
-| close       |            |
-| update:open |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                             | SASS Variable                      | Default                             |
-| ---------------------------------------- | ---------------------------------- | ----------------------------------- |
-| --oruga-sidebar-overlay                  | \$sidebar-overlay                  | hsla(0,0%,4%,.86)                   |
-| --oruga-sidebar-box-shadow               | \$sidebar-box-shadow               | 5px 0px 13px 3px rgba(\$black, 0.1) |
-| --oruga-sidebar-content-background-color | \$sidebar-content-background-color | \$grey-lighter                      |
-| --oruga-sidebar-mobile-width             | \$sidebar-mobile-width             | 80px                                |
-| --oruga-sidebar-width                    | \$sidebar-width                    | 260px                               |
-| --oruga-sidebar-zindex                   | \$sidebar-zindex                   | 38                                  |
diff --git a/packages/docs/components/Skeleton.md b/packages/docs/components/Skeleton.md
deleted file mode 100644
index c1483a2f2..000000000
--- a/packages/docs/components/Skeleton.md
+++ /dev/null
@@ -1,150 +0,0 @@
----
-title: Skeleton
----
-
-# Skeleton
-
-> A placeholder for content to load
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/skeleton/examples/Skeleton.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-switch v-model="animated">Animated</o-switch>
-    </o-field>
-
-    <o-skeleton width="20%" :animated="animated"></o-skeleton>
-
-    <o-skeleton width="40%" :animated="animated"></o-skeleton>
-
-    <o-skeleton width="80%" :animated="animated"></o-skeleton>
-
-    <o-skeleton :animated="animated"></o-skeleton>
-
-    <o-skeleton :animated="animated" circle width="64px" height="64px"></o-skeleton>
-
-    <o-skeleton :animated="animated" size="large" :count="2"></o-skeleton>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        animated: true
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_skeleton.scss)
-
-<br />
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-skeleton v-bind="s" width="264px" :count="2"></o-skeleton>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'animationClass',
-          description : 'Class of the skeleton animation',
-
-          action: (cmp) => {
-            cmp.data.animated = true;
-          }
-        },
-        {
-          class: 'positionClass',
-          description : 'Class of the skeleton position',
-          properties: ['position'],
-          suffixes: ['left', 'centered', 'right'],
-          action: (cmp) => {
-            cmp.data.position = 'centered';
-          }
-        },
-        {
-          class: 'itemClass',
-          description : 'Class of the skeleton item'
-        },
-        {
-          class: 'itemRoundedClass',
-          description : 'Class of the skeleton item rounded',
-          properties: ['rounded'],
-          action: (cmp) => {
-            cmp.data.rounded = true;
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the skeleton size',
-          properties: ['size'],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name | Description                                  | Type           | Values                      | Default |
-| --------- | -------------------------------------------- | -------------- | --------------------------- | ------- |
-| active    | Show or hide loader                          | boolean        | -                           | true    |
-| animated  | Show a loading animation                     | boolean        | -                           | true    |
-| circle    | Show a circle shape                          | boolean        | -                           |         |
-| count     | Number of shapes to display                  | number         | -                           | 1       |
-| height    | Custom height                                | number\|string | -                           |         |
-| override  | Override classes                             | boolean        | -                           | false   |
-| position  | Skeleton position in relation to the element | string         | `left`, `centered`, `right` | 'left'  |
-| rounded   | Rounded style                                | boolean        | -                           | true    |
-| size      | Size of skeleton                             | string         | `small`, `medium`, `large`  |         |
-| width     | Custom width                                 | number\|string | -                           |         |
-
-## Style
-
-| CSS Variable                   | SASS Variable            | Default                                                                                     |
-| ------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------- |
-| --oruga-skeleton-background    | \$skeleton-background    | linear-gradient(90deg, $grey-lighter 25%, rgba($grey-lighter, 0.5) 50%, \$grey-lighter 75%) |
-| --oruga-skeleton-border-radius | \$skeleton-border-radius | \$base-border-radius                                                                        |
-| --oruga-skeleton-duration      | \$skeleton-duration      | 1.5s                                                                                        |
-| --oruga-skeleton-margin        | \$skeleton-margin        | .5rem 0 0 0                                                                                 |
diff --git a/packages/docs/components/Slider.md b/packages/docs/components/Slider.md
deleted file mode 100644
index 8e79f01bf..000000000
--- a/packages/docs/components/Slider.md
+++ /dev/null
@@ -1,369 +0,0 @@
----
-title: Slider
----
-
-# Slider
-
-> A slider to select a value or range from a given range
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/slider/examples/Slider.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Simple">
-      <o-slider v-model="value"></o-slider>
-    </o-field>
-
-    <o-field label="Warning">
-      <o-slider v-model="value" variant="warning"></o-slider>
-    </o-field>
-
-    <o-field label="Large">
-      <o-slider v-model="value" size="large"></o-slider>
-    </o-field>
-
-    <o-field label="Disabled">
-      <o-slider :value="30" disabled></o-slider>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        value: 5
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Customize
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Tooltip type">
-      <o-slider v-model="sliderValue" :tooltip-variant="sliderType"></o-slider>
-    </o-field>
-
-    <o-field label="Hide tooltip">
-      <o-slider :tooltip="false"></o-slider>
-    </o-field>
-
-    <o-field label="Custom tooltip label">
-      <o-slider :custom-formatter="val => val + '%'"></o-slider>
-    </o-field>
-
-    <o-field label="Rounded thumb">
-      <o-slider rounded></o-slider>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        sliderValue: 0
-      }
-    },
-    computed: {
-      sliderType() {
-        if (this.sliderValue > 25 && this.sliderValue < 75) {
-          return 'warning'
-        } else if (this.sliderValue >= 75) {
-          return 'success'
-        }
-        return 'danger'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Tick and label
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field label="Show ticks">
-      <o-slider :min="1" :max="10" ticks></o-slider>
-    </o-field>
-
-    <o-field label="Custom tick and label">
-      <o-slider size="medium" :min="0" :max="10">
-        <template v-for="val in [3, 5, 8]">
-          <o-slider-tick :value="val" :key="val">{{ val }}</o-slider-tick>
-        </template>
-      </o-slider>
-    </o-field>
-
-    <o-field label="Fan">
-      <o-slider :min="0" :max="3" aria-label="Fan" :tooltip="false">
-        <o-slider-tick :value="0">Off</o-slider-tick>
-        <o-slider-tick :value="1">Low</o-slider-tick>
-        <o-slider-tick :value="2">High</o-slider-tick>
-        <o-slider-tick :value="3">Auto</o-slider-tick>
-      </o-slider>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Range
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-slider v-model="numbers" :min="1" :max="15" :step="0.5" ticks> </o-slider>
-    </o-field>
-
-    <o-field>
-      <o-slider v-model="numbers2" variant="danger" :min="-2" :max="8" :step="2"> </o-slider>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        numbers: [2, 5],
-        numbers2: [2, 6]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_slider.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-slider v-bind="s" :min="1" :max="10" :value="4">
-                    <template v-for="val in [1, 2, 3, 4, 5, 6, 7, 8, 9]">
-                        <o-slider-tick v-bind="s" :value="val" :key="val">{{ val }}</o-slider-tick>
-                    </template>
-                </o-slider>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            subitem: "slider-tick",
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "trackClass",
-                    description: "Class of the slider track",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "fillClass",
-                    description: "Class of the filled part of the slider",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "thumbRoundedClass",
-                    description: "Class when the slider is rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true
-                    }
-                },
-                {
-                    class: "thumbDraggingClass",
-                    description: "Class when the thumb gets dragged",
-                    warning: "Drag the thumb to see it in action!",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class when slider is disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "thumbWrapperClass",
-                    description: "Class of the thumb wrapper",
-                    action: (cmp) => {
-                        cmp.data.fullScreen = true;
-                    }
-                },
-                {
-                    class: "thumbClass",
-                    description: "Class of the thumb",
-                    action: (cmp) => {
-                        cmp.data.fullScreen = true;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the slider variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "tickClass",
-                    description: "Class of slider tick",
-                    properties: ["ticks"],
-                    subitem: true,
-                },
-                {
-                    class: "tickHiddenClass",
-                    description: "Class when slider tick is hidden",
-                    properties: ["ticks"],
-                    subitem: true,
-                },
-                {
-                    class: "tickLabelClass",
-                    description: "Class of tick label",
-                    properties: ["ticks"],
-                    subitem: true,
-                }
-            ]
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name         | Description                                      | Type          | Values                                                                          | Default                                                                                                                              |
-| ----------------- | ------------------------------------------------ | ------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
-| ariaLabel         |                                                  | string\|array | -                                                                               |                                                                                                                                      |
-| biggerSliderFocus | Increases slider size on focus                   | boolean       | -                                                                               | false                                                                                                                                |
-| customFormatter   | Function to format the tooltip label for display | func          | -                                                                               |                                                                                                                                      |
-| disabled          |                                                  | boolean       | -                                                                               | false                                                                                                                                |
-| format            |                                                  | string        | -                                                                               | 'raw'                                                                                                                                |
-| indicator         |                                                  | boolean       | -                                                                               | false                                                                                                                                |
-| lazy              | Update v-model only when dragging is finished    | boolean       | -                                                                               | false                                                                                                                                |
-| locale            |                                                  | string\|array | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; locale: undefined<br>}</code>      |
-| max               | Maximum value                                    | number        | -                                                                               | 100                                                                                                                                  |
-| min               | Minimum value                                    | number        | -                                                                               | 0                                                                                                                                    |
-| override          | Override classes                                 | boolean       | -                                                                               | false                                                                                                                                |
-| rounded           | Rounded thumb                                    | boolean       | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> slider: {<br>&nbsp;&nbsp;rounded: false<br>}</code> |
-| size              | Vertical size of slider, optional                | string        | `small`, `medium`, `large`                                                      |                                                                                                                                      |
-| step              | Step interval of ticks                           | number        | -                                                                               | 1                                                                                                                                    |
-| ticks             | Show tick marks                                  | boolean       | -                                                                               | false                                                                                                                                |
-| tooltip           | Show tooltip when thumb is being dragged         | boolean       | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> slider: {<br>&nbsp;&nbsp;tooltip: true<br>}</code>  |
-| tooltipAlways     | Tooltip displays always                          | boolean       | -                                                                               | false                                                                                                                                |
-| tooltipVariant    | Color of the tooltip                             | string        | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                      |
-| v-model           |                                                  | number\|array | -                                                                               | 0                                                                                                                                    |
-| variant           | Color of the slider                              | string        | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                      |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| dragstart  |            |
-| dragend    |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
----
-
-# Slider Tick
-
-> <CarbonAds />
-
-## Props
-
-| Prop name | Description          | Type    | Values | Default |
-| --------- | -------------------- | ------- | ------ | ------- |
-| override  | Override classes     | boolean | -      | false   |
-| value     | Value of single tick | number  | -      | 0       |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                         | SASS Variable                  | Default                      |
-| ------------------------------------ | ------------------------------ | ---------------------------- |
-| --oruga-slider-background            | \$slider-background            | transparent                  |
-| --oruga-slider-margin                | \$slider-margin                | 1em 0                        |
-| --oruga-slider-mark-size             | \$slider-mark-size             | 0.75rem                      |
-| --oruga-slider-font-size             | \$slider-font-size             | \$base-font-size             |
-| --oruga-slider-rounded-borded-radius | \$slider-rounded-borded-radius | \$base-rounded-border-radius |
-| --oruga-slider-thumb-background      | \$slider-thumb-background      | \$white                      |
-| --oruga-slider-thumb-border          | \$slider-thumb-border          | 1px solid \$grey-light       |
-| --oruga-slider-thumb-radius          | \$slider-thumb-radius          | \$base-border-radius         |
-| --oruga-slider-thumb-shadow          | \$slider-thumb-shadow          | none                         |
-| --oruga-slider-thumb-to-track-ratio  | \$slider-thumb-to-track-ratio  | 2                            |
-| --oruga-slider-thumb-transform       | \$slider-thumb-transform       | scale(1.25)                  |
-| --oruga-slider-tick-background       | \$slider-tick-background       | \$primary                    |
-| --oruga-slider-tick-radius           | \$slider-tick-radius           | \$base-border-radius         |
-| --oruga-slider-tick-to-track-ratio   | \$slider-tick-to-track-ratio   | 0.5                          |
-| --oruga-slider-tick-width            | \$slider-tick-width            | 3px                          |
-| --oruga-slider-track-background      | \$slider-track-background      | \$grey-lighter               |
-| --oruga-slider-fill-background       | \$slider-fill-background       | \$primary                    |
-| --oruga-slider-track-border-radius   | \$slider-track-border-radius   | \$base-border-radius         |
-| --oruga-slider-track-border          | \$slider-track-border          | 0px solid \$grey             |
-| --oruga-slider-track-disabled        | \$slider-track-disabled        | 0.5                          |
-| --oruga-slider-track-radius          | \$slider-track-radius          | \$base-border-radius         |
-| --oruga-slider-track-shadow          | \$slider-track-shadow          | 0px 0px 0px \$grey           |
diff --git a/packages/docs/components/Steps.md b/packages/docs/components/Steps.md
deleted file mode 100644
index cf70559fc..000000000
--- a/packages/docs/components/Steps.md
+++ /dev/null
@@ -1,544 +0,0 @@
----
-title: Steps
----
-
-# Steps
-
-> Responsive horizontal process steps
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/steps/examples/Steps.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p>
-      <o-field grouped group-multiline>
-        <div class="control">
-          <o-switch v-model="showSocial"> Show Social step </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="isAnimated"> Animated </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="isRounded"> Rounded </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="isStepsClickable"> Clickable Marker </o-switch>
-        </div>
-      </o-field>
-      <o-field grouped group-multiline>
-        <div class="control">
-          <o-switch v-model="hasNavigation"> Navigation Buttons </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="customNavigation"> Custom Navigation </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="isProfileSuccess"> Set <code>success</code> for profile </o-switch>
-        </div>
-        <div class="control">
-          <o-switch v-model="enableProfileActivateEvent"> Enable profile activate event </o-switch>
-        </div>
-      </o-field>
-      <o-field v-if="hasNavigation" grouped group-multiline>
-        <o-field label="Prev icon">
-          <o-select v-model="prevIcon">
-            <option value="chevron-left">Chevron</option>
-            <option value="arrow-left">Arrow</option>
-          </o-select>
-        </o-field>
-        <o-field label="Next icon">
-          <o-select v-model="nextIcon">
-            <option value="chevron-right">Chevron</option>
-            <option value="arrow-right">Arrow</option>
-          </o-select>
-        </o-field>
-        <o-field label="Label position">
-          <o-select v-model="labelPosition">
-            <option value="bottom">Bottom</option>
-            <option value="right">Right</option>
-            <option value="left">Left</option>
-          </o-select>
-        </o-field>
-      </o-field>
-    </p>
-    <o-steps
-      v-model="activeStep"
-      :animated="isAnimated"
-      :rounded="isRounded"
-      :has-navigation="hasNavigation"
-      :icon-prev="prevIcon"
-      :icon-next="nextIcon"
-      :label-position="labelPosition"
-    >
-      <o-step-item step="1" label="Account" :clickable="isStepsClickable">
-        <h1 class="title has-text-centered">Account</h1>
-        Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <o-step-item step="2" label="Profile" :clickable="isStepsClickable" :variant="isProfileSuccess ? 'success': ''" @activate="onProfileActivate">
-        <h1 class="title has-text-centered">Profile</h1>
-        Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <o-step-item step="3" :visible="showSocial" label="Social" :clickable="isStepsClickable">
-        <h1 class="title has-text-centered">Social</h1>
-        Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <o-step-item :step="showSocial ? '4' : '3'" label="Finish" :clickable="isStepsClickable" disabled>
-        <h1 class="title has-text-centered">Finish</h1>
-        Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <template v-if="customNavigation" slot="navigation" slot-scope="{previous, next}">
-        <o-button outlined variant="danger" icon-pack="fas" icon-left="backward" :disabled="previous.disabled" @click.prevent="previous.action">
-          Previous
-        </o-button>
-        <o-button outlined variant="success" icon-pack="fas" icon-right="forward" :disabled="next.disabled" @click.prevent="next.action">
-          Next
-        </o-button>
-      </template>
-    </o-steps>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        activeStep: 1,
-
-        showSocial: false,
-        isAnimated: true,
-        isRounded: true,
-        isStepsClickable: false,
-
-        hasNavigation: true,
-        customNavigation: false,
-        isProfileSuccess: false,
-        enableProfileActivateEvent: false,
-
-        prevIcon: 'chevron-left',
-        nextIcon: 'chevron-right',
-        labelPosition: 'bottom'
-      }
-    },
-    methods: {
-      onProfileActivate() {
-        if (this.enableProfileActivateEvent) {
-          alert('Profile Activated')
-        }
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Variants
-
-::: demo
-
-```html
-<template>
-  <section>
-    <h4>Warning</h4>
-    <o-steps variant="warning">
-      <o-step-item label="Account" icon="user-lock"></o-step-item>
-      <o-step-item label="Profile" icon="user"></o-step-item>
-      <o-step-item label="Social" icon="user-plus"></o-step-item>
-    </o-steps>
-
-    <h4>Info</h4>
-    <o-steps variant="info">
-      <o-step-item label="Account" icon="user-lock"></o-step-item>
-      <o-step-item label="Profile" icon="user"></o-step-item>
-      <o-step-item label="Social" icon="user-plus"></o-step-item>
-    </o-steps>
-
-    <h4>Success</h4>
-    <o-steps variant="success">
-      <o-step-item label="Account" icon="user-lock"></o-step-item>
-      <o-step-item label="Profile" icon="user"></o-step-item>
-      <o-step-item label="Social" icon="user-plus"></o-step-item>
-    </o-steps>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Vertical
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="position" true-value="right"> Right position </o-switch>
-      </div>
-      <o-field label="Size">
-        <o-select v-model="size" placeholder="Size">
-          <option :value="null">Default</option>
-          <option value="small">Small</option>
-          <option value="medium">Medium</option>
-          <option value="large">Large</option>
-        </o-select>
-      </o-field>
-      <o-field label="Label position" label-position="on-border">
-        <o-select v-model="labelPosition">
-          <option value="bottom">Bottom</option>
-          <option value="right">Right</option>
-          <option value="left">Left</option>
-        </o-select>
-      </o-field>
-    </o-field>
-
-    <o-steps :position="position" :label-position="labelPosition" :size="size" vertical>
-      <o-step-item label="Account" icon="user-lock">
-        Account: Lorem ipsum dolor sit amet. <br />
-        Account: Lorem ipsum dolor sit amet. <br />
-        Account: Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <o-step-item label="Profile" icon="user">
-        Profile: Lorem ipsum dolor sit amet. <br />
-        Profile: Lorem ipsum dolor sit amet.? <br />
-        Profile: Lorem ipsum dolor sit amet. <br />
-        Profile: Lorem ipsum dolor sit amet.
-      </o-step-item>
-
-      <o-step-item label="Social" icon="user-plus" disabled>
-        Social: Lorem ipsum dolor sit amet. <br />
-        Social: Lorem ipsum dolor sit amet. <br />
-        Social: Lorem ipsum dolor sit amet. <br />
-        Social: Lorem ipsum dolor sit amet. <br />
-        Social: Lorem ipsum dolor sit amet.
-      </o-step-item>
-    </o-steps>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        labelPosition: 'bottom',
-        position: null,
-        size: null
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_steps.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-steps v-bind="s" v-model="activeStep">
-                    <o-step-item v-bind="s" label="Account" icon="user-lock" step="1">
-                        <h1 class="title has-text-centered">Account</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                    <o-step-item v-bind="s" label="Profile" icon="user" clickable step="2">
-                        <h1 class="title has-text-centered">Profile</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                    <o-step-item v-bind="s" label="Social" icon="user-plus" step="3">
-                        <h1 class="title has-text-centered">Social</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                </o-steps>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            activeStep: 1,
-            subitem: 'step-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of steps component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Size of the steps",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: "verticalClass",
-                    description: "Class of the tooltip trigger",
-                    properties: ['vertical'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                    }
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of the Steps component when is vertical and its position changes",
-                    properties: ['position', 'vertical'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the content item",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the nav item",
-                    specificity: "when <b>positionClass</b> is applied",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderActiveClass",
-                    description: "Class of the nav item when active",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderPreviousClass",
-                    description: "Class of the nav item behind the active one",
-                    subitem: true,
-                    action: () => {
-                        this.activeStep = 2;
-                    }
-                },
-                {
-                    class: "itemHeaderVariantClass",
-                    description: "Class of the nav item with variant (default value by parent steps component)",
-                    subitem: true,
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "stepsClass",
-                    description: "Class of the steps container",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "animatedClass",
-                    description: "Class of Steps component when animation gets triggered",
-                    properties: ['animated'],
-                    action: (cmp) => {
-                        cmp.data.animated = true
-                    }
-                },
-                {
-                    class: "stepMarkerRoundedClass",
-                    description: "Class of the Steps markers trigger when are rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "stepDividerClass",
-                    description: "Class of the Steps component dividers",
-                    specificity: "when <b>mobileClass</b> or <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> or <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepMarkerClass",
-                    description: "Class of the Steps component marker",
-                    specificity: "when <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepContentClass",
-                    description: "Class of the Steps component content",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepContentTransitioningClass",
-                    description: "Class of the Steps component content when transition is happening",
-                    warning: "Click on a marker to see it in action",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepNavigationClass",
-                    description: "Class of the Steps component navigation element",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkLabelClass",
-                    description: "Class of the Step component link label",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkClass",
-                    description: "Class of the Steps component link",
-                    specificity: "when <b>itemHeaderActiveClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkClickableClass",
-                    description: "Class of the Steps component link when clickable",
-                    properties: ["clickable"],
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkLabelPositionClass",
-                    description: "Class of the Step component link label when positioned",
-                    properties: ['labelPosition'],
-                    suffixes: ['bottom', 'right', 'left'],
-                    action: (cmp) => {
-                        cmp.data.labelPosition = "right"
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name         | Description                                                                                                                   | Type           | Values                                                                          | Default                                                                                                                                        |
-| ----------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
-| animated          | Step navigation is animated                                                                                                   | boolean        | -                                                                               | true                                                                                                                                           |
-| ariaNextLabel     |                                                                                                                               | string         | -                                                                               |                                                                                                                                                |
-| ariaPreviousLabel |                                                                                                                               | string         | -                                                                               |                                                                                                                                                |
-| destroyOnHide     | Destroy tab on hide                                                                                                           | boolean        | -                                                                               | false                                                                                                                                          |
-| hasNavigation     | Next and previous buttons below the component. You can use this property if you want to use your own custom navigation items. | boolean        | -                                                                               | true                                                                                                                                           |
-| iconNext          | Icon to use for navigation button                                                                                             | string         | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> steps: {<br>&nbsp;&nbsp;iconNext: 'chevron-right'<br>}</code> |
-| iconPack          | Icon pack to use for the navigation                                                                                           | string         | `mdi`, `fa`, `fas and any other custom icon pack`                               |                                                                                                                                                |
-| iconPrev          | Icon to use for navigation button                                                                                             | string         | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> steps: {<br>&nbsp;&nbsp;iconPrev: 'chevron-left'<br>}</code>  |
-| labelPosition     | Position of the marker label, optional                                                                                        | string         | `bottom`, `right`, `left`                                                       | 'bottom'                                                                                                                                       |
-| mobileBreakpoint  | Mobile breakpoint as max-width value                                                                                          | string         | -                                                                               |                                                                                                                                                |
-| override          | Override classes                                                                                                              | boolean        | -                                                                               | false                                                                                                                                          |
-| position          | Position of the tab, optional                                                                                                 | string         | `centered`, `right`                                                             |                                                                                                                                                |
-| rounded           | Rounded step markers                                                                                                          | boolean        | -                                                                               | true                                                                                                                                           |
-| size              | Tab size, optional                                                                                                            | string         | `small`, `medium`, `large`                                                      |                                                                                                                                                |
-| v-model           |                                                                                                                               | string\|number | -                                                                               |                                                                                                                                                |
-| variant           | Color of the control, optional                                                                                                | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                                |
-| vertical          | Show tab in vertical layout                                                                                                   | boolean        | -                                                                               | false                                                                                                                                          |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| input      |            |
-
-### Slots
-
-| Name       | Description | Bindings |
-| ---------- | ----------- | -------- |
-| default    |             |          |
-| navigation |             | <br>     |
-
----
-
-# Step Item
-
-> <CarbonAds />
-
-## Props
-
-| Prop name | Description                                                                                                                         | Type           | Values | Default   |
-| --------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | --------- |
-| clickable | Item can be used directly to navigate. If undefined, previous steps are clickable while the others are not                          | boolean        | -      | undefined |
-| icon      | Icon on the left                                                                                                                    | string         | -      |           |
-| iconPack  | Icon pack                                                                                                                           | string         | -      |           |
-| label     | Item label                                                                                                                          | string         | -      |           |
-| override  | Override classes                                                                                                                    | boolean        | -      | false     |
-| step      | Step marker content (when there is no icon)                                                                                         | string\|number | -      |           |
-| value     | Item value (it will be used as v-model of wrapper component)                                                                        | string\|number | -      |           |
-| variant   | Default style for the step, optional This will override parent type. Could be used to set a completed step to "success" for example | string\|object | -      |           |
-| visible   | Show/hide item                                                                                                                      | boolean        | -      | true      |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| activate   |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                               | SASS Variable                        | Default                      |
-| ------------------------------------------ | ------------------------------------ | ---------------------------- |
-| --oruga-steps-details-background-color     | \$steps-details-background-color     | hsl(0, 0%, 100%)             |
-| --oruga-steps-details-padding              | \$steps-details-padding              | .2em                         |
-| --oruga-steps-marker-background            | \$steps-marker-background            | \$grey-light                 |
-| --oruga-steps-marker-color                 | \$steps-marker-color                 | \$primary-invert             |
-| --oruga-steps-marker-border                | \$steps-marker-border                | .2em solid #fff              |
-| --oruga-steps-marker-font-weight           | \$steps-marker-font-weight           | 700                          |
-| --oruga-steps-marker-rounded-border-radius | \$steps-marker-rounded-border-radius | \$base-rounded-border-radius |
-| --oruga-steps-color                        | \$steps-color                        | \$grey-lighter               |
-| --oruga-steps-previous-color               | \$steps-previous-color               | \$primary                    |
-| --oruga-steps-active-color                 | \$steps-active-color                 | \$primary                    |
-| --oruga-steps-divider-height               | \$steps-divider-height               | .2em                         |
-| --oruga-steps-vertical-padding             | \$steps-vertical-padding             | 1em 0                        |
-| --oruga-steps-item-line-height             | \$steps-item-line-height             | \$base-line-height           |
-| --oruga-steps-link-color                   | \$steps-link-color                   | hsl(0, 0%, 29%)              |
-| --oruga-steps-content-padding              | \$steps-content-padding              | 1rem                         |
-| --oruga-steps-font-size                    | \$steps-font-size                    | \$base-font-size             |
-| --oruga-steps-details-title-font-weight    | \$steps-details-title-font-weight    | 600                          |
diff --git a/packages/docs/components/Switch.md b/packages/docs/components/Switch.md
deleted file mode 100644
index 788e45825..000000000
--- a/packages/docs/components/Switch.md
+++ /dev/null
@@ -1,343 +0,0 @@
----
-title: Switch
----
-
-# Switch
-
-> Switch between two opposing states
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/switch/examples/Switch.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-switch>Default</o-switch>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isSwitched">
-        {{ isSwitched }}
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch v-model="isSwitchedCustom" true-value="Yes" false-value="No">
-        {{ isSwitchedCustom }}
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch disabled>Disabled</o-switch>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        isSwitched: false,
-        isSwitchedCustom: 'Yes'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Variants
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-switch :value="true">
-        Default
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch :value="true" variant="info">
-        Info
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch :value="true" variant="success">
-        Success
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch :value="true" variant="danger">
-        Danger
-      </o-switch>
-    </o-field>
-    <o-field>
-      <o-switch :value="true" variant="warning">
-        Warning
-      </o-switch>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Sizes
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-switch size="small">Small</o-switch>
-    </o-field>
-    <o-field>
-      <o-switch>Default</o-switch>
-    </o-field>
-    <o-field>
-      <o-switch size="medium">Medium</o-switch>
-    </o-field>
-    <o-field>
-      <o-switch size="large">Large</o-switch>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Style variants
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped>
-      <o-switch v-model="isRounded">Rounded</o-switch>
-      <o-switch v-model="position" true-value="left" false-value="right">Label on left</o-switch>
-    </o-field>
-    <o-field label="Variant">
-      <o-select expanded v-model="variant" placeholder="Variant">
-        <option value="null">Default</option>
-        <option value="primary">Primary</option>
-        <option value="success">Success</option>
-        <option value="warning">Warning</option>
-        <option value="danger">Danger</option>
-      </o-select>
-    </o-field>
-    <o-field label="Passive Variant">
-      <o-select expanded v-model="passive" placeholder="Passive Variant">
-        <option value="null">Default</option>
-        <option value="primary">Primary</option>
-        <option value="success">Success</option>
-        <option value="warning">Warning</option>
-        <option value="danger">Danger</option>
-      </o-select>
-    </o-field>
-    <o-field label="Size">
-      <o-select expanded v-model="size">
-        <option value="">Default</option>
-        <option value="small">small</option>
-        <option value="medium">medium</option>
-        <option value="large">large</option>
-      </o-select>
-    </o-field>
-    <o-switch :rounded="isRounded" :position="position" :size="size" :variant="variant" :passive-variant="passive">Sample</o-switch>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        size: '',
-        variant: null,
-        passive: null,
-        isRounded: false,
-        position: 'right'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_switch.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-switch v-bind="s" v-model="checkValue">Switch</o-switch>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            checkValue: true,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "inputClass",
-                    description: "Root class of the native input checkbox",
-                },
-                {
-                    class: "checkClass",
-                    description: "Class of the switch check",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "checkCheckedClass",
-                    description: "Class of the switch check when checked",
-                    action: () => {
-                        this.checkValue = true;
-                    }
-                },
-                {
-                    class: "checkSwitchClass",
-                    description: "Class of the switch check",
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the switch when rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class when slider is disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "labelClass",
-                    description: "Class of the switch label"
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of switch label position",
-                    properties: ["position"],
-                    action: (cmp) => {
-                        cmp.data.position = 'left';
-                    }
-                },
-                {
-                    class: 'sizeClass',
-                    description : 'Class of the switch size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: 'variantClass',
-                    description : 'Class of the switch variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                        this.checkValue = true;
-                    }
-                },
-                {
-                    class: "passiveVariantClass",
-                    description : 'Class of the switch passive variant',
-                    properties: ["passiveVariant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.passiveVariant = 'danger';
-                        this.checkValue = false;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name      | Description                                                                         | Type                    | Values                                                                          | Default |
-| -------------- | ----------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------- | ------- |
-| ariaLabelledby | Accessibility label to establish relationship between the switch and control label' | string                  | -                                                                               |         |
-| disabled       |                                                                                     | boolean                 | -                                                                               |         |
-| falseValue     | Overrides the returned value when it's not checked                                  | string\|number\|boolean | -                                                                               | false   |
-| name           | Name attribute on native checkbox                                                   | string                  | -                                                                               |         |
-| nativeValue    | Same as native value                                                                | string\|number\|boolean | -                                                                               |         |
-| override       | Override classes                                                                    | boolean                 | -                                                                               | false   |
-| passiveVariant | Color of the switch when is passive, optional                                       | string                  | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |         |
-| position       | Label position                                                                      | string                  | -                                                                               | 'right' |
-| required       |                                                                                     | boolean                 | -                                                                               |         |
-| rounded        | Rounded style                                                                       | boolean                 | -                                                                               | true    |
-| size           | Vertical size of switch, optional                                                   | string                  | `small`, `medium`, `large`                                                      |         |
-| trueValue      | Overrides the returned value when it's checked                                      | string\|number\|boolean | -                                                                               | true    |
-| v-model        |                                                                                     | string\|number\|boolean | -                                                                               |         |
-| variant        | Color of the switch, optional                                                       | string                  | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |         |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                           | SASS Variable                    | Default                                                                                          |
-| -------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------ |
-| --oruga-switch-active-background-color | \$switch-active-background-color | \$primary                                                                                        |
-| --oruga-switch-action-background       | \$switch-action-background       | #f5f5f5                                                                                          |
-| --oruga-switch-background              | \$switch-background              | \$grey-light                                                                                     |
-| --oruga-switch-border-radius           | \$switch-border-radius           | \$base-border-radius                                                                             |
-| --oruga-switch-box-shadow              | \$switch-box-shadow              | 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05) |
-| --oruga-switch-disabled-opacity        | \$switch-disabled-opacity        | \$base-disabled-opacity                                                                          |
-| --oruga-switch-margin-label            | \$switch-margin-label            | .5em                                                                                             |
-| --oruga-switch-padding                 | \$switch-padding                 | 0.2em                                                                                            |
-| --oruga-switch-rounded-border-radius   | \$switch-rounded-border-radius   | \$base-rounded-border-radius                                                                     |
-| --oruga-switch-width                   | \$switch-width                   | 2.75 \* 1em                                                                                      |
diff --git a/packages/docs/components/Table.md b/packages/docs/components/Table.md
deleted file mode 100644
index 8f6e5b546..000000000
--- a/packages/docs/components/Table.md
+++ /dev/null
@@ -1,2177 +0,0 @@
----
-title: Table
----
-
-# Table
-
-> Tabulated data are sometimes needed, it's even better when it's responsive
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/table/examples/Table.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <o-table :data="data" :columns="columns"></o-table>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            first_name: 'Jesse',
-            last_name: 'Simmons',
-            date: '2016-10-15 13:43:27',
-            gender: 'Male'
-          },
-          {
-            id: 2,
-            first_name: 'John',
-            last_name: 'Jacobs',
-            date: '2016-12-15 06:00:53',
-            gender: 'Male'
-          },
-          {
-            id: 3,
-            first_name: 'Tina',
-            last_name: 'Gilbert',
-            date: '2016-04-26 06:26:28',
-            gender: 'Female'
-          },
-          {
-            id: 4,
-            first_name: 'Clarence',
-            last_name: 'Flores',
-            date: '2016-04-10 10:28:46',
-            gender: 'Male'
-          },
-          {
-            id: 5,
-            first_name: 'Anne',
-            last_name: 'Lee',
-            date: '2016-12-06 14:38:38',
-            gender: 'Female'
-          }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name'
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name'
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Sandbox
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-switch v-model="isBordered">Bordered</o-switch>
-      <o-switch v-model="isStriped">Striped</o-switch>
-      <o-switch v-model="isNarrowed">Narrowed</o-switch>
-      <o-switch v-model="isHoverable">Hoverable</o-switch>
-      <o-switch v-model="isFocusable">Focusable</o-switch>
-      <o-switch v-model="isLoading">Loading state</o-switch>
-      <o-switch v-model="isEmpty">Empty</o-switch>
-      <o-switch v-model="hasMobileCards">Mobile cards <small>(collapsed rows)</small></o-switch>
-    </o-field>
-
-    <o-table
-      :data="isEmpty ? [] : data"
-      :bordered="isBordered"
-      :striped="isStriped"
-      :narrowed="isNarrowed"
-      :hoverable="isHoverable"
-      :loading="isLoading"
-      :focusable="isFocusable"
-      :mobile-cards="hasMobileCards"
-    >
-      <o-table-column field="id" label="ID" width="40" numeric v-slot="props">
-        {{ props.row.id }}
-      </o-table-column>
-
-      <o-table-column field="first_name" label="First Name" v-slot="props">
-        {{ props.row.first_name }}
-      </o-table-column>
-
-      <o-table-column field="last_name" label="Last Name" v-slot="props">
-        {{ props.row.last_name }}
-      </o-table-column>
-
-      <o-table-column field="date" label="Date" position="centered" v-slot="props">
-        {{ new Date(props.row.date).toLocaleDateString() }}
-      </o-table-column>
-
-      <o-table-column label="Gender" v-slot="props">
-        <span>
-          <o-icon pack="fas" :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"> </o-icon>
-          {{ props.row.gender }}
-        </span>
-      </o-table-column>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: 'Jesse',
-          last_name: 'Simmons',
-          date: '2016/10/15 13:43:27',
-          gender: 'Male'
-        },
-        {
-          id: 2,
-          first_name: 'John',
-          last_name: 'Jacobs',
-          date: '2016/12/15 06:00:53',
-          gender: 'Male'
-        },
-        {
-          id: 3,
-          first_name: 'Tina',
-          last_name: 'Gilbert',
-          date: '2016/04/26 06:26:28',
-          gender: 'Female'
-        },
-        {
-          id: 4,
-          first_name: 'Clarence',
-          last_name: 'Flores',
-          date: '2016/04/10 10:28:46',
-          gender: 'Male'
-        },
-        {
-          id: 5,
-          first_name: 'Anne',
-          last_name: 'Lee',
-          date: '2016/12/06 14:38:38',
-          gender: 'Female'
-        }
-      ]
-
-      return {
-        data,
-        isEmpty: false,
-        isBordered: false,
-        isStriped: false,
-        isNarrowed: false,
-        isHoverable: false,
-        isFocusable: false,
-        isLoading: false,
-        hasMobileCards: true
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Selection
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-button variant="danger" @click="selected = null" :disabled="!selected" icon-left="times">
-      <span>Clear selected</span>
-    </o-button>
-
-    <p>
-      {{ selected }}
-    </p>
-
-    <o-table :data="data" :columns="columns" :selected.sync="selected" focusable> </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: 'Jesse',
-          last_name: 'Simmons',
-          date: '2016-10-15 13:43:27',
-          gender: 'Male'
-        },
-        {
-          id: 2,
-          first_name: 'John',
-          last_name: 'Jacobs',
-          date: '2016-12-15 06:00:53',
-          gender: 'Male'
-        },
-        {
-          id: 3,
-          first_name: 'Tina',
-          last_name: 'Gilbert',
-          date: '2016-04-26 06:26:28',
-          gender: 'Female'
-        },
-        {
-          id: 4,
-          first_name: 'Clarence',
-          last_name: 'Flores',
-          date: '2016-04-10 10:28:46',
-          gender: 'Male'
-        },
-        {
-          id: 5,
-          first_name: 'Anne',
-          last_name: 'Lee',
-          date: '2016-12-06 14:38:38',
-          gender: 'Female'
-        }
-      ]
-
-      return {
-        data,
-        selected: data[1],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name'
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name'
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Pagination
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-select v-model="defaultSortDirection">
-        <option value="asc">Default sort direction: ASC</option>
-        <option value="desc">Default sort direction: DESC</option>
-      </o-select>
-      <o-select v-model="perPage" :disabled="!isPaginated">
-        <option value="5">5 per page</option>
-        <option value="10">10 per page</option>
-        <option value="15">15 per page</option>
-        <option value="20">20 per page</option>
-      </o-select>
-      <o-button @click="currentPage = 2" :disabled="!isPaginated">Set page to 2</o-button>
-      <o-switch v-model="isPaginated">Paginated</o-switch>
-      <o-switch v-model="isPaginationSimple" :disabled="!isPaginated">Simple pagination</o-switch>
-      <o-select v-model="paginationPosition" :disabled="!isPaginated">
-        <option value="bottom">bottom pagination</option>
-        <option value="top">top pagination</option>
-        <option value="both">both</option>
-      </o-select>
-      <o-select v-model="sortIcon">
-        <option value="arrow-up">Arrow sort icon</option>
-        <option value="caret-up">Caret sort icon</option>
-        <option value="chevron-up">Chevron sort icon </option>
-      </o-select>
-      <o-select v-model="sortIconSize">
-        <option value="small">Small sort icon</option>
-        <option value="">Regular sort icon</option>
-        <option value="medium">Medium sort icon</option>
-        <option value="large">Large sort icon</option>
-      </o-select>
-    </o-field>
-
-    <o-table
-      :data="data"
-      :paginated="isPaginated"
-      :per-page="perPage"
-      :current-page.sync="currentPage"
-      :pagination-simple="isPaginationSimple"
-      :pagination-position="paginationPosition"
-      :default-sort-direction="defaultSortDirection"
-      :sort-icon="sortIcon"
-      :sort-icon-size="sortIconSize"
-      default-sort="user.first_name"
-      aria-next-label="Next page"
-      aria-previous-label="Previous page"
-      aria-page-label="Page"
-      aria-current-label="Current page"
-    >
-      <o-table-column field="id" label="ID" width="40" sortable numeric v-slot="props">
-        {{ props.row.id }}
-      </o-table-column>
-
-      <o-table-column field="user.first_name" label="First Name" sortable v-slot="props">
-        {{ props.row.user.first_name }}
-      </o-table-column>
-
-      <o-table-column field="user.last_name" label="Last Name" sortable v-slot="props">
-        {{ props.row.user.last_name }}
-      </o-table-column>
-
-      <o-table-column field="date" label="Date" sortable position="centered" v-slot="props">
-        {{ new Date(props.row.date).toLocaleDateString() }}
-      </o-table-column>
-
-      <o-table-column label="Gender" v-slot="props">
-        <span>
-          <o-icon pack="fas" :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"> </o-icon>
-          {{ props.row.gender }}
-        </span>
-      </o-table-column>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  const data = [
-    {
-      id: 1,
-      user: { first_name: 'Jesse', last_name: 'Simmons' },
-      date: '2016/10/15 13:43:27',
-      gender: 'Male'
-    },
-    {
-      id: 2,
-      user: { first_name: 'John', last_name: 'Jacobs' },
-      date: '2016/12/15 06:00:53',
-      gender: 'Male'
-    },
-    {
-      id: 3,
-      user: { first_name: 'Tina', last_name: 'Gilbert' },
-      date: '2016/04/26 06:26:28',
-      gender: 'Female'
-    },
-    {
-      id: 4,
-      user: { first_name: 'Clarence', last_name: 'Flores' },
-      date: '2016/04/10 10:28:46',
-      gender: 'Male'
-    },
-    {
-      id: 5,
-      user: { first_name: 'Anne', last_name: 'Lee' },
-      date: '2016/12/06 14:38:38',
-      gender: 'Female'
-    },
-    {
-      id: 6,
-      user: { first_name: 'Sara', last_name: 'Armstrong' },
-      date: '2016/09/23 18:50:04',
-      gender: 'Female'
-    },
-    {
-      id: 7,
-      user: { first_name: 'Anthony', last_name: 'Webb' },
-      date: '2016/08/30 23:49:38',
-      gender: 'Male'
-    },
-    {
-      id: 8,
-      user: { first_name: 'Andrew', last_name: 'Greene' },
-      date: '2016/11/20 14:57:47',
-      gender: 'Male'
-    },
-    {
-      id: 9,
-      user: { first_name: 'Russell', last_name: 'White' },
-      date: '2016/07/13 09:29:49',
-      gender: 'Male'
-    },
-    {
-      id: 10,
-      user: { first_name: 'Lori', last_name: 'Hunter' },
-      date: '2016/12/09 01:44:05',
-      gender: 'Female'
-    },
-    {
-      id: 11,
-      user: { first_name: 'Ronald', last_name: 'Wood' },
-      date: '2016/12/04 02:23:48',
-      gender: 'Male'
-    },
-    {
-      id: 12,
-      user: { first_name: 'Michael', last_name: 'Harper' },
-      date: '2016/07/27 13:28:15',
-      gender: 'Male'
-    },
-    {
-      id: 13,
-      user: { first_name: 'George', last_name: 'Dunn' },
-      date: '2017/03/07 12:26:52',
-      gender: 'Male'
-    },
-    {
-      id: 14,
-      user: { first_name: 'Eric', last_name: 'Rogers' },
-      date: '2016/06/07 05:41:52',
-      gender: 'Male'
-    },
-    {
-      id: 15,
-      user: { first_name: 'Juan', last_name: 'Meyer' },
-      date: '2017/02/01 04:56:34',
-      gender: 'Male'
-    },
-    {
-      id: 16,
-      user: { first_name: 'Silvia', last_name: 'Rosa' },
-      date: '2017/01/26 11:50:04',
-      gender: 'Female'
-    },
-    {
-      id: 17,
-      user: { first_name: 'Lori', last_name: 'Cunningham' },
-      date: '2016/05/01 10:00:56',
-      gender: 'Female'
-    },
-    {
-      id: 18,
-      user: { first_name: 'Charles', last_name: 'Graham' },
-      date: '2016/05/31 06:43:30',
-      gender: 'Male'
-    },
-    {
-      id: 19,
-      user: { first_name: 'Henry', last_name: 'Morrison' },
-      date: '2016/09/27 16:15:44',
-      gender: 'Male'
-    },
-    {
-      id: 20,
-      user: { first_name: 'Albert', last_name: 'Mendoza' },
-      date: '2016/08/08 05:29:24',
-      gender: 'Male'
-    },
-    {
-      id: 21,
-      user: { first_name: 'Ruby', last_name: 'Snyder' },
-      date: '2017/04/01 12:04:39',
-      gender: 'Female'
-    },
-    {
-      id: 22,
-      user: { first_name: 'Jesse', last_name: 'Warren' },
-      date: '2016/08/20 01:36:38',
-      gender: 'Male'
-    },
-    {
-      id: 23,
-      user: { first_name: 'Carlos', last_name: 'Ferguson' },
-      date: '2016/05/31 10:40:29',
-      gender: 'Male'
-    },
-    {
-      id: 24,
-      user: { first_name: 'Melissa', last_name: 'Peters' },
-      date: '2016/07/23 00:41:54',
-      gender: 'Female'
-    },
-    {
-      id: 25,
-      user: { first_name: 'Arthur', last_name: 'Garza' },
-      date: '2017/03/11 14:11:37',
-      gender: 'Male'
-    },
-    {
-      id: 26,
-      user: { first_name: 'Joe', last_name: 'Berry' },
-      date: '2016/07/09 15:16:56',
-      gender: 'Male'
-    },
-    {
-      id: 27,
-      user: { first_name: 'Joseph', last_name: 'Bishop' },
-      date: '2016/10/04 19:44:54',
-      gender: 'Male'
-    },
-    {
-      id: 28,
-      user: { first_name: 'Sarah', last_name: 'Harper' },
-      date: '2016/09/23 05:09:11',
-      gender: 'Female'
-    },
-    {
-      id: 29,
-      user: { first_name: 'Christopher', last_name: 'Fuller' },
-      date: '2016/04/12 00:05:35',
-      gender: 'Male'
-    },
-    {
-      id: 30,
-      user: { first_name: 'Alan', last_name: 'Mendoza' },
-      date: '2016/04/22 10:48:02',
-      gender: 'Male'
-    },
-    {
-      id: 31,
-      user: { first_name: 'James', last_name: 'Davis' },
-      date: '2017/01/16 15:17:03',
-      gender: 'Male'
-    },
-    {
-      id: 32,
-      user: { first_name: 'Scott', last_name: 'Welch' },
-      date: '2016/10/04 23:31:51',
-      gender: 'Male'
-    },
-    {
-      id: 33,
-      user: { first_name: 'Mildred', last_name: 'Myers' },
-      date: '2016/11/23 13:46:18',
-      gender: 'Female'
-    },
-    {
-      id: 34,
-      user: { first_name: 'Victor', last_name: 'Martinez' },
-      date: '2016/04/06 17:05:07',
-      gender: 'Male'
-    },
-    {
-      id: 35,
-      user: { first_name: 'Susan', last_name: 'Medina' },
-      date: '2016/12/09 10:33:37',
-      gender: 'Female'
-    },
-    {
-      id: 36,
-      user: { first_name: 'Judy', last_name: 'Long' },
-      date: '2016/07/26 16:19:04',
-      gender: 'Female'
-    },
-    {
-      id: 37,
-      user: { first_name: 'Joan', last_name: 'Myers' },
-      date: '2016/09/22 04:55:54',
-      gender: 'Female'
-    },
-    {
-      id: 38,
-      user: { first_name: 'Rachel', last_name: 'Gonzales' },
-      date: '2016/07/15 13:56:38',
-      gender: 'Female'
-    },
-    {
-      id: 39,
-      user: { first_name: 'Roger', last_name: 'Hunt' },
-      date: '2016/08/14 10:43:11',
-      gender: 'Male'
-    },
-    {
-      id: 40,
-      user: { first_name: 'Dorothy', last_name: 'Howard' },
-      date: '2016/06/19 05:34:49',
-      gender: 'Female'
-    },
-    {
-      id: 41,
-      user: { first_name: 'Eugene', last_name: 'Lynch' },
-      date: '2016/12/24 08:19:24',
-      gender: 'Male'
-    },
-    {
-      id: 42,
-      user: { first_name: 'Kathy', last_name: 'Webb' },
-      date: '2017/04/01 21:09:05',
-      gender: 'Female'
-    },
-    {
-      id: 43,
-      user: { first_name: 'Antonio', last_name: 'White' },
-      date: '2017/02/10 06:51:20',
-      gender: 'Male'
-    },
-    {
-      id: 44,
-      user: { first_name: 'Louis', last_name: 'Spencer' },
-      date: '2016/10/08 02:20:22',
-      gender: 'Male'
-    },
-    {
-      id: 45,
-      user: { first_name: 'Andrea', last_name: 'Marshall' },
-      date: '2016/09/04 10:59:57',
-      gender: 'Female'
-    },
-    {
-      id: 46,
-      user: { first_name: 'Eugene', last_name: 'Sims' },
-      date: '2017/03/15 06:39:48',
-      gender: 'Male'
-    },
-    {
-      id: 47,
-      user: { first_name: 'Mildred', last_name: 'Gibson' },
-      date: '2016/04/18 06:43:54',
-      gender: 'Female'
-    },
-    {
-      id: 48,
-      user: { first_name: 'Joan', last_name: 'Arnold' },
-      date: '2016/12/16 04:52:23',
-      gender: 'Female'
-    },
-    {
-      id: 49,
-      user: { first_name: 'Jesse', last_name: 'Schmidt' },
-      date: '2016/06/11 02:44:33',
-      gender: 'Male'
-    },
-    {
-      id: 50,
-      user: { first_name: 'David', last_name: 'Frazier' },
-      date: '2017/02/15 21:46:30',
-      gender: 'Male'
-    },
-    {
-      id: 51,
-      user: { first_name: 'Nicholas', last_name: 'Howell' },
-      date: '2016/11/01 15:08:31',
-      gender: 'Male'
-    },
-    {
-      id: 52,
-      user: { first_name: 'Douglas', last_name: 'Chapman' },
-      date: '2017/02/08 03:33:24',
-      gender: 'Male'
-    },
-    {
-      id: 53,
-      user: { first_name: 'Bruce', last_name: 'Simmons' },
-      date: '2016/07/14 12:11:17',
-      gender: 'Male'
-    },
-    {
-      id: 54,
-      user: { first_name: 'Antonio', last_name: 'George' },
-      date: '2016/11/07 19:12:55',
-      gender: 'Male'
-    },
-    {
-      id: 55,
-      user: { first_name: 'Chris', last_name: 'Marshall' },
-      date: '2016/07/03 12:11:45',
-      gender: 'Male'
-    },
-    {
-      id: 56,
-      user: { first_name: 'Ashley', last_name: 'Hudson' },
-      date: '2016/10/14 21:08:05',
-      gender: 'Female'
-    },
-    {
-      id: 57,
-      user: { first_name: 'Alan', last_name: 'Edwards' },
-      date: '2017/03/22 21:10:25',
-      gender: 'Male'
-    },
-    {
-      id: 58,
-      user: { first_name: 'George', last_name: 'Clark' },
-      date: '2016/04/28 03:15:05',
-      gender: 'Male'
-    },
-    {
-      id: 59,
-      user: { first_name: 'Frank', last_name: 'Porter' },
-      date: '2016/09/08 00:48:14',
-      gender: 'Male'
-    },
-    {
-      id: 60,
-      user: { first_name: 'Christopher', last_name: 'Palmer' },
-      date: '2016/05/24 08:58:12',
-      gender: 'Male'
-    }
-  ]
-
-  export default {
-    data() {
-      return {
-        data,
-        isPaginated: true,
-        isPaginationSimple: false,
-        paginationPosition: 'bottom',
-        defaultSortDirection: 'asc',
-        sortIcon: 'arrow-up',
-        sortIconSize: 'small',
-        currentPage: 1,
-        perPage: 5
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Async Data
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-table
-      :data="data"
-      :loading="loading"
-      paginated
-      backend-pagination
-      :total="total"
-      :per-page="perPage"
-      @page-change="onPageChange"
-      aria-next-label="Next page"
-      aria-previous-label="Previous page"
-      aria-page-label="Page"
-      aria-current-label="Current page"
-      backend-sorting
-      :default-sort-direction="defaultSortOrder"
-      :default-sort="[sortField, sortOrder]"
-      @sort="onSort"
-    >
-      <o-table-column field="original_title" label="Title" sortable v-slot="props">
-        {{ props.row.original_title }}
-      </o-table-column>
-      <o-table-column field="vote_average" label="Vote Average" numeric sortable v-slot="props">
-        <span class="tag" :class="type(props.row.vote_average)">
-          {{ props.row.vote_average }}
-        </span>
-      </o-table-column>
-      <o-table-column field="vote_count" label="Vote Count" numeric sortable v-slot="props">
-        {{ props.row.vote_count }}
-      </o-table-column>
-      <o-table-column field="release_date" label="Release Date" sortable centered v-slot="props">
-        {{ props.row.release_date ? new Date(props.row.release_date).toLocaleDateString() : 'unknown' }}
-      </o-table-column>
-      <o-table-column label="Overview" width="500" v-slot="props">
-        {{ props.row.overview }}
-      </o-table-column>
-    </o-table>
-  </section>
-</template>
-<script>
-  export default {
-    data() {
-      return {
-        data: [],
-        total: 0,
-        loading: false,
-        sortField: 'vote_count',
-        sortOrder: 'desc',
-        defaultSortOrder: 'desc',
-        page: 1,
-        perPage: 20
-      }
-    },
-    methods: {
-      /*
-       * Load async data
-       */
-      loadAsyncData() {
-        const params = [
-          'api_key=bb6f51bef07465653c3e553d6ab161a8',
-          'language=en-US',
-          'include_adult=false',
-          'include_video=false',
-          `sort_by=${this.sortField}.${this.sortOrder}`,
-          `page=${this.page}`
-        ].join('&')
-        this.loading = true
-        fetch(`https://api.themoviedb.org/3/discover/movie?${params}`)
-          .then(response => response.json())
-          .then(data => {
-            // api.themoviedb.org manage max 1000 pages
-            this.data = []
-            let currentTotal = data.total_results
-            if (data.total_results / this.perPage > 1000) {
-              currentTotal = this.perPage * 1000
-            }
-            this.total = currentTotal
-            data.results.forEach(item => {
-              item.release_date = item.release_date ? item.release_date.replace(/-/g, '/') : null
-              this.data.push(item)
-            })
-            this.loading = false
-          })
-          .catch(error => {
-            this.data = []
-            this.total = 0
-            this.loading = false
-            throw error
-          })
-      },
-      /*
-       * Handle page-change event
-       */
-      onPageChange(page) {
-        this.page = page
-        this.loadAsyncData()
-      },
-      /*
-       * Handle sort event
-       */
-      onSort(field, order) {
-        this.sortField = field
-        this.sortOrder = order
-        this.loadAsyncData()
-      },
-      /*
-       * Type style in relation to the value
-       */
-      type(value) {
-        const number = parseFloat(value)
-        if (number < 6) {
-          return 'is-danger'
-        } else if (number >= 6 && number < 8) {
-          return 'is-warning'
-        } else if (number >= 8) {
-          return 'is-success'
-        }
-      }
-    },
-    mounted() {
-      this.loadAsyncData()
-    }
-  }
-</script>
-```
-
-:::
-
-### Checkable
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-button variant="danger" @click="checkedRows = []" :disabled="!checkedRows.length" icon-left="times">
-        <span>Clear checked</span>
-      </o-button>
-      <o-select v-model="checkboxPosition">
-        <option value="left">Checkbox at left</option>
-        <option value="right">Checkbox at right</option>
-      </o-select>
-    </o-field>
-
-    <o-table
-      :data="data"
-      :columns="columns"
-      :checked-rows.sync="checkedRows"
-      :is-row-checkable="(row) => row.id !== 3 && row.id !== 4"
-      checkable
-      :checkbox-position="checkboxPosition"
-    >
-      <template slot="bottom-left"> <b>Total checked</b>: {{ checkedRows.length }} </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: 'Jesse',
-          last_name: 'Simmons',
-          date: '2016-10-15 13:43:27',
-          gender: 'Male'
-        },
-        {
-          id: 2,
-          first_name: 'John',
-          last_name: 'Jacobs',
-          date: '2016-12-15 06:00:53',
-          gender: 'Male'
-        },
-        {
-          id: 3,
-          first_name: 'Tina',
-          last_name: 'Gilbert',
-          date: '2016-04-26 06:26:28',
-          gender: 'Female'
-        },
-        {
-          id: 4,
-          first_name: 'Clarence',
-          last_name: 'Flores',
-          date: '2016-04-10 10:28:46',
-          gender: 'Male'
-        },
-        {
-          id: 5,
-          first_name: 'Anne',
-          last_name: 'Lee',
-          date: '2016-12-06 14:38:38',
-          gender: 'Female'
-        }
-      ]
-
-      return {
-        data,
-        checkboxPosition: 'left',
-        checkedRows: [data[1], data[3]],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name'
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name'
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Sticky
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="stickyHeaders">Sticky Headers</o-switch>
-      </div>
-    </o-field>
-    <o-table :data="data" :columns="columns" :sticky-header="stickyHeaders"></o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            user: { first_name: 'Jesse', last_name: 'Simmons' },
-            date: '2016/10/15 13:43:27',
-            gender: 'Male'
-          },
-          {
-            id: 2,
-            user: { first_name: 'John', last_name: 'Jacobs' },
-            date: '2016/12/15 06:00:53',
-            gender: 'Male'
-          },
-          {
-            id: 3,
-            user: { first_name: 'Tina', last_name: 'Gilbert' },
-            date: '2016/04/26 06:26:28',
-            gender: 'Female'
-          },
-          {
-            id: 4,
-            user: { first_name: 'Clarence', last_name: 'Flores' },
-            date: '2016/04/10 10:28:46',
-            gender: 'Male'
-          },
-          {
-            id: 5,
-            user: { first_name: 'Anne', last_name: 'Lee' },
-            date: '2016/12/06 14:38:38',
-            gender: 'Female'
-          },
-          {
-            id: 6,
-            user: { first_name: 'Sara', last_name: 'Armstrong' },
-            date: '2016/09/23 18:50:04',
-            gender: 'Female'
-          },
-          {
-            id: 7,
-            user: { first_name: 'Anthony', last_name: 'Webb' },
-            date: '2016/08/30 23:49:38',
-            gender: 'Male'
-          },
-          {
-            id: 8,
-            user: { first_name: 'Andrew', last_name: 'Greene' },
-            date: '2016/11/20 14:57:47',
-            gender: 'Male'
-          },
-          {
-            id: 9,
-            user: { first_name: 'Russell', last_name: 'White' },
-            date: '2016/07/13 09:29:49',
-            gender: 'Male'
-          },
-          {
-            id: 10,
-            user: { first_name: 'Lori', last_name: 'Hunter' },
-            date: '2016/12/09 01:44:05',
-            gender: 'Female'
-          }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true,
-            sticky: true,
-            thAttrs: () => ({ class: 'is-sticky-column-one' }),
-            tdAttrs: () => ({ class: 'is-sticky-column-one' })
-          },
-          {
-            field: 'user.first_name',
-            label: 'First Name'
-          },
-          {
-            field: 'user.last_name',
-            label: 'Last Name'
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            position: 'centered',
-            sticky: true,
-            thAttrs: () => ({ class: 'is-sticky-column-two' }),
-            tdAttrs: () => ({ class: 'is-sticky-column-two' })
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          },
-          {
-            field: 'id',
-            label: 'Column A'
-          },
-          {
-            field: 'id',
-            label: 'Column B'
-          },
-          {
-            field: 'id',
-            label: 'Column C'
-          },
-          {
-            field: 'id',
-            label: 'Column D'
-          },
-          {
-            field: 'id',
-            label: 'Column E'
-          },
-          {
-            field: 'id',
-            label: 'Column F'
-          },
-          {
-            field: 'id',
-            label: 'Column G'
-          },
-          {
-            field: 'id',
-            label: 'Column H'
-          },
-          {
-            field: 'id',
-            label: 'Column I'
-          },
-          {
-            field: 'id',
-            label: 'Column L'
-          },
-          {
-            field: 'id',
-            label: 'Column M'
-          },
-          {
-            field: 'id',
-            label: 'Column N'
-          },
-          {
-            field: 'id',
-            label: 'Column O'
-          }
-        ],
-        stickyHeaders: true
-      }
-    }
-  }
-</script>
-
-<style>
-  .is-sticky-column-one {
-    background: #006724 !important;
-    color: white !important;
-  }
-  .is-sticky-column-two {
-    background: #167df0 !important;
-    color: white !important;
-  }
-</style>
-```
-
-:::
-
-### Detailed
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-checkbox v-model="showDetailIcon">Show detail chevron</o-checkbox>
-      <o-checkbox v-model="showDefaultDetail">Custom detail column</o-checkbox>
-      <div v-for="(column, index) in columnsVisible" :key="index">
-        <o-checkbox v-model="column.display">
-          {{ column.title }}
-        </o-checkbox>
-      </div>
-    </o-field>
-
-    <o-table
-      :data="data"
-      ref="table"
-      detailed
-      hoverable
-      :custom-detail-row="!showDefaultDetail"
-      :opened-detailed="['Board Games']"
-      :default-sort="['name', 'asc']"
-      detail-key="name"
-      :show-detail-icon="showDetailIcon"
-    >
-      <o-table-column field="name" :visible="columnsVisible['name'].display" :label="columnsVisible['name'].title" width="300" sortable v-slot="props">
-        <template v-if="showDetailIcon">
-          {{ props.row.name }}
-        </template>
-        <template v-else>
-          <a @click="toggle(props.row)">
-            {{ props.row.name }}
-          </a>
-        </template>
-      </o-table-column>
-
-      <o-table-column field="sold" :visible="columnsVisible['sold'].display" :label="columnsVisible['sold'].title" sortable position="centered" v-slot="props">
-        {{ props.row.sold }}
-      </o-table-column>
-
-      <o-table-column field="available" :visible="columnsVisible['available'].display" :label="columnsVisible['available'].title" sortable position="centered" v-slot="props">
-        {{ props.row.available }}
-      </o-table-column>
-
-      <o-table-column :visible="columnsVisible['cleared'].display" :label="columnsVisible['cleared'].title" position="centered" v-slot="props">
-        <span>
-          {{ Math.round((props.row.sold / props.row.available) * 100) }}%
-        </span>
-      </o-table-column>
-
-      <template slot="detail" slot-scope="props">
-        <tr v-for="item in props.row.items" :key="item.name">
-          <td v-if="showDetailIcon"></td>
-          <td v-show="columnsVisible['name'].display">
-            &nbsp;&nbsp;&nbsp;&nbsp;{{ item.name }}
-          </td>
-          <td v-show="columnsVisible['sold'].display">{{ item.sold }}</td>
-          <td v-show="columnsVisible['available'].display">
-            {{ item.available }}
-          </td>
-          <td v-show="columnsVisible['cleared'].display">
-            <span>
-              {{ Math.round((item.sold / item.available) * 100) }}%
-            </span>
-          </td>
-        </tr>
-      </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            name: 'Board Games',
-            sold: 131,
-            available: 301,
-            items: [
-              {
-                name: 'Monopoly',
-                sold: 57,
-                available: 100
-              },
-              {
-                name: 'Scrabble',
-                sold: 23,
-                available: 84
-              },
-              {
-                name: 'Chess',
-                sold: 37,
-                available: 61
-              },
-              {
-                name: 'Battleships',
-                sold: 14,
-                available: 56
-              }
-            ]
-          },
-          {
-            name: 'Jigsaws & Puzzles',
-            sold: 88,
-            available: 167,
-            items: [
-              {
-                name: 'World Map',
-                sold: 31,
-                available: 38
-              },
-              {
-                name: 'London',
-                sold: 23,
-                available: 29
-              },
-              {
-                name: 'Sharks',
-                sold: 20,
-                available: 44
-              },
-              {
-                name: 'Disney',
-                sold: 14,
-                available: 56
-              }
-            ]
-          },
-          {
-            name: 'Books',
-            sold: 434,
-            available: 721,
-            items: [
-              {
-                name: 'Hamlet',
-                sold: 101,
-                available: 187
-              },
-              {
-                name: 'The Lord Of The Rings',
-                sold: 85,
-                available: 156
-              },
-              {
-                name: 'To Kill a Mockingbird',
-                sold: 78,
-                available: 131
-              },
-              {
-                name: 'Catch-22',
-                sold: 73,
-                available: 98
-              },
-              {
-                name: 'Frankenstein',
-                sold: 51,
-                available: 81
-              },
-              {
-                name: "Alice's Adventures In Wonderland",
-                sold: 46,
-                available: 68
-              }
-            ]
-          }
-        ],
-        columnsVisible: {
-          name: { title: 'Name', display: true },
-          sold: { title: 'Stock Sold', display: true },
-          available: { title: 'Stock Available', display: true },
-          cleared: { title: 'Stock Cleared', display: true }
-        },
-        showDetailIcon: true,
-        showDefaultDetail: true
-      }
-    },
-    methods: {
-      toggle(row) {
-        this.$refs.table.toggleDetails(row)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Searchable
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-table :data="data" :columns="columns"> </o-table>
-    <hr />
-    <p>
-      You can debounce search filter to avoid multiple filtering when typing.
-    </p>
-    <o-table :data="data" :columns="columns" :debounce-search="1000"> </o-table>
-    <p>You can also customize the search input using a scoped slot.</p>
-    <o-table :data="data">
-      <template v-for="column in columns">
-        <o-table-column :key="column.id" v-bind="column">
-          <template v-if="column.searchable && !column.numeric" slot="searchable" slot-scope="props">
-            <o-input v-model="props.filters[props.column.field]" placeholder="Search..." icon="search" size="small" />
-          </template>
-          <template v-slot="props">
-            {{ props.row[column.field] }}
-          </template>
-        </o-table-column>
-      </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            first_name: 'Jesse',
-            last_name: 'Simmons',
-            date: '2016-10-15 13:43:27',
-            gender: 'Male'
-          },
-          {
-            id: 2,
-            first_name: 'John',
-            last_name: 'Jacobs',
-            date: '2016-12-15 06:00:53',
-            gender: 'Male'
-          },
-          {
-            id: 3,
-            first_name: 'Tina',
-            last_name: 'Gilbert',
-            date: '2016-04-26 06:26:28',
-            gender: 'Female'
-          },
-          {
-            id: 4,
-            first_name: 'Clarence',
-            last_name: 'Flores',
-            date: '2016-04-10 10:28:46',
-            gender: 'Male'
-          },
-          {
-            id: 5,
-            first_name: 'Anne',
-            last_name: 'Lee',
-            date: '2016-12-06 14:38:38',
-            gender: 'Female'
-          }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '100',
-            numeric: true,
-            searchable: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name',
-            searchable: true
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name',
-            searchable: true
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          }
-        ]
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Draggable rows/columns
-
-::: demo
-
-```html
-<template>
-  <div>
-    <p>
-      Use <code>draggable</code>/<code>draggable-column</code> prop to allow rows and columns to be draggable. Manage dragging using
-      <code>dragstart</code>/<code>columndragstart</code>,<code>dragover</code>/<code>columndragover</code> and <code>drop</code>/<code>columndrop</code> events
-    </p>
-    <o-table
-      :data="data"
-      :columns="columns"
-      draggable
-      draggable-column
-      @dragstart="dragstart"
-      @drop="drop"
-      @dragover="dragover"
-      @dragleave="dragleave"
-      @columndragstart="columndragstart"
-      @columndrop="columndrop"
-      @columndragover="columndragover"
-      @columndragleave="columndragleave"
-    >
-    </o-table>
-  </div>
-</template>
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          { id: 1, first_name: 'Jesse', last_name: 'Simmons', date: '2016-10-15 13:43:27', gender: 'Male' },
-          { id: 2, first_name: 'John', last_name: 'Jacobs', date: '2016-12-15 06:00:53', gender: 'Male' },
-          { id: 3, first_name: 'Tina', last_name: 'Gilbert', date: '2016-04-26 06:26:28', gender: 'Female' },
-          { id: 4, first_name: 'Clarence', last_name: 'Flores', date: '2016-04-10 10:28:46', gender: 'Male' },
-          { id: 5, first_name: 'Anne', last_name: 'Lee', date: '2016-12-06 14:38:38', gender: 'Female' }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name'
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name'
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            centered: true
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          }
-        ],
-        draggingRow: null,
-        draggingRowIndex: null,
-        draggingColumn: null,
-        draggingColumnIndex: null
-      }
-    },
-    methods: {
-      dragstart(payload) {
-        this.draggingRow = payload.row
-        this.draggingRowIndex = payload.index
-        payload.event.dataTransfer.effectAllowed = 'copy'
-      },
-      dragover(payload) {
-        payload.event.dataTransfer.dropEffect = 'copy'
-        payload.event.target.closest('tr').classList.add('is-selected')
-        payload.event.preventDefault()
-      },
-      dragleave(payload) {
-        payload.event.target.closest('tr').classList.remove('is-selected')
-        payload.event.preventDefault()
-      },
-      drop(payload) {
-        payload.event.target.closest('tr').classList.remove('is-selected')
-        const droppedOnRowIndex = payload.index
-        this.$oruga.notification.open(`Moved ${this.draggingRow.first_name} from row ${this.draggingRowIndex + 1} to ${droppedOnRowIndex + 1}`)
-      },
-
-      columndragstart(payload) {
-        this.draggingColumn = payload.column
-        this.draggingColumnIndex = payload.index
-        payload.event.dataTransfer.effectAllowed = 'copy'
-      },
-      columndragover(payload) {
-        payload.event.dataTransfer.dropEffect = 'copy'
-        payload.event.target.closest('th').classList.add('is-selected')
-        payload.event.preventDefault()
-      },
-      columndragleave(payload) {
-        payload.event.target.closest('th').classList.remove('is-selected')
-        payload.event.preventDefault()
-      },
-      columndrop(payload) {
-        payload.event.target.closest('th').classList.remove('is-selected')
-        const droppedOnColumnIndex = payload.index
-        this.$oruga.notification.open(`Moved ${this.draggingColumn.field} from column ${this.draggingColumnIndex + 1} to ${droppedOnColumnIndex + 1}`)
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_table.scss)
-
-<br />
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-table v-bind="s" :data="s.isEmpty ? [] : data" :columns="columns" :selected.sync="selected" detailed>
-                    <template slot="footer"> This is the footer </template>
-                    <template slot="detail">
-                        DETAILS
-                    </template>
-                </o-table>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-        selected: null,
-        data: [
-          {
-            id: 1,
-            first_name: 'Jesse',
-            last_name: 'Simmons',
-            date: '2016-10-15 13:43:27',
-            gender: 'Male',
-          },
-          {
-            id: 2,
-            first_name: 'John',
-            last_name: 'Jacobs',
-            date: '2016-12-15 06:00:53',
-            gender: 'Male'
-          },
-          {
-            id: 3,
-            first_name: 'Tina',
-            last_name: 'Gilbert',
-            date: '2016-04-26 06:26:28',
-            gender: 'Female'
-          },
-          {
-            id: 4,
-            first_name: 'Clarence',
-            last_name: 'Flores',
-            date: '2016-04-10 10:28:46',
-            gender: 'Male'
-          },
-          {
-            id: 5,
-            first_name: 'Brandon',
-            last_name: 'Lee',
-            date: '2016-12-06 14:38:38',
-            gender: 'Female'
-          },
-          {
-            id: 6,
-            first_name: 'Anne',
-            last_name: 'Straus',
-            date: '2017-12-06 14:38:38',
-            gender: 'Female'
-          },
-          {
-            id: 7,
-            first_name: 'Mark',
-            last_name: 'Knopfler',
-            date: '2018-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 8,
-            first_name: 'Craig',
-            last_name: 'David',
-            date: '2019-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 9,
-            first_name: 'Dave',
-            last_name: 'Copperfield',
-            date: '2020-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 10,
-            first_name: 'Hilary',
-            last_name: 'Nelson',
-            date: '2021-12-06 14:38:38',
-            gender: 'Female'
-          }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name',
-            searchable: true,
-            sortable: true
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name',
-            searchable: true
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            sticky: true,
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          },
-          {
-            field: 'id',
-            label: 'Column A'
-          },
-          {
-            field: 'id',
-            label: 'Column B'
-          },
-          {
-            field: 'id',
-            label: 'Column C'
-          },
-          {
-            field: 'id',
-            label: 'Column D'
-          },
-          {
-            field: 'id',
-            label: 'Column E'
-          },
-          {
-            field: 'id',
-            label: 'Column F'
-          },
-          {
-            field: 'id',
-            label: 'Column G'
-          },
-          {
-            field: 'id',
-            label: 'Column H'
-          },
-          {
-            field: 'id',
-            label: 'Column I'
-          },
-          {
-            field: 'id',
-            label: 'Column L'
-          },
-          {
-            field: 'id',
-            label: 'Column M'
-          },
-          {
-            field: 'id',
-            label: 'Column N'
-          },
-          {
-            field: 'id',
-            label: 'Column O'
-          }
-        ],
-        inspectData: [
-            {
-                class: "rootClass",
-                description: "Class of Table root element"
-            },
-            {
-                class: "tableClass",
-                description: "Class of the Table"
-            },
-            {
-                class: "borderedClass",
-                properties: ["bordered"],
-                description: "Class of the Table when is bordered",
-                action: (cmp) => {
-                    cmp.data.bordered = true;
-                }
-            },
-            {
-                class: "stripedClass",
-                properties: ["striped"],
-                description: "Class of the Table when rows are striped",
-                action: (cmp) => {
-                    cmp.data.striped = true;
-                }
-            },
-            {
-                class: "narrowedClass",
-                properties: ["narrowed"],
-                description: "Class of the Table when rows are narrowed",
-                action: (cmp) => {
-                    cmp.data.narrowed = true;
-                }
-            },
-            {
-                class: "hoverableClass",
-                properties: ["hoverable or focusable"],
-                description: "Class of the Table when is hoverable",
-                action: (cmp) => {
-                    cmp.data.hoverable = true;
-                }
-            },
-            {
-                class: "emptyClass",
-                description: "Class of the Table when is empty",
-                action: (cmp) => {
-                    cmp.data.isEmpty = true
-                }
-            },
-            {
-                class: "wrapperClass",
-                description: "Class of the Table wrapper"
-            },
-            {
-                class: "stickyHeaderClass",
-                properties: ["sticky-header"],
-                description: "Class of the Table wrapper when header is sticky",
-                action: (cmp) => {
-                    cmp.data.stickyHeader = true;
-                }
-            },
-            {
-                class: "scrollableClass",
-                properties: ["scrollable"],
-                description: "Class of the Table wrapper when its content is scrollable",
-                action: (cmp) => {
-                    cmp.data.scrollable = true;
-                }
-            },
-            {
-                class: "footerClass",
-                description: "Class of the Table footer",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                }
-            },
-            {
-                class: "thClass",
-                description: "Class of the Table `th` element"
-            },
-            {
-                class: "tdClass",
-                description: "Class of the Table `td` element"
-            },
-            {
-                class: "thCheckboxClass",
-                description: "Class of the Table `th` element when is checkable",
-                properties: ["checkable"],
-                action: (cmp) => {
-                    cmp.data.checkable = true
-                }
-            },
-            {
-                class: "thDetailedClass",
-                description: "Class of the Table `th` element of the detail column of triggers",
-                properties: ["detailed"],
-                action: (cmp) => {
-                    cmp.data.detailed = true;
-                }
-            },
-            {
-                class: "tdCheckboxClass",
-                description: "Class of the Table `td` element when is checkable",
-                properties: ["checkable"],
-                action: (cmp) => {
-                    cmp.data.checkable = true
-                }
-            },
-            {
-                class: "detailedClass",
-                description: "Class of the Table row detail",
-                properties: ["detailed"],
-                warning: "Expand details to see it in action!",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                    cmp.data.mobileCards = true;
-                }
-            },
-            {
-                class: "tdDetailedChevronClass",
-                properties: ["detailed"],
-                description: "Class of the Table `td` element that contains the chevron to trigger details",
-                action: (cmp) => {
-                    cmp.data.mobileCards = true;
-                }
-            },
-            {
-                class: "thCurrentSortClass",
-                description: "Class of the Table `th` element currently sorted",
-                warning: "Click on 'First Name' header to sort elements and see it in action!",
-            },
-            {
-                class: "thSortableClass",
-                description: "Class of the sortable Table `th` element",
-                properties: ['sortable']
-            },
-            {
-                class: "thUnselectableClass",
-                description: "Class of the Table `th` element that is unsortable",
-                properties: ["!headerSelectable and sortable"]
-            },
-            {
-                class: "thPositionClass",
-                description: "Class of the Table `th` element when component is positioned",
-                suffixes: ['left', 'centered', 'right'],
-                properties: ["position"]
-            },
-            {
-                class: "thStickyClass",
-                description: "Class of the Table `th` element when component is sticky",
-                properties: ['sticky']
-            },
-            {
-                class: "trSelectedClass",
-                description: "Class of the Table row when selected",
-                warning: "Select a row of the table to see it in action!",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                }
-            },
-            {
-                class: "thSortIconClass",
-                description: "Class of the Table sort icon in the header",
-                warning: "Click on 'First Name' header to sort elements and see it in action!",
-            },
-            {
-                class: "tdPositionClass",
-                description: "Class of the Table `td` element when component is positioned",
-                suffixes: ['left', 'centered', 'right'],
-                properties: ["position"]
-            },
-            {
-                class: "tdStickyClass",
-                description: "Class of the Table `td` element when component is sticky",
-                properties: ['sticky']
-            },
-            {
-                class: "mobileSortClass",
-                description: "Class of the sortable form wrapper on mobile",
-                warning: "Switch to mobile view to see it in action!",
-            },
-            {
-                class: "mobileClass",
-                description: "Class of the Table component when on mobile",
-                warning: "Switch to mobile view to see it in action!"
-            },
-            {
-                class: "paginationWrapperClass",
-                description: "Class of the Table pagination wrapper",
-                properties: ["paginated"],
-                action: (cmp) => {
-                    cmp.data.paginated = true
-                    cmp.data.paginationSimple = true
-                    cmp.data.perPage = 2
-                }
-            }
-        ],
-    };
-  },
-};
-</script>
-<style>
-.inspector_table {
-    border-collapse: collapse;
-}
-</style>
-
-<br />
-<br />
-
-## Props
-
-| Prop name             | Description                                                                                                                             | Type           | Values                     | Default                                                                                                                                           |
-| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| ariaCurrentLabel      |                                                                                                                                         | string         | -                          |                                                                                                                                                   |
-| ariaNextLabel         |                                                                                                                                         | string         | -                          |                                                                                                                                                   |
-| ariaPageLabel         |                                                                                                                                         | string         | -                          |                                                                                                                                                   |
-| ariaPreviousLabel     |                                                                                                                                         | string         | -                          |                                                                                                                                                   |
-| backendFiltering      | Columns won't be filtered with Javascript, use with searchable prop to the columns to filter in your backend                            | boolean        | -                          |                                                                                                                                                   |
-| backendPagination     | Rows won't be paginated with Javascript, use with page-change event to paginate in your backend                                         | boolean        | -                          |                                                                                                                                                   |
-| backendSorting        | Columns won't be sorted with Javascript, use with sort event to sort in your backend                                                    | boolean        | -                          |                                                                                                                                                   |
-| bordered              | Border to all cells                                                                                                                     | boolean        | -                          |                                                                                                                                                   |
-| checkable             | Rows can be checked (multiple), checked rows will have a .is-checked class if you want to style                                         | boolean        | -                          |                                                                                                                                                   |
-| checkboxPosition      | Position of the checkbox (if checkable is true)                                                                                         | string         | `left`, `right`            | 'left'                                                                                                                                            |
-| checkedRows           | Set which rows are checked, use the .sync modifier (Vue 2.x) or v-model:checkedRows (Vue 3.x) to make it two-way binding                | array          | -                          | []                                                                                                                                                |
-| columns               | Table columns                                                                                                                           | array          | -                          | []                                                                                                                                                |
-| currentPage           | Current page of table data (if paginated), use the .sync modifier (Vue 2.x) or v-model:currentPage (Vue 3.x) to make it two-way binding | number         | -                          | 1                                                                                                                                                 |
-| customDetailRow       | Custom style on details                                                                                                                 | boolean        | -                          | false                                                                                                                                             |
-| customIsChecked       | Custom method to verify if row is checked, works when is checkable. Useful for backend pagination                                       | func           | -                          |                                                                                                                                                   |
-| customRowKey          | Use a unique key of your data Object for each row. Useful if your data prop has dynamic indices. (id recommended)                       | string         | -                          |                                                                                                                                                   |
-| data                  | Table data                                                                                                                              | array          | -                          | []                                                                                                                                                |
-| debounceSearch        | Filtering debounce time (in milliseconds)                                                                                               | number         | -                          |                                                                                                                                                   |
-| defaultSort           | Sets the default sort column and order โ€” e.g. ['first_name', 'desc']                                                                    | string\|array  | -                          |                                                                                                                                                   |
-| defaultSortDirection  | Sets the default sort column direction on the first click                                                                               | string         | `asc`, `desc`              | 'asc'                                                                                                                                             |
-| detailIcon            | Icon name of detail action                                                                                                              | string         | -                          | 'chevron-right'                                                                                                                                   |
-| detailKey             | Use a unique key of your data Object when use detailed or opened detailed. (id recommended)                                             | string         | -                          | ''                                                                                                                                                |
-| detailTransition      |                                                                                                                                         | string         | -                          | ''                                                                                                                                                |
-| detailed              | Allow row details                                                                                                                       | boolean        | -                          |                                                                                                                                                   |
-| draggable             | Allows rows to be draggable                                                                                                             | boolean        | -                          | false                                                                                                                                             |
-| draggableColumn       | Allows columns to be draggable                                                                                                          | boolean        | -                          | false                                                                                                                                             |
-| filtersEvent          | Add a native event to filter                                                                                                            | string         | -                          | ''                                                                                                                                                |
-| focusable             | Table can be focused and user can navigate with keyboard arrows (require selected) and rows are highlighted when hovering               | boolean        | -                          |                                                                                                                                                   |
-| hasDetailedVisible    | Controls the visibility of the trigger that toggles the detailed rows.                                                                  | func           | -                          | Default function (see source code)                                                                                                                |
-| headerCheckable       | Show check/uncheck all checkbox in table header when checkable                                                                          | boolean        | -                          | true                                                                                                                                              |
-| height                | Table fixed height                                                                                                                      | number\|string | -                          |                                                                                                                                                   |
-| hoverable             | Rows are highlighted when hovering                                                                                                      | boolean        | -                          |                                                                                                                                                   |
-| iconPack              | Icon pack to use                                                                                                                        | string         | -                          |                                                                                                                                                   |
-| isRowCheckable        | Custom method to verify if a row is checkable, works when is checkable                                                                  | func           | -                          | Default function (see source code)                                                                                                                |
-| isRowSelectable       | Custom method to verify if a row is selectable, works when is selected.                                                                 | func           | -                          | Default function (see source code)                                                                                                                |
-| loading               | Loading state                                                                                                                           | boolean        | -                          |                                                                                                                                                   |
-| mobileBreakpoint      | Mobile breakpoint as max-width value                                                                                                    | string         | -                          |                                                                                                                                                   |
-| mobileCards           | Rows appears as cards on mobile (collapse rows)                                                                                         | boolean        | -                          | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;mobileCards: true<br>}</code>            |
-| mobileSortPlaceholder | Text when nothing is selected                                                                                                           | string         | -                          |                                                                                                                                                   |
-| narrowed              | Makes the cells narrower                                                                                                                | boolean        | -                          |                                                                                                                                                   |
-| openedDetailed        | Allow pre-defined opened details. Ideal to open details via vue-router. (A unique key is required; check detail-key prop)               | array          | -                          | []                                                                                                                                                |
-| override              | Override classes                                                                                                                        | boolean        | -                          | false                                                                                                                                             |
-| paginated             | Adds pagination to the table                                                                                                            | boolean        | -                          |                                                                                                                                                   |
-| paginationPosition    | Pagination position (if paginated)                                                                                                      | string         | `bottom`, `top`, `bot`     | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;paginationPosition: 'bottom'<br>}</code> |
-| paginationRounded     | Rounded pagination if paginated                                                                                                         | boolean        | -                          |                                                                                                                                                   |
-| perPage               | How many rows per page (if paginated)                                                                                                   | number\|string | -                          | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;perPage: 20<br>}</code>                  |
-| scrollable            | Add a horizontal scrollbar when table is too wide                                                                                       | boolean        | -                          |                                                                                                                                                   |
-| selected              | Set which row is selected, use the .sync modifier (Vue 2.x) or v-model:selected (Vue 3.x) to make it two-way binding                    | object         | -                          |                                                                                                                                                   |
-| showDetailIcon        | Allow icon and column to be visible                                                                                                     | boolean        | -                          | true                                                                                                                                              |
-| showHeader            | Show header                                                                                                                             | boolean        | -                          | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;showHeader: true<br>}</code>             |
-| sortIcon              | Sets the header sorting icon                                                                                                            | string         | -                          | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;sortIcon: 'arrow-up'<br>}</code>         |
-| sortIconSize          | Sets the size of the sorting icon                                                                                                       | string         | `small`, `medium`, `large` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br>&nbsp;&nbsp;sortIconSize: 'small'<br>}</code>        |
-| stickyCheckbox        | Make the checkbox column sticky when checkable                                                                                          | boolean        | -                          | false                                                                                                                                             |
-| stickyHeader          | Show a sticky table header                                                                                                              | boolean        | -                          |                                                                                                                                                   |
-| striped               | Whether table is striped                                                                                                                | boolean        | -                          |                                                                                                                                                   |
-| total                 | Total number of table data if backend-pagination is enabled                                                                             | number\|string | -                          | 0                                                                                                                                                 |
-
-### Events
-
-| Event name            | Properties                                                                                                         | Description |
-| --------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------- |
-| page-change           |                                                                                                                    |
-| dblclick              |                                                                                                                    |
-| contextmenu           |                                                                                                                    |
-| cell-click            |                                                                                                                    |
-| update:currentPage    |                                                                                                                    |
-| filters-change        |                                                                                                                    |
-| sort                  | **field** `string` - column field<br>**direction** `boolean` - 'asc' or 'desc'<br>**event** `Event` - native event |
-| check                 | **newCheckedRows** `Array<Object>` - checked rows                                                                  |
-| check-all             |                                                                                                                    |
-| update:checkedRows    |                                                                                                                    |
-| click                 | **row** `Object` - clicked row<br>**index** `number` - index of clicked row                                        |
-| select                | **row** `Object` - selected row<br>**selected** `Array<Object>` - selected rows                                    |
-| update:selected       |                                                                                                                    |
-| details-close         |                                                                                                                    |
-| details-open          |                                                                                                                    |
-| update:openedDetailed |                                                                                                                    |
-| dragstart             |                                                                                                                    |
-| dragend               |                                                                                                                    |
-| drop                  |                                                                                                                    |
-| dragover              |                                                                                                                    |
-| dragleave             |                                                                                                                    |
-| columndragstart       |                                                                                                                    |
-| columndragend         |                                                                                                                    |
-| columndrop            |                                                                                                                    |
-| columndragover        |                                                                                                                    |
-| columndragleave       |                                                                                                                    |
-
-### Slots
-
-| Name        | Description | Bindings |
-| ----------- | ----------- | -------- |
-| default     |             |          |
-| pagination  |             |          |
-| top-left    |             |          |
-| caption     |             |          |
-| detail      |             | <br>     |
-| empty       |             |          |
-| footer      |             |          |
-| loading     |             |          |
-| bottom-left |             |          |
-| preheader   | A slot inside `<thead>` above the normal header row. | |
-
----
-
-# Table Column
-
-> <CarbonAds />
-
-## Props
-
-| Prop name        | Description                                                     | Type                                         | Values              | Default                            |
-| ---------------- | --------------------------------------------------------------- | -------------------------------------------- | ------------------- | ---------------------------------- |
-| customKey        |                                                                 | string\|number                               | -                   |                                    |
-| customSearch     |                                                                 | func                                         | -                   |                                    |
-| customSort       |                                                                 | func                                         | -                   |                                    |
-| field            |                                                                 | string                                       | -                   |                                    |
-| headerSelectable |                                                                 | boolean                                      | -                   |                                    |
-| label            |                                                                 | string                                       | -                   |                                    |
-| meta             |                                                                 | string\|number\|boolean\|func\|object\|array | -                   |                                    |
-| numeric          |                                                                 | boolean                                      | -                   |                                    |
-| position         | Optional, position of column content                            | string                                       | `centered`, `right` |                                    |
-| searchable       |                                                                 | boolean                                      | -                   |                                    |
-| sortable         |                                                                 | boolean                                      | -                   |                                    |
-| sticky           |                                                                 | boolean                                      | -                   |                                    |
-| subheading       |                                                                 | string                                       | -                   |                                    |
-| tdAttrs          | Adds native attributes to td :td-attrs="(row, column)" => ({})" | func                                         | -                   | Default function (see source code) |
-| thAttrs          | Adds native attributes to th :th-attrs="(column)" => ({})"      | func                                         | -                   | Default function (see source code) |
-| visible          |                                                                 | boolean                                      | -                   | true                               |
-| width            |                                                                 | number\|string                               | -                   |                                    |
-
-## Style
-
-| CSS Variable                                  | SASS Variable                           | Default                                                  |
-| --------------------------------------------- | --------------------------------------- | -------------------------------------------------------- |
-| --oruga-table-background-color                | \$table-background-color                | #fff                                                     |
-| --oruga-table-background                      | \$table-background                      | #f5f5f5                                                  |
-| --oruga-table-boder                           | \$table-boder                           | 1px solid transparent                                    |
-| --oruga-table-border-radius                   | \$table-border-radius                   | \$base-border-radius                                     |
-| --oruga-table-card-box-shadow                 | \$table-card-box-shadow                 | 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) |
-| --oruga-table-card-cell-font-weight           | \$table-card-cell-font-weight           | 600                                                      |
-| --oruga-table-card-cell-padding               | \$table-card-cell-padding               | 0 0.5em 0 0                                              |
-| --oruga-table-card-cell-text-align            | \$table-card-cell-text-align            | left                                                     |
-| --oruga-table-card-detail-margin              | \$table-card-detail-margin              | -1rem 0 0 0                                              |
-| --oruga-table-card-margin                     | \$table-card-margin                     | 0 0 1rem 0                                               |
-| --oruga-table-color                           | \$table-color                           | black                                                    |
-| --oruga-table-current-sort-border-color       | \$table-current-sort-border-color       | \$grey                                                   |
-| --oruga-table-current-sort-font-weight        | \$table-current-sort-font-weight        | 700                                                      |
-| --oruga-table-current-sort-hover-border-color | \$table-current-sort-hover-border-color | \$grey                                                   |
-| --oruga-table-detail-background               | \$table-detail-background               | #fafafa                                                  |
-| --oruga-table-detail-box-shadow               | \$table-detail-box-shadow               | inset 0 1px 3px \$grey                                   |
-| --oruga-table-detail-chevron-color            | \$table-detail-chevron-color            | \$primary                                                |
-| --oruga-table-detail-chevron-width            | \$table-detail-chevron-width            | 40px                                                     |
-| --oruga-table-detail-padding                  | \$table-detail-padding                  | 1rem                                                     |
-| --oruga-table-focus-border-color              | \$table-focus-border-color              | \$primary                                                |
-| --oruga-table-focus-box-shadow                | \$table-focus-box-shadow                | 0 0 0 0.125em rgba(\$primary, 0.25)                      |
-| --oruga-table-hoverable-background-color      | \$table-hoverable-background-color      | #fafafa                                                  |
-| --oruga-table-narrow-padding                  | \$table-narrow-padding                  | .25em .5em                                               |
-| --oruga-table-row-active-background-color     | \$table-row-active-background-color     | \$primary                                                |
-| --oruga-table-row-active-color                | \$table-row-active-color                | \$primary-invert                                         |
-| --oruga-table-sticky-header-height            | \$table-sticky-header-height            | 300px                                                    |
-| --oruga-table-sticky-zindex                   | \$table-sticky-zindex                   | 1                                                        |
-| --oruga-table-striped-background-color        | \$table-striped-background-color        | #fafafa                                                  |
-| --oruga-table-td-border                       | \$table-td-border                       | 1px solid \$grey-lighter                                 |
-| --oruga-table-td-padding                      | \$table-td-padding                      | .5em .75em                                               |
-| --oruga-table-th-border                       | \$table-th-border                       | 2px solid \$grey-lighter                                 |
-| --oruga-table-th-checkbox-width               | \$table-th-checkbox-width               | 40px                                                     |
-| --oruga-table-th-color                        | \$table-th-color                        | #363636                                                  |
-| --oruga-table-th-detail-width                 | \$table-th-detail-width                 | 14px                                                     |
-| --oruga-table-th-font-weight                  | \$table-th-font-weight                  | 600                                                      |
-| --oruga-table-th-padding                      | \$table-th-padding                      | 0.5em 0.75em                                             |
diff --git a/packages/docs/components/Tabs.md b/packages/docs/components/Tabs.md
deleted file mode 100644
index dfb857306..000000000
--- a/packages/docs/components/Tabs.md
+++ /dev/null
@@ -1,546 +0,0 @@
----
-title: Tabs
----
-
-# Tabs
-
-> Responsive horizontal navigation tabs, switch between contents with ease
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/tabs/examples/Tabs.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <p>
-      <o-button @click="activeTab = 1">Set Music</o-button>
-    </p>
-    <p>
-      <o-switch v-model="showBooks"> Show Books item </o-switch>
-      <o-switch v-model="multiline"> Multiline </o-switch>
-    </p>
-    <o-tabs v-model="activeTab" :multiline="multiline">
-      <o-tab-item value="0" label="Pictures">
-        Lorem ipsum dolor sit amet.
-      </o-tab-item>
-
-      <o-tab-item :value="1" label="Music">
-        Lorem <br />
-        ipsum <br />
-        dolor <br />
-        sit <br />
-        amet.
-      </o-tab-item>
-
-      <o-tab-item value="2" :visible="showBooks" label="Books">
-        What light is light, if Silvia be not seen? <br />
-        What joy is joy, if Silvia be not byโ€” <br />
-        Unless it be to think that she is by <br />
-        And feed upon the shadow of perfection? <br />
-        Except I be by Silvia in the night, <br />
-        There is no music in the nightingale.
-      </o-tab-item>
-
-      <o-tab-item value="3" label="Videos" icon="video" disabled>
-        Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales
-        felis lobortis eget.
-      </o-tab-item>
-    </o-tabs>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        activeTab: '0',
-        showBooks: false,
-        multiline: false
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Custom header
-
-::: demo
-
-```html
-<template>
-  <o-tabs type="boxed">
-    <o-tab-item>
-      <template slot="header">
-        <o-icon icon="info-circle" rootClass="custom-icon"></o-icon>
-        <span> Issues 3 </span>
-      </template>
-    </o-tab-item>
-    <o-tab-item>
-      <template slot="header">
-        <o-icon icon="retweet" rootClass="custom-icon"></o-icon>
-        <span> Pull Requests {{count}} </span>
-      </template>
-    </o-tab-item>
-  </o-tabs>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        count: 1
-      }
-    },
-    mounted() {
-      setTimeout(() => {
-        this.count++
-      }, 3 * 1000)
-    }
-  }
-</script>
-
-<style>
-  .custom-icon {
-    margin-right: 5px;
-  }
-</style>
-```
-
-:::
-
-### Long header
-
-::: demo
-
-```html
-<template>
-  <o-tabs type="boxed">
-    <o-tab-item v-for="(item, index) in new Array(45)" :key="`longitem-${index}`">
-      <template slot="header">
-        <span>Head {{index}}</span>
-      </template>
-    </o-tab-item>
-  </o-tabs>
-</template>
-<script>
-  export default {
-    data() {
-      return {
-        expanded: false,
-        atRight: false,
-        size: null,
-        type: 'default'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Vertical
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="atRight"> Right position </o-switch>
-      </div>
-      <div class="control">
-        <o-switch v-model="expanded"> Expanded </o-switch>
-      </div>
-      <o-field label="Size">
-        <o-select v-model="size" placeholder="Size">
-          <option :value="null">Default</option>
-          <option value="small">Small</option>
-          <option value="medium">Medium</option>
-          <option value="large">Large</option>
-        </o-select>
-      </o-field>
-      <o-field label="Type">
-        <o-select v-model="type" placeholder="Type">
-          <option value="default">Default</option>
-          <option value="boxed">Boxed</option>
-          <option value="toggle">Toggle</option>
-        </o-select>
-      </o-field>
-    </o-field>
-
-    <o-tabs :position="atRight ? 'right' : ''" :size="size" :type="type" vertical :expanded="expanded">
-      <o-tab-item label="Pictures" icon="images">
-        Lorem ipsum dolor sit amet. <br />
-        Lorem ipsum dolor sit amet. <br />
-        Lorem ipsum dolor sit amet. <br />
-        Lorem ipsum dolor sit amet. <br />
-        Lorem ipsum dolor sit amet. <br />
-        Lorem ipsum dolor sit amet.
-      </o-tab-item>
-
-      <o-tab-item label="Music" icon="music">
-        What light is light, if Silvia be not seen? <br />
-        What joy is joy, if Silvia be not byโ€” <br />
-        Unless it be to think that she is by <br />
-        And feed upon the shadow of perfection? <br />
-        Except I be by Silvia in the night, <br />
-        There is no music in the nightingale.
-      </o-tab-item>
-
-      <o-tab-item label="Videos" icon="video" disabled>
-        Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales
-        felis lobortis eget.
-      </o-tab-item>
-    </o-tabs>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        expanded: false,
-        atRight: false,
-        size: null,
-        type: 'default'
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Types
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-tabs type="boxed">
-      <o-tab-item label="Pictures" icon="images"></o-tab-item>
-      <o-tab-item label="Music" icon="music"></o-tab-item>
-      <o-tab-item label="Videos" icon="video"></o-tab-item>
-    </o-tabs>
-
-    <o-tabs type="toggle">
-      <o-tab-item label="Pictures" icon="images"></o-tab-item>
-      <o-tab-item label="Music" icon="music"></o-tab-item>
-      <o-tab-item label="Videos" icon="video"></o-tab-item>
-    </o-tabs>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Position
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-tabs type="boxed" position="centered">
-      <o-tab-item label="Pictures" icon="images"></o-tab-item>
-      <o-tab-item label="Music" icon="music"></o-tab-item>
-      <o-tab-item label="Videos" icon="video"></o-tab-item>
-    </o-tabs>
-
-    <o-tabs type="toggle" position="right">
-      <o-tab-item label="Pictures" icon="images"></o-tab-item>
-      <o-tab-item label="Music" icon="music"></o-tab-item>
-      <o-tab-item label="Videos" icon="video"></o-tab-item>
-    </o-tabs>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_tabs.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-tabs v-model="activeTab" v-bind="s">
-                    <o-tab-item v-bind="s" :value="1" label="Pictures" icon="images">
-                        Lorem ipsum dolor sit amet.
-                    </o-tab-item>
-                    <o-tab-item v-bind="s" :value="2" label="Music" icon="music">
-                        Lorem <br />
-                        ipsum <br />
-                        dolor <br />
-                        sit <br />
-                        amet.
-                    </o-tab-item>
-                    <o-tab-item v-bind="s" :value="3" label="Videos" icon="video">
-                        Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales
-                        felis lobortis eget.
-                    </o-tab-item>
-                </o-tabs>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            activeTab: 1,
-            subitem: "tab-item",
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "navSizeClass",
-                    description: "Size of the navigation",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: "navTypeClass",
-                    description: "Type of the navigation",
-                    properties: ["type"],
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: () => {}
-                },
-                {
-                    class: "verticalClass",
-                    description: "Class of Tabs component when vertical",
-                    properties: ['vertical'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of Tabs component when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true
-                    }
-                },
-                {
-                    class: "multilineClass",
-                    description: "Class of Tabs component when multiline",
-                    properties: ['multiline'],
-                    action: (cmp) => {
-                        cmp.data.multiline = true
-                    }
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of Tabs component when when is vertical and its position changes",
-                    properties: ['position', 'vertical'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "tabItemWrapperClass",
-                    description: "Class of the tab item wrapper",
-                    specificity: "when <b>expandedClass</b> is applied",
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the tab content",
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the tab item",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the tab item header",
-                    specificity: "when <b>verticalClass</b> or <b>expandedClass</b> or <b>positionClass</b> is applied",
-                    subitem: true,
-                },
-                {
-                    class: "itemHeaderActiveClass",
-                    description: "Class of the tab item header when active",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                },
-                {
-                    class: "itemHeaderDisabledClass",
-                    description: "Class of the tab item header when disabled",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "itemHeaderTypeClass",
-                    description: "Class of the tab item header type",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: () => {}
-                },
-                {
-                    class: "itemHeaderIconClass",
-                    description: "Class of the tab item header icon",
-                    subitem: true,
-                    action: () => {
-                    }
-                },
-                {
-                    class: "itemHeaderTextClass",
-                    description: "Class of the tab item header text",
-                    subitem: true,
-                    action: () => {
-                    }
-                },
-                {
-                    class: "navTabsClass",
-                    description: "Class of the Tabs component nav tabs",
-                    specificity: "when <b>positionClass</b> is applied",
-                },
-                {
-                    class: "navPositionClass",
-                    description: "Class of the Tabs component nav position",
-                    properties: ['position'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = false
-                        cmp.data.position = 'right'
-                    }
-                },
-            ]
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name     | Description                                     | Type           | Values                                                                          | Default                                                                                                                            |
-| ------------- | ----------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
-| animated      | Tab will have an animation                      | boolean        | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tabs: {<br>&nbsp;&nbsp;animated: true<br>}</code> |
-| destroyOnHide | Destroy tab on hide                             | boolean        | -                                                                               | false                                                                                                                              |
-| expanded      | Tabs will be expanded (full-width)              | boolean        | -                                                                               |                                                                                                                                    |
-| multiline     | Show tab items multiline when there is no space | boolean        | -                                                                               |                                                                                                                                    |
-| override      | Override classes                                | boolean        | -                                                                               | false                                                                                                                              |
-| position      | Position of the tab, optional                   | string         | `centered`, `right`                                                             |                                                                                                                                    |
-| size          | Tab size, optional                              | string         | `small`, `medium`, `large`                                                      |                                                                                                                                    |
-| type          | Tab type                                        | string         | `boxed`, `toggle`                                                               | 'default'                                                                                                                          |
-| v-model       |                                                 | string\|number | -                                                                               |                                                                                                                                    |
-| variant       | Color of the control, optional                  | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                    |
-| vertical      | Show tab in vertical layout                     | boolean        | -                                                                               | false                                                                                                                              |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| input      |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| start   |             |          |
-| end     |             |          |
-| default |             |          |
-
----
-
-# Tab Item
-
-> <CarbonAds />
-
-## Props
-
-| Prop name | Description                                                  | Type           | Values | Default                                                                                                                               |
-| --------- | ------------------------------------------------------------ | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
-| disabled  | Item will be disabled                                        | boolean        | -      |                                                                                                                                       |
-| icon      | Icon on the left                                             | string         | -      |                                                                                                                                       |
-| iconPack  | Icon pack                                                    | string         | -      |                                                                                                                                       |
-| label     | Item label                                                   | string         | -      |                                                                                                                                       |
-| override  | Override classes                                             | boolean        | -      | false                                                                                                                                 |
-| tag       | Tabs item tag name                                           | string         | -      | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tabs: {<br>&nbsp;&nbsp;itemTag: 'button'<br>}</code> |
-| value     | Item value (it will be used as v-model of wrapper component) | string\|number | -      |                                                                                                                                       |
-| visible   | Show/hide item                                               | boolean        | -      | true                                                                                                                                  |
-
-### Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| activate   |            |
-
-### Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                       | SASS Variable                                | Default                 |
-| -------------------------------------------------- | -------------------------------------------- | ----------------------- |
-| --oruga-tabs-disabled-opacity                      | \$tabs-disabled-opacity                      | \$base-disabled-opacity |
-| --oruga-tabs-font-size                             | \$tabs-font-size                             | \$base-font-size        |
-| --oruga-tabs-icon-margin                           | \$tabs-icon-margin                           | 0.5em                   |
-| --oruga-tabs-content-padding                       | \$tabs-content-padding                       | 1rem                    |
-| --oruga-tabs-margin-bottom                         | \$tabs-margin-bottom                         | 1.5rem                  |
-| --oruga-tabs-border-bottom-color                   | \$tabs-border-bottom-color                   | \$grey-lighter          |
-| --oruga-tabs-border-bottom-style                   | \$tabs-border-bottom-style                   | solid                   |
-| --oruga-tabs-border-bottom-width                   | \$tabs-border-bottom-width                   | 1px                     |
-| --oruga-tabs-link-color                            | \$tabs-link-color                            | hsl(0, 0%, 29%)         |
-| --oruga-tabs-link-active-border-bottom-color       | \$tabs-link-active-border-bottom-color       | \$primary               |
-| --oruga-tabs-link-active-color                     | \$tabs-link-active-color                     | \$primary               |
-| --oruga-tabs-link-line-height                      | \$tabs-link-line-height                      | \$base-line-height      |
-| --oruga-tabs-link-padding                          | \$tabs-link-padding                          | 0.5em 1em               |
-| --oruga-tabs-boxed-link-radius                     | \$tabs-boxed-link-radius                     | \$base-border-radius    |
-| --oruga-tabs-boxed-link-hover-background-color     | \$tabs-boxed-link-hover-background-color     | hsl(0, 0%, 96%)         |
-| --oruga-tabs-boxed-link-hover-border-bottom-color  | \$tabs-boxed-link-hover-border-bottom-color  | hsl(0, 0%, 86%)         |
-| --oruga-tabs-boxed-link-active-background-color    | \$tabs-boxed-link-active-background-color    | hsl(0, 0%, 100%)        |
-| --oruga-tabs-boxed-link-active-border-color        | \$tabs-boxed-link-active-border-color        | hsl(0, 0%, 86%)         |
-| --oruga-tabs-boxed-link-active-border-bottom-color | \$tabs-boxed-link-active-border-bottom-color | transparent             |
-| --oruga-tabs-toggle-link-border-color              | \$tabs-toggle-link-border-color              | hsl(0, 0%, 86%)         |
-| --oruga-tabs-toggle-link-border-style              | \$tabs-toggle-link-border-style              | solid                   |
-| --oruga-tabs-toggle-link-border-width              | \$tabs-toggle-link-border-width              | 1px                     |
-| --oruga-tabs-toggle-link-hover-background-color    | \$tabs-toggle-link-hover-background-color    | hsl(0, 0%, 96%)         |
-| --oruga-tabs-toggle-link-hover-border-color        | \$tabs-toggle-link-hover-border-color        | hsl(0, 0%, 71%)         |
-| --oruga-tabs-toggle-link-radius                    | \$tabs-toggle-link-radius                    | \$base-border-radius    |
-| --oruga-tabs-toggle-link-active-background-color   | \$tabs-toggle-link-active-background-color   | \$primary               |
-| --oruga-tabs-toggle-link-active-border-color       | \$tabs-toggle-link-active-border-color       | \$primary               |
-| --oruga-tabs-toggle-link-active-color              | \$tabs-toggle-link-active-color              | \$primary-invert        |
diff --git a/packages/docs/components/Timepicker.md b/packages/docs/components/Timepicker.md
deleted file mode 100644
index 05ec3bf9a..000000000
--- a/packages/docs/components/Timepicker.md
+++ /dev/null
@@ -1,357 +0,0 @@
----
-title: Timepicker
----
-
-# Timepicker
-
-> An input with a simple dropdown/modal for selecting a time, uses native timepicker for mobile
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/timepicker/examples/Timepicker.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="enableSeconds">Enable seconds</o-switch>
-      </div>
-      <o-field label="Locale">
-        <o-select v-model="locale">
-          <option :value="undefined"></option>
-          <option value="de-DE">de-DE</option>
-          <option value="en-CA">en-CA</option>
-          <option value="en-GB">en-GB</option>
-          <option value="en-US">en-US</option>
-          <option value="es-ES">es-ES</option>
-          <option value="es-MX">es-MX</option>
-          <option value="fr-CA">fr-CA</option>
-          <option value="fr-FR">fr-FR</option>
-          <option value="it-IT">it-IT</option>
-          <option value="ja-JP">ja-JP</option>
-          <option value="pt-BR">pt-BR</option>
-          <option value="ru-RU">ru-RU</option>
-          <option value="zn-CN">zn-CN</option>
-        </o-select>
-      </o-field>
-      <o-field label="Hour format">
-        <o-select v-model="hourFormat">
-          <option :value="undefined"></option>
-          <option value="12">12</option>
-          <option value="24">24</option>
-        </o-select>
-      </o-field>
-    </o-field>
-    <o-field label="Select time">
-      <o-timepicker rounded placeholder="Click to select..." icon="clock" :enable-seconds="enableSeconds" :hour-format="hourFormat" :locale="locale"> </o-timepicker>
-    </o-field>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        hourFormat: undefined, // Browser locale
-        enableSeconds: false,
-        locale: undefined // Browser locale
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Min/Max date
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select time">
-    <o-timepicker placeholder="Click to select..." :min-time="minTime" :max-time="maxTime"> </o-timepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      const min = new Date()
-      min.setHours(9)
-      min.setMinutes(0)
-      const max = new Date()
-      max.setHours(18)
-      max.setMinutes(0)
-      return {
-        minTime: min,
-        maxTime: max
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Footer
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select time">
-    <o-timepicker v-model="time" placeholder="Click to select...">
-      <o-button label="Now" variant="primary" icon-left="clock" @click="time = new Date()" />
-      <o-button label="Clear" variant="danger" icon-left="times" outlined @click="time = null" />
-    </o-timepicker>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        time: new Date()
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Granularity
-
-::: demo
-
-```html
-<template>
-  <o-field label="Select timepicker">
-    <o-timepicker placeholder="Click to select" icon="clock" :incrementMinutes="minutesGranularity" :incrementHours="hoursGranularity"> </o-timepicker>
-  </o-field>
-</template>
-<script>
-  export default {
-    data() {
-      return {
-        minutesGranularity: 15,
-        hoursGranularity: 2
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Inline
-
-::: demo
-
-```html
-<template>
-  <o-timepicker v-model="time" inline></o-timepicker>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        time: new Date()
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_timepicker.scss)
-
-<br />
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select time">
-                    <o-timepicker v-bind="s" placeholder="Click to select..." ref="timepicker">
-                        <div>This is the footer</div>
-                    </o-timepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openTimePicker() {
-            setTimeout(() => {
-                this.$refs.timepicker.$el.getElementsByClassName('o-drop__trigger')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the Timepicker component size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                        this.openTimePicker();
-                    },
-                },
-                {
-                    class: "boxClass",
-                    description: "Class of the Timepicker component box where you choose the date",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "separatorClass",
-                    description: "Class of the Timepicker separator",
-                    action: () => {
-                        this.openTimePicker();
-                    },
-                },
-                {
-                    class: "footerClass",
-                    description: "Class of the Timepicker footer",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of the Table when on mobile",
-                    warning: "Switch to mobile view to see it in action!"
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-                {
-                    class: "dropdownClasses",
-                    realClass: "dropdownClasses.rootClass",
-                    description: "Classes to apply on dropdown.",
-                    componentRef: "Dropdown",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "selectClasses",
-                    realClass: "selectClasses.selectClass",
-                    description: "Classes to apply on select.",
-                    componentRef: "Select",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
-
-<br />
-<br />
-
-## Props
-
-| Prop name             | Description                                                 | Type           | Values                                            | Default                                                                                                                                      |
-| --------------------- | ----------------------------------------------------------- | -------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
-| appendToBody          |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| autocomplete          | Native options to use in HTML5 validation                   | string         | -                                                 |                                                                                                                                              |
-| defaultMinutes        |                                                             | number         | -                                                 |                                                                                                                                              |
-| defaultSeconds        |                                                             | number         | -                                                 |                                                                                                                                              |
-| disabled              |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| editable              |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| enableSeconds         |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| expanded              | Makes input full width when inside a grouped or addon field | boolean        | -                                                 |                                                                                                                                              |
-| hourFormat            | Hour format for input and display                           | string         | `12`, `24`                                        |                                                                                                                                              |
-| icon                  | Icon name to be added                                       | string         | -                                                 |                                                                                                                                              |
-| iconPack              | Icon pack to use                                            | string         | `mdi`, `fa`, `fas and any other custom icon pack` |                                                                                                                                              |
-| incrementHours        |                                                             | number         | -                                                 | 1                                                                                                                                            |
-| incrementMinutes      |                                                             | number         | -                                                 | 1                                                                                                                                            |
-| incrementSeconds      |                                                             | number         | -                                                 | 1                                                                                                                                            |
-| inline                |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| maxTime               |                                                             | date           | -                                                 |                                                                                                                                              |
-| maxlength             | Same as native maxlength, plus character counter            | number\|string | -                                                 |                                                                                                                                              |
-| minTime               |                                                             | date           | -                                                 |                                                                                                                                              |
-| mobileBreakpoint      | Mobile breakpoint as max-width value                        | string         | -                                                 |                                                                                                                                              |
-| mobileNative          |                                                             | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> timepicker: {<br>&nbsp;&nbsp;mobileNative: true<br>}</code> |
-| openOnFocus           |                                                             | boolean        | -                                                 |                                                                                                                                              |
-| override              | Override classes                                            | boolean        | -                                                 | false                                                                                                                                        |
-| placeholder           |                                                             | string         | -                                                 |                                                                                                                                              |
-| position              | Optional, position of the datepicker relative to the input  | string         | `top-right`, `top-left`, `bottom-left`            |                                                                                                                                              |
-| resetOnMeridianChange |                                                             | boolean        | -                                                 | false                                                                                                                                        |
-| rounded               | Makes the element rounded                                   | boolean        | -                                                 |                                                                                                                                              |
-| size                  | Size of button, optional                                    | string         | `small`, `medium`, `large`                        |                                                                                                                                              |
-| statusIcon            | Show status icon using field and variant prop               | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>             |
-| timeCreator           |                                                             | func           | -                                                 | Default function (see source code)                                                                                                           |
-| timeFormatter         |                                                             | func           | -                                                 | Default function (see source code)                                                                                                           |
-| timeParser            |                                                             | func           | -                                                 | Default function (see source code)                                                                                                           |
-| unselectableTimes     |                                                             | array          | -                                                 |                                                                                                                                              |
-| useHtml5Validation    | Enable html 5 native validation                             | boolean        | -                                                 | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code>     |
-| validationMessage     | The message which is shown when a validation error occurs   | string         | -                                                 |                                                                                                                                              |
-| value                 |                                                             | date           | -                                                 |                                                                                                                                              |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| blur       |            |
-| focus      |            |
-| invalid    |            |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| trigger |             |          |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                  | SASS Variable                           | Default                                               |
-| --------------------------------------------- | --------------------------------------- | ----------------------------------------------------- |
-| --oruga-timepicker-font-size                  | \$timepicker-font-size                  | \$base-font-size                                      |
-| --oruga-timepicker-box-line-height            | \$timepicker-box-line-height            | \$base-line-height                                    |
-| --oruga-timepicker-box-padding                | \$timepicker-box-padding                | .375rem 1rem                                          |
-| --oruga-timepicker-footer-padding             | \$timepicker-footer-padding             | 0 .5rem                                               |
-| --oruga-timepicker-footer-margin              | \$timepicker-footer-margin              | 0.875rem 0 0 0                                        |
-| --oruga-timepicker-select-line-height         | \$timepicker-select-line-height         | \$base-line-height                                    |
-| --oruga-timepicker-select-padding             | \$timepicker-select-padding             | $control-padding-vertical $control-padding-horizontal |
-| --oruga-timepicker-select-color               | \$timepicker-select-color               | #363636                                               |
-| --oruga-timepicker-select-font-weight         | \$timepicker-select-font-weight         | 600                                                   |
-| --oruga-timepicker-select-placeholder-opacity | \$timepicker-select-placeholder-opacity | \$base-disabled-opacity                               |
-| --oruga-timepicker-separator-font-weight      | \$timepicker-separator-font-weight      | 600                                                   |
diff --git a/packages/docs/components/Tooltip.md b/packages/docs/components/Tooltip.md
deleted file mode 100644
index ec4590a72..000000000
--- a/packages/docs/components/Tooltip.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-title: Tooltip
----
-
-# Tooltip
-
-> Display a brief helper text to your user
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/tooltip/examples/Tooltip.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-tooltip label="Tooltip right" position="right">
-      <o-button>
-        Right
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="Tooltip top">
-      <o-button>
-        Top (default)
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="Tooltip bottom" position="bottom">
-      <o-button>
-        Bottom
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="Tooltip left" position="left">
-      <o-button>
-        Left
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="delayed by 1000ms" :delay="1000">
-      <o-button variant="warning">
-        Delayed
-      </o-button>
-    </o-tooltip>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Multiline
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-tooltip label="Tooltip multiline, probably because it's too long for a casual tooltip" multiline>
-      <o-button>
-        Multiline (default)
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="It's not brief, but it's also not long" size="small" multiline>
-      <o-button>
-        Multiline (small)
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip
-      label="Tooltip large multiline, because it's too long to be on a medium size. Did I tell you it's really long? Yes, it is โ€” I assure you!"
-      position="bottom"
-      size="large"
-      multiline
-    >
-      <o-button>
-        Multiline (large)
-      </o-button>
-    </o-tooltip>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Slot
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-tooltip position="bottom" multiline>
-      <o-button>Html Content</o-button>
-      <template v-slot:content> <b>Lorem ipsum dolor sit amet</b>, consectetur warning elit. <i>Fusce id fermentum quam</i>. </template>
-    </o-tooltip>
-
-    <o-tooltip variant="primary" :triggers="['click']" :auto-close="['outside', 'escape']">
-      <template v-slot:content>
-        <o-icon icon="heart" variant="danger"></o-icon>
-        <o-icon icon="thumbs-up" variant="info"></o-icon>
-        <o-icon icon="thumbs-down" variant="warning"></o-icon>
-        <o-icon icon="smile-beam"></o-icon>
-      </template>
-      <o-button>Action</o-button>
-    </o-tooltip>
-  </section>
-</template>
-
-<script>
-  export default {}
-</script>
-```
-
-:::
-
-### Toggle
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-button @click="active = !active">
-      Toggle
-    </o-button>
-
-    <hr />
-
-    <o-tooltip label="I'm never closing" :active="active" always>
-      <o-button>
-        Always
-      </o-button>
-    </o-tooltip>
-
-    <o-tooltip label="Tooltip right" position="right" :active="active">
-      <o-button>
-        Right
-      </o-button>
-    </o-tooltip>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        active: true
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_tooltip.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-tooltip v-bind="s" label="Tooltip!" always>
-                    <o-button>
-                        Delayed
-                    </o-button>
-                </o-tooltip>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the tooltip content",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "triggerClass",
-                    description: "Class of the tooltip trigger",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "multilineClass",
-                    description: "Class of the tooltip content when is multiline",
-                    action: (cmp) => {
-                        cmp.data.multiline = true
-                    }
-                },
-                {
-                    class: "arrowClass",
-                    description: "Class of the tooltip arrow",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "arrowOrderClass",
-                    description: "Class of the tooltip arrow when its position changes",
-                    properties: ['position'],
-                    suffixes: ['top', 'bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "orderClass",
-                    description: "Class of the tooltip trigger when its position changes",
-                    properties: ['position'],
-                    suffixes: ['top', 'bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "alwaysClass",
-                    description: "Class of the tooltip trigger when is always visible",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the tooltip variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name    | Description                                                                                                               | Type                | Values                                                                          | Default                                                                                                                                    |
-| ------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| active       | Whether tooltip is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean             | -                                                                               | true                                                                                                                                       |
-| always       | Tooltip will be always active                                                                                             | boolean             | -                                                                               |                                                                                                                                            |
-| animated     | Tooltip will have an animation                                                                                            | boolean             | -                                                                               | true                                                                                                                                       |
-| animation    | Tooltip default animation                                                                                                 | string              | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br>&nbsp;&nbsp;animation: 'fade'<br>}</code>   |
-| appendToBody | Append tooltip content to body                                                                                            | boolean             | -                                                                               |                                                                                                                                            |
-| autoClose    | Tooltip auto close options                                                                                                | array\|boolean      | `true`, `false`, `'inside'`, `'outside'`                                        | true                                                                                                                                       |
-| delay        | Tooltip delay before it appears (number in ms)                                                                            | number              | -                                                                               |                                                                                                                                            |
-| label        | Tooltip text                                                                                                              | string              | -                                                                               |                                                                                                                                            |
-| multiline    | Tooltip will be multilined                                                                                                | boolean             | -                                                                               |                                                                                                                                            |
-| override     | Override classes                                                                                                          | boolean             | -                                                                               | false                                                                                                                                      |
-| position     | Tooltip position in relation to the element                                                                               | string              | `top`, `bottom`, `left`, `right`                                                | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br>&nbsp;&nbsp;position: 'top'<br>}</code>     |
-| triggers     | Tooltip trigger events                                                                                                    | array               | `hover`, `click`, `focus`, `contextmenu`                                        | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br>&nbsp;&nbsp;triggers: ['hover']<br>}</code> |
-| variant      | Color of the tooltip                                                                                                      | string\|func\|array | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| content |             |          |
-| default |             |          |
-
-## Style
-
-| CSS Variable                            | SASS Variable                     | Default                            |
-| --------------------------------------- | --------------------------------- | ---------------------------------- |
-| --oruga-tooltip-arrow-margin            | \$tooltip-arrow-margin            | 2px                                |
-| --oruga-tooltip-arrow-size              | \$tooltip-arrow-size              | 5px                                |
-| --oruga-tooltip-background-color        | \$tooltip-background-color        | \$primary                          |
-| --oruga-tooltip-color                   | \$tooltip-color                   | \$primary-invert                   |
-| --oruga-tooltip-content-box-shadow      | \$tooltip-content-box-shadow      | 0px 1px 2px 1px rgba(0, 1, 0, 0.2) |
-| --oruga-tooltip-content-font-size       | \$tooltip-content-font-size       | 0.85rem                            |
-| --oruga-tooltip-content-max-width       | \$tooltip-content-max-width       | 300px                              |
-| --oruga-tooltip-content-multiline-width | \$tooltip-content-multiline-width | 300px                              |
-| --oruga-tooltip-content-padding         | \$tooltip-content-padding         | 0.35rem 0.75rem                    |
-| --oruga-tooltip-content-radius-large    | \$tooltip-content-radius-large    | 6px                                |
-| --oruga-tooltip-content-weight-normal   | \$tooltip-content-weight-normal   | 400                                |
-| --oruga-tooltip-content-zindex          | \$tooltip-content-zindex          | 38                                 |
diff --git a/packages/docs/components/Upload.md b/packages/docs/components/Upload.md
deleted file mode 100644
index 92f1a228f..000000000
--- a/packages/docs/components/Upload.md
+++ /dev/null
@@ -1,235 +0,0 @@
----
-title: Upload
----
-
-# Upload
-
-> Upload one or more files
-
-> <CarbonAds />
-
----
-
-<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/upload/examples/Upload.md" class="docgen-edit-link">edit on github</a>
-
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <o-field class="file">
-    <o-upload v-model="file">
-      <o-button tag="a" variant="primary">
-        <o-icon icon="upload"></o-icon>
-        <span>Click to upload</span>
-      </o-button>
-    </o-upload>
-    <span class="file-name" v-if="file">
-      {{ file.name }}
-    </span>
-  </o-field>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        file: null
-      }
-    }
-  }
-</script>
-```
-
-:::
-
-### Drag&Drop
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field>
-      <o-upload v-model="dropFiles" multiple drag-drop>
-        <section class="ex-center">
-          <p>
-            <o-icon icon="upload" size="is-large"> </o-icon>
-          </p>
-          <p>Drop your files here or click to upload</p>
-        </section>
-      </o-upload>
-    </o-field>
-
-    <div class="tags">
-      <span v-for="(file, index) in dropFiles" :key="index">
-        {{file.name}}
-        <o-button icon-left="times" size="small" native-type="button" @click="deleteDropFile(index)"> </o-button>
-      </span>
-    </div>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        dropFiles: []
-      }
-    },
-    methods: {
-      deleteDropFile(index) {
-        this.dropFiles.splice(index, 1)
-      }
-    }
-  }
-</script>
-
-<style>
-  .ex-center {
-    text-align: center;
-  }
-</style>
-```
-
-:::
-
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_upload.scss)
-
-<br />
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <section>
-                    <o-field>
-                        <o-upload v-bind="s">
-                            <section class="ex-center">
-                                <p>
-                                    <o-icon icon="upload" size="is-large"> </o-icon>
-                                </p>
-                                <p v-if="s.dragDrop">Drop your files here or click to upload</p>
-                                <p v-if="!s.dragDrop">Click to upload</p>
-                            </section>
-                        </o-upload>
-                    </o-field>
-                </section>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "draggableClass",
-                    description: "Upload class when draggable",
-                    properties: ['dragDrop'],
-                    action: (cmp) => {
-                        cmp.data.dragDrop = true;
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Upload class when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Upload class when disabled",
-                    properties: ['disabled'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "hoveredClass",
-                    description: "Upload class on dragging",
-                    properties: ['dragDrop'],
-                    warning: 'Drag & drop a file to see it in action!',
-                    action: (cmp) => {
-                        cmp.data.dragDrop = true;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the upload variant',
-                    properties: ["variant", "dragDrop"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    warning: 'Drag & drop a file to see it in action!',
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                        cmp.data.dragDrop = true;
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
-
-<br />
-<br />
-
-## Props
-
-| Prop name          | Description                                                           | Type                | Values                                                                          | Default                                                                                                                                  |
-| ------------------ | --------------------------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
-| accept             | Same as native accept                                                 | string              | -                                                                               |                                                                                                                                          |
-| autocomplete       | Native options to use in HTML5 validation                             | string              | -                                                                               |                                                                                                                                          |
-| disabled           | Same as native disabled                                               | boolean             | -                                                                               |                                                                                                                                          |
-| dragDrop           | Accepts drag & drop and change its style                              | boolean             | -                                                                               |                                                                                                                                          |
-| expanded           | Upload will be expanded (full-width)                                  | boolean             | -                                                                               | false                                                                                                                                    |
-| icon               | Icon name to be added                                                 | string              | -                                                                               |                                                                                                                                          |
-| iconPack           | Icon pack to use                                                      | string              | `mdi`, `fa`, `fas and any other custom icon pack`                               |                                                                                                                                          |
-| maxlength          | Same as native maxlength, plus character counter                      | number\|string      | -                                                                               |                                                                                                                                          |
-| multiple           | Same as native, also push new item to v-model instead of replacing    | boolean             | -                                                                               |                                                                                                                                          |
-| native             | Replace last chosen files every time (like native file input element) | boolean             | -                                                                               | false                                                                                                                                    |
-| override           | Override classes                                                      | boolean             | -                                                                               | false                                                                                                                                    |
-| rounded            | Makes the element rounded                                             | boolean             | -                                                                               |                                                                                                                                          |
-| statusIcon         | Show status icon using field and variant prop                         | boolean             | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "statusIcon": true<br>}</code>         |
-| useHtml5Validation | Enable html 5 native validation                                       | boolean             | -                                                                               | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp; "useHtml5Validation": true<br>}</code> |
-| v-model            |                                                                       | object\|File\|array | -                                                                               |                                                                                                                                          |
-| validationMessage  | The message which is shown when a validation error occurs             | string              | -                                                                               |                                                                                                                                          |
-| variant            | Color of the control, optional                                        | string              | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` |                                                                                                                                          |
-
-## Events
-
-| Event name | Properties | Description |
-| ---------- | ---------- | ----------- |
-| blur       |            |
-| focus      |            |
-| invalid    |            |
-| input      |            |
-
-## Slots
-
-| Name    | Description | Bindings |
-| ------- | ----------- | -------- |
-| default |             |          |
-
-## Style
-
-| CSS Variable                                | SASS Variable                         | Default                 |
-| ------------------------------------------- | ------------------------------------- | ----------------------- |
-| --oruga-upload-draggable-border             | \$upload-draggable-border             | 1px dashed \$grey-light |
-| --oruga-upload-draggable-border-radius      | \$upload-draggable-border-radius      | \$base-border-radius    |
-| --oruga-upload-draggable-disabled-opacity   | \$upload-draggable-disabled-opacity   | \$base-disabled-opacity |
-| --oruga-upload-draggable-hover-border-color | \$upload-draggable-hover-border-color | \$grey                  |
-| --oruga-upload-draggable-padding            | \$upload-draggable-padding            | 0.25em                  |
diff --git a/packages/docs/docgen.config.js b/packages/docs/docgen.config.js
deleted file mode 100644
index 69c11edd0..000000000
--- a/packages/docs/docgen.config.js
+++ /dev/null
@@ -1,171 +0,0 @@
-const path = require('path');
-const fs = require('fs');
-
-const src = '../oruga/src';
-
-const IGNORE = [
-  'DropdownItem.vue', 'FieldBody.vue', 'SliderThumb.vue', 'SliderTick.vue',
-  'TableMobileSort.vue', 'TablePagination.vue', 'TableColumn.vue', 'PaginationButton.vue',
-  'TabItem.vue', 'StepItem.vue', 'MenuItem.vue', 'MenuList.vue', 'Inspector.vue',
-  'DatepickerTable.vue', 'DatepickerTableRow.vue', 'DatepickerMonth.vue', 'NotificationNotice.vue',
-  'CarouselItem.vue'
-];
-
-const IGNORE_CLASSES = {
-    'icon' : ['customClass']
-}
-
-const NAME_FOLDER_MAPPING = {
-    'notification/toast' : 'notification'
-}
-
-module.exports = {
-  componentsRoot: `${src}/components`,
-  components: '**/[A-Z]*.vue',
-  outDir: './components',
-  docsRepo: 'oruga-ui/oruga',
-  docsBranch: 'develop',
-  docsFolder: 'packages/docs',
-  defaultExamples: false,
-  getDestFile: (file, config) => {
-    const component = path.basename(file);
-    if (!component || IGNORE.indexOf(component) >= 0) return;
-    return path.join(config.outDir, component).replace(/\.vue$/, '.md');
-  },
-  templates: {
-    component: (renderedUsage, doc, config, fileName, requiresMd, { isSubComponent }) => {
-      const { displayName, description, docsBlocks, tags, functional } = doc;
-      const { deprecated, author, since, version, see, link, style } = tags || {};
-      return `
-
-${!isSubComponent ? `
----
-title: ${displayName}
----
-`: ''}
-# ${deprecated ? `~~${displayName}~~` : displayName}
-${deprecated ? `> **Deprecated** ${deprecated[0].description}\n` : ''}
-${description ? '> ' + description : ''}
-${functional ? renderedUsage.functionalTag : ''}
-${author ? author.map(a => `Author: ${a.description}\n`) : ''}
-${since ? `Since: ${since[0].description}\n` : ''}
-${version ? `Version: ${version[0].description}\n` : ''}
-${see ? see.map(s => `[See](${s.description})\n`) : ''}
-${link ? link.map(l => `[See](${l.description})\n`) : ''}
-> <CarbonAds />
-${docsBlocks ? '---\n' + docsBlocks.join('\n---\n') : ''}
-${tmplClassProps(config, displayName.toLowerCase())}
-${tmplProps(renderedUsage.props, config, displayName.toLowerCase())}
-${renderedUsage.methods}
-${renderedUsage.events}
-${renderedUsage.slots}
-${requiresMd.length ? '---\n' + requiresMd.map(component => component.content).join('\n---\n') : ''}
-${style ? renderStyleDocs(config, style[0].description) : ''}
-`;
-    },
-    props: (props) => {
-      return props
-    }
-  }
-};
-
-function tmplClassProps(config, name) {
-    try {
-        name = NAME_FOLDER_MAPPING[name] ? NAME_FOLDER_MAPPING[name] : name
-        const inspectorVueFile = path.resolve(config.cwd, `${src}/components/${name}/Inspector.vue`)
-        return `
-## Class props
-
-๐Ÿ“„ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_${name}.scss)
-
-<br />
-${fs.readFileSync(inspectorVueFile, 'utf8')}
-<br />
-<br />
-`
-    } catch (err) {
-        return ''
-    }
-}
-
-function tmplProps(props, config, name) {
-    let ret = `
-## Props
-| Prop name     | Description | Type      | Values      | Default     |
-| ------------- |-------------| --------- | ----------- | ----------- |
-`
-  props = props.filter(function(prop) {
-      return !('tags' in prop) || !('ignore' in prop.tags);
-  });
-
-  props.sort(function(propa, propb) {
-    return (propa.name < propb.name) ? -1 : (propa.name > propb.name) ? 1 : 0;
-  });
-
-  props.forEach(pr => {
-    const p = pr.name
-    if (p.endsWith("Class") || p.endsWith("Classes")) {
-      if (!(IGNORE_CLASSES[name] && IGNORE_CLASSES[name].indexOf(p) >= 0)) {
-        return;
-      }
-    }
-    const n = pr.type && pr.type.name ? pr.type.name : ''
-    let d = pr.defaultValue && pr.defaultValue.value ? pr.defaultValue.value : ''
-    const v = pr.values ? pr.values.map(pv => `\`${pv}\``).join(', ') : '-'
-    const t = pr.description ? pr.description : ''
-
-    if (d.indexOf('getValueByPath') >= 0 && d.indexOf('const ') < 0 && d.indexOf('if ') < 0 && d.indexOf('else ') < 0) {
-      const params = d.substring(d.lastIndexOf('('), d.lastIndexOf(')')).split(',')
-      let configParts = null
-      if (params.length > 3) { // In case last param contains a ','
-        params[2] = params.slice(2).join(',')
-      }
-      if (params[1]) {
-        configParts = params[1].split('.')
-      }
-      if (configParts && configParts[0] && configParts[1]) {
-        const value = `${configParts[1].replace(/'/g, '')}: ${params[2]}`
-        d = `<div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>${configParts[0].replace(/'/g, '')}: {<br>&nbsp;&nbsp;${value}<br>}</code>`
-      }
-      if (configParts && configParts.length == 1) {
-        const value = `${configParts[0].replace(/'/g, '')}: ${params[2]}`
-        d = `<div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp;${value}<br>}</code>`
-      }
-    }
-
-    d = d.includes('=>') ? 'Default function (see source code)' : d
-
-    ret += `| ${mdclean(p)} | ${mdclean(t)} | ${mdclean(n)} | ${mdclean(v)} | ${mdclean(d)} |` + '\n'
-  })
-  return ret
-}
-
-function mdclean(input) {
-  return input.replace(/\r?\n/g, '<br>').replace(/\|/g, '\\|')
-}
-
-function renderStyleDocs(config, name) {
-  const cssFile = path.resolve(config.cwd, `${src}/scss/components/${name}`)
-  const content = fs.readFileSync(cssFile, 'utf8');
-  const docsRegex = '/* @docs */';
-  const docs = content.substring(content.indexOf(docsRegex) + docsRegex.length, content.lastIndexOf(docsRegex));
-  const variables = docs.split(/\r?\n/).filter(d => !!d);
-  return `
-## Style
-
-  | CSS Variable          | SASS Variable  | Default |
-  | --------------------- | -------------- | ------- |
-${variables
-      .filter(variable => variable.indexOf('@deprecated') < 0)
-      .map(variable => {
-        const keyValue = variable.split(':');
-        const varName = keyValue[0].trim();
-        const varValue = keyValue[1].replace('!default', '').replace(';', '').trim();
-        const varNameCSS = varName.replace('$', '');
-        return (
-          `| ${'--oruga-' + varNameCSS} | ${varName} | ${varValue} |`
-        )
-      })
-      .join('\n')}
-`
-}
diff --git a/packages/docs/documentation/README.md b/packages/docs/documentation/README.md
deleted file mode 100644
index 1439969a5..000000000
--- a/packages/docs/documentation/README.md
+++ /dev/null
@@ -1,686 +0,0 @@
-## Introduction
-
-Oruga is a <b>lightweight library of UI components for [Vue.js](https://vuejs.org/) without CSS framework dependency.</b><br>
-It <b>doesn't depend on any specific style or CSS framework</b> (like Bootstrap, Bulma, TailwindCSS, etc) and it <b>doesn't provide any grid system or CSS utility</b>, it just offer a <b>set of components easy to customize only modifying your stylesheets</b> or <b>integrating it with a CSS framework</b> (see the [demo](#examples)).<br>
-Oruga wants you to <b>focus only on UI/UX aspects</b> of your application and <b>be totally flexible to future changes</b> without having to touch a line of JavaScript. 
-
-If you need a component library and want to easily apply your custom styles, Oruga is the library for you! ๐Ÿ›
-
-<CarbonAds />
-
-### Oruga default stylesheet
-
-Oruga comes with a default stylesheet containing only the essential rules for Oruga components such as display, position, z-index and other basic attributes. You can use the default Oruga stylesheet in this documentation turning on the switch in the navbar. 
-
-<video class="oruga-doc-video" controls autoplay muted loop>
-  <source src="/defaultswitch.mp4" type="video/mp4">
-</video>
-
-If you use the default stylesheet to browse documentation some examples won't work as you expect because sizes, variants and adornments are not included in the Oruga default stylesheet. For more info read ["Differences between default and full css"](#differences-between-default-and-full-css) or go to ["Customization section"](#customization) if you want to know more about components customization.
-
-### Availability
-
-๐Ÿ› Oruga is available for [Vue.js](https://vuejs.org/) **version 2.6+** or **version 3.x** and has been tested in all major browsers
-
-![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Internet Explorer](https://raw.githubusercontent.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png)
---- | --- | --- | --- | --- | --- |
-Latest โœ” | Latest โœ” | 10+ โœ” | Latest โœ” | 6.1+ โœ” | IE 11  โœ” |
-
-๐Ÿ’… For more info about components customization, go to the ["Customization section"](#customization).
-
-๐Ÿ•น To see Oruga in action, go to the ["Examples" section](#examples).
-
-## Setup
-
-### Vue 2
-<br>
-<o-tabs contentClass="installation-tabs-content" navTabsClass="installation-tabs-nav-buttons" rootClass="installation-tabs">
-<o-tab-item override label="Yarn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```bash
-yarn add @oruga-ui/oruga
-```
-
-</o-tab-item>
-<o-tab-item override label="Npm" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```bash
-npm install @oruga-ui/oruga --save
-```
-
-</o-tab-item>
-<o-tab-item override label="Cdn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```html
-<link rel="stylesheet" href="https://unpkg.com/@oruga-ui/oruga/dist/oruga.min.css" />
-<script src="https://unpkg.com/@oruga-ui/oruga/dist/oruga.min.js"></script>
-```
-
-</o-tab-item>
-</o-tabs>
-
-#### Build from "develop" branch
-
-```html
-<link rel="stylesheet" href="https://preview.oruga.io/cdn/oruga.min.css" />
-<script src="https://preview.oruga.io/cdn/oruga.min.js"></script>
-```
-
-
-
-#### Full bundle
-
-```js
-import Vue from 'vue'
-import Oruga from '@oruga-ui/oruga'
-import '@oruga-ui/oruga/dist/oruga.css'
-
-Vue.use(Oruga)
-```
-
-#### Individual components (tree shaking)
-
-```js
-import Vue from 'vue'
-import { OAutocomplete, OSidebar } from '@oruga-ui/oruga'
-import '@oruga-ui/oruga/dist/oruga.css'
-
-Vue.component(OAutocomplete)
-Vue.component(OSidebar)
-```
-
-### Vue 3
-<br>
-<o-tabs contentClass="installation-tabs-content" navTabsClass="installation-tabs-nav-buttons" rootClass="installation-tabs">
-<o-tab-item override label="Yarn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```bash
-yarn add @oruga-ui/oruga-next
-```
-
-</o-tab-item>
-<o-tab-item override label="Npm" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```bash
-npm install @oruga-ui/oruga-next --save
-```
-
-</o-tab-item>
-<o-tab-item override label="Cdn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-">
-
-```html
-<link rel="stylesheet" href="//unpkg.com/oruga-next/dist/oruga.css" />
-<script src="//unpkg.com/oruga-next/dist/oruga.js"></script>
-```
-
-</o-tab-item>
-</o-tabs>
-
-#### Full bundle
-
-```js
-import { createApp } from 'vue'
-import Oruga from '@oruga-ui/oruga-next'
-import '@oruga-ui/oruga-next/dist/oruga.css'
-
-createApp(...).use(Oruga);
-```
-
-#### Individual components (tree shaking)
-
-```js
-import { createApp } from 'vue'
-import { OAutocomplete, OSidebar } from '@oruga-ui/oruga-next'
-import '@oruga-ui/oruga-next/dist/oruga.css'
-
-createApp(...)
-  .use(OAutocomplete)
-  .use(OSidebar)
-```
-
-## Nuxt module
-
-Oruga provides a [Nuxt.js](https://nuxtjs.org) module to easily integrate the library in your Nuxt.js app.
-
-Add `@oruga-ui/oruga/nuxt` to `modules` section of your `nuxt.config.js` file.
-
-```js
-module.exports = {
-  modules: ['@oruga-ui/oruga/nuxt']
-}
-```
-
-You can also extend and/or override classes in this section (see how to [add new classes](#adding-new-classes) or [override existing classes](#overriding-classes) in Oruga)
-
-```js
-module.exports = {
-  modules: [
-    [
-      '@oruga-ui/oruga/nuxt',
-      {
-        button: {
-          override: true
-        }
-      }
-    ]
-  ]
-}
-```
-
-By default Oruga Nuxt module includes `oruga.css` stylesheet. If you want to avoid including it you can set `includeCss` to `false` inside `nuxt.conf.js`
-
-```js
-  oruga: {
-    includeCss: false
-  },
-```
-
-`includeCss` accepts other 2 values: 
-
-- `full` to include `oruga-full.css`
-- `vars` to include `oruga-full-vars.css`
-
-See ["Customization section"](#customization) to understand the difference between these stylesheets.
-
-Alternatively you can use Nuxt.js plugins system adding a file (e.g. `oruga.js`) in your `plugins` folder containing
-
-```js
-import Vue from 'vue'
-import Oruga from '@oruga-ui/oruga'
-import '@oruga-ui/oruga/dist/oruga.css'
-
-Vue.use(Oruga)
-```
-
-To make this plugin available in your app, add this file to the `plugins` array in your `nuxt.config.js`
-
-```js
-plugins: [{ src: '~plugins/oruga.js' }]
-```
-
-To understand how the plugins work with Nuxt.js, take a look at the [NuxtJS plugin documentation](https://nuxtjs.org/guides/configuration-glossary/configuration-plugins).
-
-## Customization
-
-Oruga allows you to customize components in 3 different ways:
-
-- [Adding new classes](#adding-classes)
-- [Overriding existing classes](#overriding-classes)
-- [Using CSS or SASS/SCSS variables](#using-css-or-sass-scss-variables)
-
-You can mix them, for example adding new classes and using CSS variables!
-
-Oruga provides `oruga.css`, a lightweight stylesheet containing only minimal CSS rules (position, display, z-index ...). Include it if you want to perform a complete customization. 
-
-Oruga provides other 2 different stylesheets:
-
-- `oruga-full.css`: a stylesheet containing the complete Oruga style (the default style used for documentation).
-- `oruga-full-vars.css`: a stylesheet containing the complete Oruga style with css vars you can redefine in your application. For more information [click here](#using-css-or-sass-scss-variables).
-
-For more info read ["Differences between default and full css"](#differences-between-default-and-full-css).
-
-
-
-### Adding new classes or override existing ones
-
-With Oruga you can easily override existing components style appending one or more classes. Each component has a `Class prop` section (for example see [Dropdown Class props](/components/Dropdown.html#class-props)) where you can inspect elements each class property affects using the `Class prop inspector`.
-
-<video class="oruga-doc-video" controls autoplay muted loop>
-  <source src="/inspectormov.mp4" type="video/mp4">
-</video>
-
-### Adding classes
-
-You can add classes to a component using class properties (see [Autocomplete class props](/components/Autocomplete.html#class-props) for example)
-
-#### Adding classes from props
-
-```vue
-<o-autocomplete root-class="myautocomplete-root" menu-class="myautocomplete-menu" item-class="myautocomplete-item" />
-```
-
-#### Adding classes globally
-
-```js
-import Vue from 'vue';
-import Oruga from '@oruga-ui/oruga';
-import '@oruga-ui/oruga/dist/oruga.css';
-
-Vue.use(Oruga, {
-    autocomplete: {
-        rootClass: 'myautocomplete-root',
-        menuClass: 'myautocomplete-menu',
-        itemClass: 'myautocomplete-item',
-        ...
-    }
-});
-```
-
-If you use individual imports you can customize each component using `Config` plugin.
-
-```js
-import Vue from 'vue';
-import { OAutocomplete, OSidebar, Config } from '@oruga-ui/oruga';
-
-Vue.component(OAutocomplete);
-Vue.component(OSidebar);
-Vue.use(Config, {
-    autocomplete: {
-        rootClass: 'myautocomplete-root',
-        menuClass: 'myautocomplete-menu',
-        itemClass: 'myautocomplete-item',
-        ...
-    }
-})
-```
-
-You can also use an `array` to specify more than one class or a `function` to extend or override classes in a component. In case you use a function, a suffix is provided by the component and it can be used inside the function. For example, `menuPositionClass` in Autocomplete provides a suffix to specify menu position (top, bottom), in this case you may define a function and append the suffix to the base class name
-
-```js
-Vue.use(Config, {
-    autocomplete: {
-        rootClass: 'myautocomplete-root',
-        menuClass: 'myautocomplete-menu',
-        menuPositionClass: {
-            class: (suffix) => {
-                return `myautocomplete-menu-${suffix}`
-            }
-        },
-        itemClass: 'myautocomplete-item',
-    }
-})
-```
-
-For a better customization experience this function accepts the component's `context` containing its read-only attributes (`props`, `data` and `computed`) as second parameter. For example using [Bootstrap](https://getbootstrap.com/) you may want to apply variants to buttons only when the element is not outlined
-
-```js
-Vue.use(Config, {
-    input: {
-        rootClass: (_, context) => {
-            if (context.computed.hasIconRight) {
-                return 'has-icons-right')
-            }
-        },
-        variantClass: (variant, context) => {
-            if (!context.props.outlined) {
-                return `btn-${variant}`
-            }
-        }
-    },
-    ...
-}
-```
-
-#### Deal with specificity
-
-Oruga CSS comes with the lowest [specifity](https://www.w3schools.com/css/css_specificity.asp) possible, that's why you can easily override existing classes by defining new ones in the global configuration or using attributes. However there are some cases where specificty is higher than you expect, for example in the [Steps](/components/Steps.html) component the `nav item` contains a `marker` and a `divider` which colors change whether the nav item is active or not.
-
-```scss
-.o-steps {
-    ...
-    &__nav-item-active {
-        .o-steps__link {
-            cursor: default;
-        }
-
-        .o-steps__marker {
-            @include avariable('background-color', 'steps-maker-default-color', $steps-maker-default-color);
-            @include avariable('border-color', 'steps-active-color', $steps-active-color);
-            @include avariable('color', 'steps-active-color', $steps-active-color);
-        }
-
-        .o-steps__divider {
-            background-position: left bottom;
-        }
-    }
-
-    &__nav-item-previous {
-        .o-steps__marker {
-            @include avariable('color', 'steps-maker-default-color', $steps-maker-default-color);
-            @include avariable('background-color', 'steps-previous-color', $steps-previous-color);
-        }
-
-        .o-steps__divider {
-            background-position: left bottom;
-        }
-    }
-    ...
-}
-```
-
-If you want to change the color you can use `!important` or change variables values. Otherwise you can easily increase the specificity in your stylesheet
-
-```css
-.steps-nav-item-active .step-marker {
-  color: blue;
-  border-color: blue;
-}
-
-.steps-nav-item-active .step-divider {
-  background-color: blue;
-}
-
-.steps-nav-item-previous .step-marker {
-  background-color: blue;
-}
-
-.steps-nav-item-previous .step-divider {
-  background-color: blue;
-}
-```
-
-and then configure Oruga to use your custom classes
-
-```js
-Vue.use(Oruga, {
-  steps: {
-    itemActiveClass: 'steps-nav-item-active',
-    itemPreviousClass: 'steps-nav-item-previous',
-    stepMarkerClass: 'step-marker',
-    stepDividerClass: 'step-divider',
-  }
-});
-```
-
-You can see this code in action in [Oruga multiframework example](https://oruga-multiframework-demo.netlify.app/tailwind)(code [here](https://github.com/oruga-ui/demo-multiframework/blob/master/src/assets/oruga-tailwindcss.css#L64))
-
-Sometimes components change how elements are positioned (horizontally, vertically...), this is another case of higher specificity. In the [Steps](/components/Steps.html) component the `vertical` attribute disposes the steps vertically changing the `height` of the steps `divider`.
-
-```scss
-.o-steps {
-    &__wrapper-vertical {
-        display: flex;
-        flex-direction: row;
-
-        .o-steps__divider {
-            height: 100%;
-            @include avariable('width', 'steps-divider-height', $steps-divider-height);
-            top: -50%;
-            left: calc(50% - #{$steps-divider-height / 2});
-        }
-
-        ...
-    }
-    ...
-}
-```
-
-If you want to set height to 50% keeping the other attributes unchanged you can't just define a new class (unless you want to use `!important`), because of a higher specificity. In that case, we suggest to define your new class in this way
-
-```css
-.steps-vertical .step-divider {
-  height: 50%;
-}
-```
-
-and in your configuration
-
-```js
-Vue.use(Oruga, {
-    steps: {
-      verticalClass: 'steps-vertical',
-      stepDividerClass: 'step-divider'
-    }
-});
-```
-
-In Oruga documentation you'll find a special note (๐Ÿ”) in the `Class prop inspector` for classes with a higher specificity. 
-
-### Overriding classes
-
-In case you want to override Oruga existing classes completely, you can act as above and set the field `override` to true.
-
-```js
-import Vue from 'vue';
-import Oruga from '@oruga-ui/oruga';
-
-Vue.use(Oruga, {
-    autocomplete: {
-        override: true,
-        rootClass: 'myautocomplete-root',
-        menuClass: 'myautocomplete-menu',
-        itemClass: 'myautocomplete-item',
-        ...
-    }
-});
-```
-
-or directly in your component 
-
-```html
-<o-autocomplete
-    override
-    rootClass="myautocomplete-root">
-```
-
-::: warning
-In this case `override` property replaces Oruga existing classes completely, ignoring your configuration.
-:::
-
-You can also specify the override behaviour for each class
-
-```js
-Vue.use(Config, {
-    autocomplete: {
-        rootClass: {
-            class: 'myautocomplete-root',
-            override: true
-        },
-        menuClass: 'myautocomplete-menu',
-        itemClass: 'myautocomplete-item',
-        ...
-    }
-})
-```
-
-### Transform classes
-
-In case you want to transform applied classes' names you can use `transformClasses` function directly in your configuration.
-
-```js
-Vue.use(Config, {
-    button: {
-        transformClasses: (appliedClasses) => {
-            return appliedClasses.replace(/-/g, '--')
-        }
-    }
-    ...
-})
-```
-
-You can also use `transformClasses` globally if you need to transform classes for any component.
-
-```js
-Vue.use(Config, {
-    transformClasses: (appliedClasses) => {
-        return appliedClasses.replace(/-/g, '--')
-    }
-    ...
-})
-```
-
-### Using CSS or SASS/SCSS variables
-
-You can easily customize Oruga using CSS or SASS/SCSS variables. Each component has its own variables, mostly of them with default values defined in the [base style](documentation/#base-style) (see [utilities/_variables.scss](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/utilities/_variables.scss)).
-
-To use *CSS variables* you have to import `oruga-full-vars.css` stylesheet
-
-```js
-import '@oruga-ui/oruga/dist/oruga-full-vars.css'
-```
-
-and redefine the variables you want to change. 
-
-For example to change variants globally using CSS variables you can do
-
-```css
-:root {
-  --oruga-variant-primary: green;
-  --oruga-variant-danger: red;
-}
-```
-
-or a specific component variable, such as button icon width
-
-```css
-:root {
-  --oruga-button-icon-width: 2.5em;
-}
-```
-
-To use *SASS/SCSS variables* you have to use .scss files placed in the Oruga package
-
-```js
-import '@oruga-ui/oruga/src/scss/oruga-full-vars';
-```
-
-::: warning
-In order to work with SASS/SCSS you might also have to install `sass` and `sass-loader` depending on your environment.
-:::
-
-An example can be found in the [Button style section](/components/Button.html#style): here you'll find the complete list of all the CSS and SASS/SCSS variables (with their respective default values) you can redefine for each component.
-
-## Configuration
-
-Oruga allows to customize each components using config constructor or programmatically using `this.$oruga.config`.
-
-```js
-{
-    globalfield: string|boolean|number|function|....,
-    componentname: {
-        override: boolean,
-        customfieldX: string|boolean|number|function|....
-    }
-}
-
-```
-
-For example:
-
-```js
-{
-    button: {
-        override: true,
-        rootClass: 'btn',
-        roundedClass: 'btn-rounded',
-        ...
-    }
-}
-
-```
-
-### Differences between default and full css
-
-The default stylesheet contains only the essantial rules for Oruga components such as display, position, z-index and other basic attributes. 
-
-For example to style a dropdown using override mode with _oruga_ default stylesheet using [TailwindCSS](https://tailwindcss.com/)
-
-```js
-import '@oruga-ui/oruga/dist/oruga.css'
-```
-
-```css
-.dropdown {
-    @apply inline-flex relative;
-}
-.dropdown-menu {
-    top: 100%;
-    min-width: 12em;
-    @apply absolute bg-white left-0 m-0 px-2 shadow-lg rounded-sm z-10;
-}
-.dropdown-item {
-    @apply relative block no-underline px-1 py-2 cursor-pointer;
-}
-```
-
-And here's how to style a dropdown using _oruga-full_ stylesheet
-
-```js
-import '@oruga-ui/oruga/dist/oruga-full.css'
-```
-
-```css
-.dropdown-menu {
-    min-width: 12em;
-    @apply bg-white m-0 px-2 shadow-lg rounded-sm z-10;
-}
-.dropdown-item {
-    @apply no-underline px-1 py-2 cursor-pointer;
-}
-```
-
-Take a look at the [official TailwindCSS + Oruga example](https://github.com/oruga-ui/demo-tailwindcss).
-
-## Global Props
-
-| Field              | Description                                                                                                                                                                                  | Default |
-| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| statusIcon         | Show status icon using field and variant prop                                                                                                                                                | true    |
-| statusVariantIcon  | Default mapping of variant and icon name                                                                                                                                                     | <code style='white-space: nowrap; padding: 0;'>{<br>&nbsp;&nbsp;'success': 'check',<br>&nbsp;&nbsp;'danger': 'alert-circle',<br>&nbsp;&nbsp;'info':'information', <br>&nbsp;&nbsp;'warning': 'alert'<br>} </code> |
-| useHtml5Validation | Default form components use-html5-validation attribute                                                                                                                                       | true    |
-| iconPack           | Icon pack used internally and on the Icon component attribute                                                                                                                                | 'mdi'   |
-| reportInvalidInput | Callback function that allows for custom behavior when HTML constraint validation would visually report that a field is invalid. Takes the input and its parent field (if any) as arguments. | <code style='white-space: nowrap; padding: 0;'>null</code> |
-
-Take a look at each component docs to know all customizable fields/props by config.
-
-## Base Style
-
-| SASS Variable                | Default                                                                                                                                                                                                          |
-|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| \$base-border-radius         | 4px                                                                                                                                                                                                              |
-| \$base-font-size             | 1rem                                                                                                                                                                                                             |
-| \$base-rounded-border-radius | 9999px                                                                                                                                                                                                           |
-| \$base-line-height           | 1.5                                                                                                                                                                                                              |
-| \$base-disabled-opacity      | 0.5                                                                                                                                                                                                              |
-| \$speed                      | 300ms                                                                                                                                                                                                            |
-| \$speed-slow                 | 150ms                                                                                                                                                                                                            |
-| \$speed-slower               | 250ms                                                                                                                                                                                                            |
-| \$easing                     | ease-out                                                                                                                                                                                                         |
-| \$control-border-width       | 1px                                                                                                                                                                                                              |
-| \$control-height             | 2.25em                                                                                                                                                                                                           |
-| \$white                      | #ffffff                                                                                                                                                                                                          |
-| \$black                      | #000000                                                                                                                                                                                                          |
-| \$grey                       | #7a7a7a                                                                                                                                                                                                          |
-| \$grey-light                 | #b5b5b5                                                                                                                                                                                                          |
-| \$grey-lighter               | #dbdbdb                                                                                                                                                                                                          |
-| \$primary                    | #445e00                                                                                                                                                                                                          |
-| \$primary-invert             | \$white                                                                                                                                                                                                          |
-| \$danger                     | #b60000                                                                                                                                                                                                          |
-| \$danger-invert              | \$white                                                                                                                                                                                                          |
-| \$warning                    | #f4c300                                                                                                                                                                                                          |
-| \$warning-invert             | \$black                                                                                                                                                                                                          |
-| \$success                    | #006724                                                                                                                                                                                                          |
-| \$success-invert             | \$white                                                                                                                                                                                                          |
-| \$info                       | #005C98                                                                                                                                                                                                          |
-| \$info-invert                | \$white                                                                                                                                                                                                          |
-| \$whitelist                  | ()                                                                                                                                                                                                               |
-| \$sass-vars                  | true                                                                                                                                                                                                             |
-| \$css-vars                   | true                                                                                                                                                                                                             |
-| \$variable-prefix            | '--oruga-'                                                                                                                                                                                                       |
-| \$sizes                      | (<br>&nbsp;&nbsp;"small": .75rem,<br>&nbsp;&nbsp;"medium": 1.25rem,<br>&nbsp;&nbsp;"large": 1.5rem<br>)                                                                                                                                              |
-| \$colors                     | (<br>&nbsp;&nbsp;"primary": ($primary, $primary-invert),<br>&nbsp;&nbsp;"danger": ($danger, $danger-invert),<br>&nbsp;&nbsp;"warning": ($warning, $warning-invert),<br>&nbsp;&nbsp;"success": ($success, $success-invert),<br>&nbsp;&nbsp;"info": ($info, $info-invert)<br>) |
-
-## Examples
-
-### TailwindCSS, Bootstrap 5, Bulma and Material demo ๐Ÿงถ
-
-- [Online demo](https://oruga-multiframework-demo.netlify.app)
-- [Source code](https://github.com/oruga-ui/demo-multiframework)
-
-<iframe frameborder="0" style="margin-top: 1rem; width: 100%; height: 80vh;"
-    src="https://oruga-multiframework-demo.netlify.app/Tailwind">
-</iframe>
-
-### TailwindCSS 2 Recipe Demo ๐Ÿ๐Ÿ”๐ŸŸ
-
-This simple demo shows a simple recipe website. Oruga components like Input, Radio, Loading, Switch, Collapse etc are customized using [TailwindCSS 2](https://tailwindcss.com/)!
-
-- [Online demo](https://oruga-tailwindcss-demo.netlify.app)
-- [Source code](https://github.com/oruga-ui/demo-tailwindcss)
-
-## Articles
-
-- [Oruga UI Components without CSS Framework Dependency - Article by Walter Tommasi](https://dev.to/jtommy/oruga-ui-components-library-without-css-framework-dependency-4m3m)
-- [Oruga, the new kid on the block - Article by Andrea Stagi](https://dev.to/astagi/oruga-the-new-kid-on-the-block-1n55)
- 
-
diff --git a/packages/docs/expo/README.md b/packages/docs/expo/README.md
deleted file mode 100644
index 4cf0f1837..000000000
--- a/packages/docs/expo/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: Expo
----
-
-# Expo
-
-> See how devs are using Oruga to create beautiful websites and apps!
-
----
-
-<expo />
diff --git a/packages/docs/hacktoberfest/README.md b/packages/docs/hacktoberfest/README.md
deleted file mode 100644
index 051fbaa63..000000000
--- a/packages/docs/hacktoberfest/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Hacktoberfest
----
-# Oruga participates in Hacktoberfest 2021 ๐ŸŽƒ
-
-<img src="https://hacktoberfest.digitalocean.com/_nuxt/img/divider.d80d9b6.svg">
-
-[Hacktoberfest](https://hacktoberfest.digitalocean.com/) is a month-long celebration of open source software run by DigitalOcean. During the month of October, you're invited to join open-source software enthusiasts, beginners, and the developer community by contributing to open-source projects.
-
-## How can I contribute to Oruga projects?
-
-Hacktoberfest encourages participation in the open source community, which grows bigger every year. Support open source throughout October contributing to Oruga project!
-
-<CarbonAds />
-
-Discover our repositories, pick an issue and contribute to the betterment of Oruga via pull requests to complete the 2021 challenge and earn a [limited edition T-shirt](https://hacktoberfest.digitalocean.com/register).
-
-<HFRepos filter_fullname="^(?!oruga-ui/demo).+$"/>
-
-๐ŸŽƒ All projects are [available on GitHub](https://github.com/oruga-ui)
-
-## Stay tuned!
-
-New issues will be created during this month and properly labeled as well, so stay tuned!
-
-Don't forget that we'll be very happy to help new devs approaching to hack and improve Oruga for the first time!
-<br/>You can use [GitHub](https://github.com/oruga-ui/oruga), [Twitter](https://twitter.com/oruga_ui) and [Discord](https://discord.gg/RuKuBYN) to communicate with us!
-
-Happy coding! ๐Ÿ› 
-
-#
-
-<img src="https://hacktoberfest.digitalocean.com/_nuxt/img/divider.d80d9b6.svg" style="-webkit-transform: scaleX(-1);transform: scaleX(-1);">
-
-<img src="/banner08CRredlogo.png" style="display: block; margin-left: auto; margin-right: auto; width: 50%;">
-
diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json
deleted file mode 100644
index 101e5cea5..000000000
--- a/packages/docs/package-lock.json
+++ /dev/null
@@ -1,31859 +0,0 @@
-{
-  "name": "@oruga-ui/docs",
-  "version": "0.7.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "@oruga-ui/docs",
-      "version": "0.7.0",
-      "license": "MIT",
-      "dependencies": {
-        "vue-telescope-expo": "^1.0.0"
-      },
-      "devDependencies": {
-        "@fortawesome/fontawesome-svg-core": "1.2.28",
-        "@fortawesome/free-solid-svg-icons": "5.13.0",
-        "@fortawesome/vue-fontawesome": "0.1.9",
-        "@vuepress/plugin-google-analytics": "1.5.2",
-        "concurrently": "5.2.0",
-        "markdown-it-include": "1.1.1",
-        "sockjs-client": "1.4.0",
-        "vue-docgen-cli": "4.34.4",
-        "vuepress": "1.5.2",
-        "vuepress-plugin-demo-block": "0.7.2"
-      }
-    },
-    "node_modules/@ampproject/remapping": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
-      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.1.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.22.13",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
-      "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/highlight": "^7.22.13",
-        "chalk": "^2.4.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/compat-data": {
-      "version": "7.20.10",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
-      "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
-      "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
-      "dev": true,
-      "dependencies": {
-        "@ampproject/remapping": "^2.1.0",
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.7",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-module-transforms": "^7.20.7",
-        "@babel/helpers": "^7.20.7",
-        "@babel/parser": "^7.20.7",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/babel"
-      }
-    },
-    "node_modules/@babel/core/node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@babel/core/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/@babel/core/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/generator": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
-      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.23.0",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "@jridgewell/trace-mapping": "^0.3.17",
-        "jsesc": "^2.5.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
-      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
-      "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-explode-assignable-expression": "^7.18.6",
-        "@babel/types": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
-      "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/compat-data": "^7.20.5",
-        "@babel/helper-validator-option": "^7.18.6",
-        "browserslist": "^4.21.3",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz",
-      "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-member-expression-to-functions": "^7.20.7",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz",
-      "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "regexpu-core": "^5.2.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-define-polyfill-provider": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
-      "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.17.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "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/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-environment-visitor": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
-      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-explode-assignable-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
-      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-function-name": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
-      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/template": "^7.22.15",
-        "@babel/types": "^7.23.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-hoist-variables": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
-      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.22.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz",
-      "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
-      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
-      "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-simple-access": "^7.20.2",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/helper-validator-identifier": "^7.19.1",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.10",
-        "@babel/types": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
-      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
-      "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
-      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-wrap-function": "^7.18.9",
-        "@babel/types": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
-      "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-member-expression-to-functions": "^7.20.7",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
-      "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
-      "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.20.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-split-export-declaration": {
-      "version": "7.22.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
-      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.22.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-option": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-wrap-function": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
-      "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.5",
-        "@babel/types": "^7.20.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
-      "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/highlight": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
-      "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
-      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
-      "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.13.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
-      "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-remap-async-to-generator": "^7.18.9",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
-      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-class-static-block": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz",
-      "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz",
-      "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/plugin-syntax-decorators": "^7.19.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-dynamic-import": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
-      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
-      "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
-      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
-      "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
-      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
-      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
-      "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/compat-data": "^7.20.5",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
-      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz",
-      "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
-      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz",
-      "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-create-class-features-plugin": "^7.20.5",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@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.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
-      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=4"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-async-generators": {
-      "version": "7.8.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
-      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
-      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
-      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
-      "dev": true,
-      "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.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz",
-      "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
-      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
-      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-import-assertions": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
-      "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
-      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-jsx": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
-      "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
-      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
-      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
-      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
-      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
-      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
-      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
-      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
-      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
-      "dev": true,
-      "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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
-      "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-async-to-generator": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
-      "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-remap-async-to-generator": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
-      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoping": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz",
-      "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-classes": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz",
-      "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "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.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
-      "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/template": "^7.20.7"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-destructuring": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz",
-      "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-dotall-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
-      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-duplicate-keys": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
-      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
-      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-for-of": {
-      "version": "7.18.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
-      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-function-name": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
-      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.18.9",
-        "@babel/helper-function-name": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
-      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-member-expression-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
-      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-amd": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
-      "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz",
-      "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-simple-access": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-systemjs": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
-      "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-identifier": "^7.19.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-umd": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
-      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
-      "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.20.5",
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-new-target": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
-      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-object-super": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
-      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-parameters": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz",
-      "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-property-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
-      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-regenerator": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
-      "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "regenerator-transform": "^0.15.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-reserved-words": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
-      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz",
-      "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
-      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-spread": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
-      "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-sticky-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
-      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-template-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
-      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-typeof-symbol": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
-      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-escapes": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
-      "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
-      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/preset-env": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
-      "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
-        "@babel/plugin-proposal-class-properties": "^7.18.6",
-        "@babel/plugin-proposal-class-static-block": "^7.18.6",
-        "@babel/plugin-proposal-dynamic-import": "^7.18.6",
-        "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
-        "@babel/plugin-proposal-json-strings": "^7.18.6",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
-        "@babel/plugin-proposal-numeric-separator": "^7.18.6",
-        "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-private-methods": "^7.18.6",
-        "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
-        "@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-import-assertions": "^7.20.0",
-        "@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.18.6",
-        "@babel/plugin-transform-async-to-generator": "^7.18.6",
-        "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
-        "@babel/plugin-transform-block-scoping": "^7.20.2",
-        "@babel/plugin-transform-classes": "^7.20.2",
-        "@babel/plugin-transform-computed-properties": "^7.18.9",
-        "@babel/plugin-transform-destructuring": "^7.20.2",
-        "@babel/plugin-transform-dotall-regex": "^7.18.6",
-        "@babel/plugin-transform-duplicate-keys": "^7.18.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
-        "@babel/plugin-transform-for-of": "^7.18.8",
-        "@babel/plugin-transform-function-name": "^7.18.9",
-        "@babel/plugin-transform-literals": "^7.18.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.18.6",
-        "@babel/plugin-transform-modules-amd": "^7.19.6",
-        "@babel/plugin-transform-modules-commonjs": "^7.19.6",
-        "@babel/plugin-transform-modules-systemjs": "^7.19.6",
-        "@babel/plugin-transform-modules-umd": "^7.18.6",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
-        "@babel/plugin-transform-new-target": "^7.18.6",
-        "@babel/plugin-transform-object-super": "^7.18.6",
-        "@babel/plugin-transform-parameters": "^7.20.1",
-        "@babel/plugin-transform-property-literals": "^7.18.6",
-        "@babel/plugin-transform-regenerator": "^7.18.6",
-        "@babel/plugin-transform-reserved-words": "^7.18.6",
-        "@babel/plugin-transform-shorthand-properties": "^7.18.6",
-        "@babel/plugin-transform-spread": "^7.19.0",
-        "@babel/plugin-transform-sticky-regex": "^7.18.6",
-        "@babel/plugin-transform-template-literals": "^7.18.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.18.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.18.10",
-        "@babel/plugin-transform-unicode-regex": "^7.18.6",
-        "@babel/preset-modules": "^0.1.5",
-        "@babel/types": "^7.20.2",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "core-js-compat": "^3.25.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/preset-env/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/preset-modules": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
-      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
-      "dev": true,
-      "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/runtime": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
-      "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
-      "dev": true,
-      "dependencies": {
-        "regenerator-runtime": "^0.13.11"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.22.15",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
-      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/parser": "^7.22.15",
-        "@babel/types": "^7.22.15"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.23.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
-      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/generator": "^7.23.0",
-        "@babel/helper-environment-visitor": "^7.22.20",
-        "@babel/helper-function-name": "^7.23.0",
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/parser": "^7.23.0",
-        "@babel/types": "^7.23.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/@babel/types": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "to-fast-properties": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@fortawesome/fontawesome-common-types": {
-      "version": "0.2.36",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
-      "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
-      "dev": true,
-      "hasInstallScript": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/fontawesome-svg-core": {
-      "version": "1.2.28",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz",
-      "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==",
-      "dev": true,
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "^0.2.28"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/free-solid-svg-icons": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz",
-      "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==",
-      "dev": true,
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "^0.2.28"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/vue-fontawesome": {
-      "version": "0.1.9",
-      "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.9.tgz",
-      "integrity": "sha512-h/emhmZz+DfB2zOGLWawNwXq82UYhn9waTfUjLLmeaIqtnIyNt6kYlpQT/vzJjLZRDRvY2IEJAh1di5qKpKVpA==",
-      "dev": true,
-      "peerDependencies": {
-        "@fortawesome/fontawesome-svg-core": ">= 1.2.0 < 1.3",
-        "vue": "~2"
-      }
-    },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
-      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/set-array": "^1.0.0",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.4.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
-      "dev": true
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.17",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/resolve-uri": "3.1.0",
-        "@jridgewell/sourcemap-codec": "1.4.14"
-      }
-    },
-    "node_modules/@mrmlnc/readdir-enhanced": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
-      "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
-      "dev": true,
-      "dependencies": {
-        "call-me-maybe": "^1.0.1",
-        "glob-to-regexp": "^0.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@sindresorhus/is": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@szmarczak/http-timer": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
-      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
-      "dev": true,
-      "dependencies": {
-        "defer-to-connect": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@types/glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
-      "dev": true,
-      "dependencies": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
-    },
-    "node_modules/@types/minimatch": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
-      "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
-      "dev": true
-    },
-    "node_modules/@types/node": {
-      "version": "18.11.18",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-      "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
-      "dev": true
-    },
-    "node_modules/@types/q": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
-      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
-      "dev": true
-    },
-    "node_modules/@vue/babel-helper-vue-jsx-merge-props": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz",
-      "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==",
-      "dev": true
-    },
-    "node_modules/@vue/babel-helper-vue-transform-on": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
-      "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
-      "dev": true
-    },
-    "node_modules/@vue/babel-plugin-jsx": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
-      "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "@vue/babel-helper-vue-transform-on": "^1.0.2",
-        "camelcase": "^6.0.0",
-        "html-tags": "^3.1.0",
-        "svg-tags": "^1.0.0"
-      }
-    },
-    "node_modules/@vue/babel-plugin-transform-vue-jsx": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz",
-      "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "html-tags": "^2.0.0",
-        "lodash.kebabcase": "^4.1.1",
-        "svg-tags": "^1.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
-      "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vue/babel-preset-app": {
-      "version": "4.5.19",
-      "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz",
-      "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/core": "^7.11.0",
-        "@babel/helper-compilation-targets": "^7.9.6",
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/plugin-proposal-class-properties": "^7.8.3",
-        "@babel/plugin-proposal-decorators": "^7.8.3",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-jsx": "^7.8.3",
-        "@babel/plugin-transform-runtime": "^7.11.0",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.0",
-        "@vue/babel-plugin-jsx": "^1.0.3",
-        "@vue/babel-preset-jsx": "^1.2.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3",
-        "core-js": "^3.6.5",
-        "core-js-compat": "^3.6.5",
-        "semver": "^6.1.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "*",
-        "core-js": "^3",
-        "vue": "^2 || ^3.0.0-0"
-      },
-      "peerDependenciesMeta": {
-        "core-js": {
-          "optional": true
-        },
-        "vue": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/babel-preset-app/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@vue/babel-preset-jsx": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz",
-      "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==",
-      "dev": true,
-      "dependencies": {
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "@vue/babel-sugar-composition-api-inject-h": "^1.4.0",
-        "@vue/babel-sugar-composition-api-render-instance": "^1.4.0",
-        "@vue/babel-sugar-functional-vue": "^1.4.0",
-        "@vue/babel-sugar-inject-h": "^1.4.0",
-        "@vue/babel-sugar-v-model": "^1.4.0",
-        "@vue/babel-sugar-v-on": "^1.4.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0",
-        "vue": "*"
-      },
-      "peerDependenciesMeta": {
-        "vue": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/babel-sugar-composition-api-inject-h": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz",
-      "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-composition-api-render-instance": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz",
-      "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-functional-vue": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz",
-      "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-inject-h": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz",
-      "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz",
-      "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "camelcase": "^5.0.0",
-        "html-tags": "^2.0.0",
-        "svg-tags": "^1.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
-      "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-on": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz",
-      "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "camelcase": "^5.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vue/compiler-core": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
-      "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.45",
-        "estree-walker": "^2.0.2",
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/@vue/compiler-dom": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
-      "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
-      "dev": true,
-      "dependencies": {
-        "@vue/compiler-core": "3.2.45",
-        "@vue/shared": "3.2.45"
-      }
-    },
-    "node_modules/@vue/compiler-sfc": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
-      "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
-      "dependencies": {
-        "@babel/parser": "^7.18.4",
-        "postcss": "^8.4.14",
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/@vue/compiler-ssr": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
-      "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
-      "dev": true,
-      "dependencies": {
-        "@vue/compiler-dom": "3.2.45",
-        "@vue/shared": "3.2.45"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
-      "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==",
-      "dev": true,
-      "dependencies": {
-        "consolidate": "^0.15.1",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.2",
-        "merge-source-map": "^1.1.0",
-        "postcss": "^7.0.36",
-        "postcss-selector-parser": "^6.0.2",
-        "source-map": "~0.6.1",
-        "vue-template-es2015-compiler": "^1.9.0"
-      },
-      "optionalDependencies": {
-        "prettier": "^1.18.2 || ^2.0.0"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/@vue/reactivity-transform": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
-      "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.45",
-        "@vue/shared": "3.2.45",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7"
-      }
-    },
-    "node_modules/@vue/shared": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
-      "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
-      "dev": true
-    },
-    "node_modules/@vuepress/core": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-1.5.2.tgz",
-      "integrity": "sha512-DaRLzShuT116mu6ObsgfFXk+BX2c0W1Zp+BcIg1W5HrRhMZFnMvncdx9iiIjJhXdhVcaBYrVa3Y2624V113TBA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/core": "^7.8.4",
-        "@vue/babel-preset-app": "^4.1.2",
-        "@vuepress/markdown": "1.5.2",
-        "@vuepress/markdown-loader": "1.5.2",
-        "@vuepress/plugin-last-updated": "1.5.2",
-        "@vuepress/plugin-register-components": "1.5.2",
-        "@vuepress/shared-utils": "1.5.2",
-        "autoprefixer": "^9.5.1",
-        "babel-loader": "^8.0.4",
-        "cache-loader": "^3.0.0",
-        "chokidar": "^2.0.3",
-        "connect-history-api-fallback": "^1.5.0",
-        "copy-webpack-plugin": "^5.0.2",
-        "core-js": "^3.6.4",
-        "cross-spawn": "^6.0.5",
-        "css-loader": "^2.1.1",
-        "file-loader": "^3.0.1",
-        "js-yaml": "^3.13.1",
-        "lru-cache": "^5.1.1",
-        "mini-css-extract-plugin": "0.6.0",
-        "optimize-css-assets-webpack-plugin": "^5.0.1",
-        "portfinder": "^1.0.13",
-        "postcss-loader": "^3.0.0",
-        "postcss-safe-parser": "^4.0.1",
-        "toml": "^3.0.0",
-        "url-loader": "^1.0.1",
-        "vue": "^2.6.10",
-        "vue-loader": "^15.7.1",
-        "vue-router": "^3.1.3",
-        "vue-server-renderer": "^2.6.10",
-        "vue-template-compiler": "^2.6.10",
-        "vuepress-html-webpack-plugin": "^3.2.0",
-        "vuepress-plugin-container": "^2.0.2",
-        "webpack": "^4.8.1",
-        "webpack-chain": "^6.0.0",
-        "webpack-dev-server": "^3.5.1",
-        "webpack-merge": "^4.1.2",
-        "webpackbar": "3.2.0"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "dependencies": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/anymatch/node_modules/normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-      "dev": true,
-      "dependencies": {
-        "remove-trailing-separator": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": 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/@vuepress/core/node_modules/chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
-      "dev": 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/@vuepress/core/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": 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/@vuepress/core/node_modules/fsevents": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/@vuepress/core/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/is-number/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": 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/@vuepress/core/node_modules/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/core/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/@vuepress/markdown": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.5.2.tgz",
-      "integrity": "sha512-736fVRZh4x3QOORWhhz2IzCdrOKOnGL7KpWQ59Y+lg7SYNETRvxGxGXTFGrfd+hR9GugThj952BaWWpUCrO7fw==",
-      "dev": true,
-      "dependencies": {
-        "@vuepress/shared-utils": "1.5.2",
-        "markdown-it": "^8.4.1",
-        "markdown-it-anchor": "^5.0.2",
-        "markdown-it-chain": "^1.3.0",
-        "markdown-it-emoji": "^1.4.0",
-        "markdown-it-table-of-contents": "^0.4.0",
-        "prismjs": "^1.13.0"
-      }
-    },
-    "node_modules/@vuepress/markdown-loader": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/markdown-loader/-/markdown-loader-1.5.2.tgz",
-      "integrity": "sha512-ZRW/sQk5EK1yNKjWFNdfLmdlQXgT8GUBrnWQDV6FRwh5r+NmSJsgEYISmewGgGGzlUY+GUJKiUjGhe7itztB2Q==",
-      "dev": true,
-      "dependencies": {
-        "@vuepress/markdown": "1.5.2",
-        "loader-utils": "^1.1.0",
-        "lru-cache": "^5.1.1"
-      }
-    },
-    "node_modules/@vuepress/markdown-loader/node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/@vuepress/markdown-loader/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/@vuepress/markdown/node_modules/entities": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-      "dev": true
-    },
-    "node_modules/@vuepress/markdown/node_modules/markdown-it": {
-      "version": "8.4.2",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
-      "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
-      "dev": true,
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "entities": "~1.1.1",
-        "linkify-it": "^2.0.0",
-        "mdurl": "^1.0.1",
-        "uc.micro": "^1.0.5"
-      },
-      "bin": {
-        "markdown-it": "bin/markdown-it.js"
-      }
-    },
-    "node_modules/@vuepress/plugin-active-header-links": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.5.2.tgz",
-      "integrity": "sha512-bZP/0jpouVSvMypixx2/I7kxWFUV4HfwLNx7UxbtuDrykQzXnA2cz6yTra8Y1ZoXACbRp6TIqGlWpCUafBzyww==",
-      "dev": true,
-      "dependencies": {
-        "lodash.debounce": "^4.0.8"
-      }
-    },
-    "node_modules/@vuepress/plugin-google-analytics": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.5.2.tgz",
-      "integrity": "sha512-MrM/Zs0VbOclL0xKXS/Gi017Kl42oiWHUDr2Uz5VCQjqGB1FyAsQdGLtloE1Y6rtTuDXektsss9Bx9uX0f1amw==",
-      "dev": true
-    },
-    "node_modules/@vuepress/plugin-last-updated": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.2.tgz",
-      "integrity": "sha512-wTq1reNSpGTSPJcnUHFfg+qpZBg88yXv3fZNWnEGSdiuUnbF4bFMTUr9tSaWHzMgtajvzY2B8VnTmrhy2ABfsA==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^6.0.5"
-      }
-    },
-    "node_modules/@vuepress/plugin-nprogress": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-1.5.2.tgz",
-      "integrity": "sha512-PtiV5u9hHZJNPmyKs7s++f4GCJTuvPP25aIASi06vKACr/+Ier5XC7PvOwUvS1LbG6HAGRbQpokmeP1aVbrI6w==",
-      "dev": true,
-      "dependencies": {
-        "nprogress": "^0.2.0"
-      }
-    },
-    "node_modules/@vuepress/plugin-register-components": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-register-components/-/plugin-register-components-1.5.2.tgz",
-      "integrity": "sha512-e0GYZG6KXa7axy8GO9sNtLaZNW+lXlidWCURg61/gfKISG5yzKr71n75j5V7pyEJ/idAV/sAakunp7+6nsShDg==",
-      "dev": true,
-      "dependencies": {
-        "@vuepress/shared-utils": "1.5.2"
-      }
-    },
-    "node_modules/@vuepress/plugin-search": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-1.5.2.tgz",
-      "integrity": "sha512-/n0W7lQhBCj7vrIhU6VL8ZlUnWBru83W4w0gGNxzXDzZ1AMRJRnQDamBjKAWNd+WMYz8LA2LbJy1rCCds1Mu2Q==",
-      "dev": true
-    },
-    "node_modules/@vuepress/shared-utils": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.5.2.tgz",
-      "integrity": "sha512-msDE6Mpof9JDVZQDHYUbsKmQm4aT/CUlUnItlORF+0J4xrIzv96dldJb8pvloDNUjyvB3DXeDJrV4V1XzpwsIA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.3.2",
-        "diacritics": "^1.3.0",
-        "escape-html": "^1.0.3",
-        "fs-extra": "^7.0.1",
-        "globby": "^9.2.0",
-        "gray-matter": "^4.0.1",
-        "hash-sum": "^1.0.2",
-        "semver": "^6.0.0",
-        "upath": "^1.1.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/@nodelib/fs.stat": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
-      "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-      "dev": true,
-      "dependencies": {
-        "array-uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": 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/@vuepress/shared-utils/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-      "dev": true,
-      "dependencies": {
-        "path-type": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/fast-glob": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
-      "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
-      "dev": true,
-      "dependencies": {
-        "@mrmlnc/readdir-enhanced": "^2.2.1",
-        "@nodelib/fs.stat": "^1.1.2",
-        "glob-parent": "^3.1.0",
-        "is-glob": "^4.0.0",
-        "merge2": "^1.2.3",
-        "micromatch": "^3.1.10"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": 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/@vuepress/shared-utils/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/globby": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
-      "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
-      "dev": true,
-      "dependencies": {
-        "@types/glob": "^7.1.1",
-        "array-union": "^1.0.2",
-        "dir-glob": "^2.2.2",
-        "fast-glob": "^2.2.6",
-        "glob": "^7.1.3",
-        "ignore": "^4.0.3",
-        "pify": "^4.0.1",
-        "slash": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/ignore": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/@vuepress/shared-utils/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/is-number/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": 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/@vuepress/shared-utils/node_modules/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/path-type/node_modules/pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/slash": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-      "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vuepress/shared-utils/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vuepress/theme-default": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-1.5.2.tgz",
-      "integrity": "sha512-sO44ExAoO+pNO5qJJvlFin1vaBjxYkTO5oiBu53sYoInAoN3liG1uraMpyaGmhdmzCSlGQpqH+ojtnISTmfAcg==",
-      "dev": true,
-      "dependencies": {
-        "@vuepress/plugin-active-header-links": "1.5.2",
-        "@vuepress/plugin-nprogress": "1.5.2",
-        "@vuepress/plugin-search": "1.5.2",
-        "docsearch.js": "^2.5.2",
-        "lodash": "^4.17.15",
-        "stylus": "^0.54.5",
-        "stylus-loader": "^3.0.2",
-        "vuepress-plugin-container": "^2.0.2",
-        "vuepress-plugin-smooth-scroll": "^0.0.3"
-      }
-    },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
-      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
-      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
-      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
-      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-code-frame": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
-      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/wast-printer": "1.9.0"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-fsm": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
-      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-module-context": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
-      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.9.0"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
-      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
-      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
-      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
-      "dev": true,
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
-      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
-      "dev": true,
-      "dependencies": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
-      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/wasm-edit": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
-      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
-      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
-      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
-      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
-      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
-      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "dev": true
-    },
-    "node_modules/@xtuc/long": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "dev": true
-    },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "node_modules/accepts": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-      "dev": true,
-      "dependencies": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/agentkeepalive": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
-      "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true,
-      "peerDependencies": {
-        "ajv": ">=5.0.0"
-      }
-    },
-    "node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true,
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/algoliasearch": {
-      "version": "3.35.1",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz",
-      "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==",
-      "dev": true,
-      "dependencies": {
-        "agentkeepalive": "^2.2.0",
-        "debug": "^2.6.9",
-        "envify": "^4.0.0",
-        "es6-promise": "^4.1.0",
-        "events": "^1.1.0",
-        "foreach": "^2.0.5",
-        "global": "^4.3.2",
-        "inherits": "^2.0.1",
-        "isarray": "^2.0.1",
-        "load-script": "^1.0.0",
-        "object-keys": "^1.0.11",
-        "querystring-es3": "^0.2.1",
-        "reduce": "^1.0.1",
-        "semver": "^5.1.0",
-        "tunnel-agent": "^0.6.0"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
-      "dev": true
-    },
-    "node_modules/ansi-align": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
-      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.1.0"
-      }
-    },
-    "node_modules/ansi-colors": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-escapes": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
-      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
-      "dev": true,
-      "dependencies": {
-        "type-fest": "^0.21.3"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-escapes/node_modules/type-fest": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
-      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-html-community": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
-      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
-      "dev": true,
-      "engines": [
-        "node >= 0.8.0"
-      ],
-      "bin": {
-        "ansi-html": "bin/ansi-html"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-      "dev": true
-    },
-    "node_modules/argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dev": true,
-      "dependencies": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "node_modules/arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-flatten": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
-      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
-      "dev": true
-    },
-    "node_modules/array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array.prototype.reduce": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
-      "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-array-method-boxes-properly": "^1.0.0",
-        "is-string": "^1.0.7"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
-      "dev": true
-    },
-    "node_modules/asn1": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
-      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "node_modules/asn1.js": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
-      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/assert": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-      "dev": true,
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      }
-    },
-    "node_modules/assert-never": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
-      "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==",
-      "dev": true
-    },
-    "node_modules/assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/assert/node_modules/inherits": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-      "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
-      "dev": true
-    },
-    "node_modules/assert/node_modules/util": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-      "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "2.0.1"
-      }
-    },
-    "node_modules/assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ast-types": {
-      "version": "0.14.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
-      "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ast-types/node_modules/tslib": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
-      "dev": true
-    },
-    "node_modules/async": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
-      "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "node_modules/async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true
-    },
-    "node_modules/async-limiter": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "dev": true
-    },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-      "dev": true
-    },
-    "node_modules/atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true,
-      "bin": {
-        "atob": "bin/atob.js"
-      },
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/autocomplete.js": {
-      "version": "0.36.0",
-      "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz",
-      "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==",
-      "dev": true,
-      "dependencies": {
-        "immediate": "^3.2.3"
-      }
-    },
-    "node_modules/autoprefixer": {
-      "version": "9.8.8",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
-      "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.12.0",
-        "caniuse-lite": "^1.0.30001109",
-        "normalize-range": "^0.1.2",
-        "num2fraction": "^1.2.2",
-        "picocolors": "^0.2.1",
-        "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/autoprefixer/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/autoprefixer/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/aws4": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
-      "dev": true
-    },
-    "node_modules/babel-loader": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz",
-      "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
-      "dev": true,
-      "dependencies": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^2.0.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
-      },
-      "engines": {
-        "node": ">= 8.9"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "webpack": ">=2"
-      }
-    },
-    "node_modules/babel-loader/node_modules/loader-utils": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-      "dev": true,
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^2.1.2"
-      },
-      "engines": {
-        "node": ">=8.9.0"
-      }
-    },
-    "node_modules/babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "dev": true,
-      "dependencies": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
-      "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/compat-data": "^7.17.7",
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "semver": "^6.1.1"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs3": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
-      "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "core-js-compat": "^3.25.1"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-regenerator": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
-      "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-walk": {
-      "version": "3.0.0-canary-5",
-      "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
-      "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.9.6"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "node_modules/base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
-      "dev": true
-    },
-    "node_modules/bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
-      "dev": true,
-      "dependencies": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "node_modules/big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "node_modules/bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-      "dev": true
-    },
-    "node_modules/bn.js": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
-      "dev": true
-    },
-    "node_modules/body-parser": {
-      "version": "1.20.1",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
-      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
-      "dev": true,
-      "dependencies": {
-        "bytes": "3.1.2",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.11.0",
-        "raw-body": "2.5.1",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/body-parser/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/body-parser/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/body-parser/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/body-parser/node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "dev": true,
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/bonjour": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "dev": true
-    },
-    "node_modules/boxen": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
-      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-align": "^3.0.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^3.0.0",
-        "cli-boxes": "^2.2.0",
-        "string-width": "^4.1.0",
-        "term-size": "^2.1.0",
-        "type-fest": "^0.8.1",
-        "widest-line": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/boxen/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/boxen/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/boxen/node_modules/chalk": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/boxen/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/boxen/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/brorand": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
-      "dev": true
-    },
-    "node_modules/browserify-aes": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-      "dev": true,
-      "dependencies": {
-        "browserify-aes": "^1.0.4",
-        "browserify-des": "^1.0.0",
-        "evp_bytestokey": "^1.0.0"
-      }
-    },
-    "node_modules/browserify-des": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
-      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "node_modules/browserify-sign": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
-      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/browserify-zlib": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-      "dev": true,
-      "dependencies": {
-        "pako": "~1.0.5"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.21.4",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
-      "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        }
-      ],
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001400",
-        "electron-to-chromium": "^1.4.251",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.9"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      }
-    },
-    "node_modules/buffer": {
-      "version": "4.9.2",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-      "dev": true,
-      "dependencies": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      }
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "dev": true
-    },
-    "node_modules/buffer-indexof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
-      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
-      "dev": true
-    },
-    "node_modules/buffer-json": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
-      "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
-      "dev": true
-    },
-    "node_modules/buffer-xor": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
-      "dev": true
-    },
-    "node_modules/buffer/node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-      "dev": true
-    },
-    "node_modules/builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
-      "dev": true
-    },
-    "node_modules/bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/cac": {
-      "version": "6.7.14",
-      "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
-      "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "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/cacache/node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/cacache/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "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/cache-loader": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-3.0.1.tgz",
-      "integrity": "sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==",
-      "dev": true,
-      "dependencies": {
-        "buffer-json": "^2.0.0",
-        "find-cache-dir": "^2.1.0",
-        "loader-utils": "^1.2.3",
-        "mkdirp": "^0.5.1",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/cache-loader/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cache-loader/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cache-loader/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/cacheable-request": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-      "dev": true,
-      "dependencies": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^3.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^4.1.0",
-        "responselike": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/get-stream": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-      "dev": true,
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/lowercase-keys": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-      "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/normalize-url": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
-      "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/call-me-maybe": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
-      "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
-      "dev": true
-    },
-    "node_modules/caller-callsite": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
-      "dev": true,
-      "dependencies": {
-        "callsites": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/caller-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-      "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
-      "dev": true,
-      "dependencies": {
-        "caller-callsite": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-      "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/camel-case": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
-      "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
-      "dev": true,
-      "dependencies": {
-        "no-case": "^2.2.0",
-        "upper-case": "^1.1.1"
-      }
-    },
-    "node_modules/camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "dev": true,
-      "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.30001441",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
-      "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-        }
-      ]
-    },
-    "node_modules/caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
-      "dev": true
-    },
-    "node_modules/chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/chalk/node_modules/supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/character-parser": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
-      "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
-      "dev": true,
-      "dependencies": {
-        "is-regex": "^1.0.3"
-      }
-    },
-    "node_modules/chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://paulmillr.com/funding/"
-        }
-      ],
-      "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": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-      "dev": true
-    },
-    "node_modules/chrome-trace-event": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
-      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/ci-info": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
-      "dev": true
-    },
-    "node_modules/cipher-base": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "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/clean-css": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
-      "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
-      "dev": true,
-      "dependencies": {
-        "source-map": "~0.6.0"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/cli-boxes": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cliui": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^3.1.0",
-        "strip-ansi": "^5.2.0",
-        "wrap-ansi": "^5.1.0"
-      }
-    },
-    "node_modules/cliui/node_modules/ansi-regex": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cliui/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-      "dev": true
-    },
-    "node_modules/cliui/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cliui/node_modules/string-width": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^7.0.1",
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cliui/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/clone-response": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
-      "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
-      "dev": true,
-      "dependencies": {
-        "mimic-response": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-      "dev": true,
-      "dependencies": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
-      "dev": true,
-      "dependencies": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/color": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
-      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^1.9.3",
-        "color-string": "^1.6.0"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "1.1.3"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-      "dev": true
-    },
-    "node_modules/color-string": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
-      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "node_modules/combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/commander": {
-      "version": "2.17.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
-      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
-      "dev": true
-    },
-    "node_modules/commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
-      "dev": true
-    },
-    "node_modules/component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-      "dev": true
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "dev": true,
-      "dependencies": {
-        "mime-db": ">= 1.43.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/compression/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "node_modules/concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "dev": true,
-      "engines": [
-        "node >= 0.8"
-      ],
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "node_modules/concurrently": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz",
-      "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "date-fns": "^2.0.1",
-        "lodash": "^4.17.15",
-        "read-pkg": "^4.0.1",
-        "rxjs": "^6.5.2",
-        "spawn-command": "^0.0.2-1",
-        "supports-color": "^6.1.0",
-        "tree-kill": "^1.2.2",
-        "yargs": "^13.3.0"
-      },
-      "bin": {
-        "concurrently": "bin/concurrently.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/configstore": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "graceful-fs": "^4.1.2",
-        "make-dir": "^3.0.0",
-        "unique-string": "^2.0.0",
-        "write-file-atomic": "^3.0.0",
-        "xdg-basedir": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/connect-history-api-fallback": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
-      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/consola": {
-      "version": "2.15.3",
-      "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
-      "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
-      "dev": true
-    },
-    "node_modules/console-browserify": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
-      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
-      "dev": true
-    },
-    "node_modules/consolidate": {
-      "version": "0.15.1",
-      "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
-      "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.1.1"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/constantinople": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
-      "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.6.0",
-        "@babel/types": "^7.6.1"
-      }
-    },
-    "node_modules/constants-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
-      "dev": true
-    },
-    "node_modules/content-disposition": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
-      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "5.2.1"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/content-disposition/node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/convert-source-map": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
-      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
-      "dev": true
-    },
-    "node_modules/cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
-      "dev": true
-    },
-    "node_modules/copy-concurrently": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-      "dev": true,
-      "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-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
-      "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
-      "dev": true,
-      "dependencies": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "webpack-log": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-      "dev": true,
-      "dependencies": {
-        "array-uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-      "dev": true,
-      "dependencies": {
-        "path-type": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/globby": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-      "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
-      "dev": true,
-      "dependencies": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/ignore": {
-      "version": "3.3.10",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
-      "dev": true
-    },
-    "node_modules/copy-webpack-plugin/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/make-dir/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/core-js": {
-      "version": "3.27.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz",
-      "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==",
-      "dev": true,
-      "hasInstallScript": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-compat": {
-      "version": "3.27.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz",
-      "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.21.4"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "dev": true
-    },
-    "node_modules/cosmiconfig": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-      "dev": true,
-      "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/create-ecdh": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
-      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      }
-    },
-    "node_modules/create-ecdh/node_modules/bn.js": {
-      "version": "4.12.0",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/create-hash": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-      "dev": true,
-      "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": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "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/crypto-browserify": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
-      "dev": true,
-      "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": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/css": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
-      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      }
-    },
-    "node_modules/css-color-names": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/css-declaration-sorter": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
-      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      },
-      "engines": {
-        "node": ">4"
-      }
-    },
-    "node_modules/css-declaration-sorter/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/css-declaration-sorter/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/css-loader": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz",
-      "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^5.2.0",
-        "icss-utils": "^4.1.0",
-        "loader-utils": "^1.2.3",
-        "normalize-path": "^3.0.0",
-        "postcss": "^7.0.14",
-        "postcss-modules-extract-imports": "^2.0.0",
-        "postcss-modules-local-by-default": "^2.0.6",
-        "postcss-modules-scope": "^2.1.0",
-        "postcss-modules-values": "^2.0.0",
-        "postcss-value-parser": "^3.3.0",
-        "schema-utils": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/css-loader/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/css-loader/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/css-loader/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/css-loader/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/css-loader/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/css-parse": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
-      "dev": true,
-      "dependencies": {
-        "css": "^2.0.0"
-      }
-    },
-    "node_modules/css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "node_modules/css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
-      "dev": true
-    },
-    "node_modules/css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
-      "dev": true,
-      "dependencies": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "dev": true,
-      "bin": {
-        "cssesc": "bin/cssesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cssnano": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz",
-      "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
-      "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
-      "dev": true,
-      "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-preset-default/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/cssnano-preset-default/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/cssnano-util-get-arguments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-      "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-get-match": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-      "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
-      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-raw-cache/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/cssnano-util-raw-cache/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
-      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/cssnano/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "dev": true,
-      "dependencies": {
-        "css-tree": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/css-tree": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-      "dev": true
-    },
-    "node_modules/csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
-    },
-    "node_modules/cyclist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
-      "dev": true
-    },
-    "node_modules/dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/date-fns": {
-      "version": "2.29.3",
-      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
-      "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.11"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/date-fns"
-      }
-    },
-    "node_modules/de-indent": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
-      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
-      "dev": true
-    },
-    "node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/decode-uri-component": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
-      "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/decompress-response": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
-      "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
-      "dev": true,
-      "dependencies": {
-        "mimic-response": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/deep-equal": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
-      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
-      "dev": true,
-      "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-extend": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/deepmerge": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
-      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/defer-to-connect": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
-      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-      "dev": true
-    },
-    "node_modules/define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
-      "dev": true,
-      "dependencies": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
-      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-      "dev": true,
-      "dependencies": {
-        "array-uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del/node_modules/globby": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-      "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/des.js": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
-      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/detect-node": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
-      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
-      "dev": true
-    },
-    "node_modules/diacritics": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz",
-      "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==",
-      "dev": true
-    },
-    "node_modules/diffie-hellman": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "dev": true,
-      "dependencies": {
-        "path-type": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/dns-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
-      "dev": true
-    },
-    "node_modules/dns-packet": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
-      "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
-      "dev": true,
-      "dependencies": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/dns-txt": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
-      "dev": true,
-      "dependencies": {
-        "buffer-indexof": "^1.0.0"
-      }
-    },
-    "node_modules/docsearch.js": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz",
-      "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==",
-      "deprecated": "This package has been deprecated and is no longer maintained. Please use @docsearch/js.",
-      "dev": true,
-      "dependencies": {
-        "algoliasearch": "^3.24.5",
-        "autocomplete.js": "0.36.0",
-        "hogan.js": "^3.0.2",
-        "request": "^2.87.0",
-        "stack-utils": "^1.0.1",
-        "to-factory": "^1.0.0",
-        "zepto": "^1.2.0"
-      }
-    },
-    "node_modules/doctypes": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
-      "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
-      "dev": true
-    },
-    "node_modules/dom-converter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
-      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
-      "dev": true,
-      "dependencies": {
-        "utila": "~0.4"
-      }
-    },
-    "node_modules/dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-      "dev": true,
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/dom-serializer/node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ]
-    },
-    "node_modules/dom-walk": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
-      "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
-      "dev": true
-    },
-    "node_modules/domain-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4",
-        "npm": ">=1.2"
-      }
-    },
-    "node_modules/domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
-      "dev": true
-    },
-    "node_modules/domhandler": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
-      "dev": true,
-      "dependencies": {
-        "domelementtype": "^2.2.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-      }
-    },
-    "node_modules/domhandler/node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ]
-    },
-    "node_modules/domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "dev": true,
-      "dependencies": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "node_modules/dot-prop": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
-      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
-      "dev": true,
-      "dependencies": {
-        "is-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/duplexer3": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
-      "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
-      "dev": true
-    },
-    "node_modules/duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "node_modules/ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
-      "dev": true,
-      "dependencies": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "node_modules/ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
-      "dev": true
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.4.284",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
-      "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
-      "dev": true
-    },
-    "node_modules/elliptic": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
-      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
-    },
-    "node_modules/emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.4.0"
-      }
-    },
-    "node_modules/enhanced-resolve": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
-      "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-      "dev": true,
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/entities": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
-      "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
-      "dev": true
-    },
-    "node_modules/envify": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz",
-      "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==",
-      "dev": true,
-      "dependencies": {
-        "esprima": "^4.0.0",
-        "through": "~2.3.4"
-      },
-      "bin": {
-        "envify": "bin/envify"
-      }
-    },
-    "node_modules/envinfo": {
-      "version": "7.8.1",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
-      "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
-      "dev": true,
-      "bin": {
-        "envinfo": "dist/cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "dev": true,
-      "dependencies": {
-        "prr": "~1.0.1"
-      },
-      "bin": {
-        "errno": "cli.js"
-      }
-    },
-    "node_modules/error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
-      "dependencies": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "node_modules/es-abstract": {
-      "version": "1.20.5",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
-      "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.1.3",
-        "get-symbol-description": "^1.0.0",
-        "gopd": "^1.0.1",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.2",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trimend": "^1.0.6",
-        "string.prototype.trimstart": "^1.0.6",
-        "unbox-primitive": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/es-array-method-boxes-properly": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
-      "dev": true
-    },
-    "node_modules/es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "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/es6-promise": {
-      "version": "4.2.8",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-      "dev": true
-    },
-    "node_modules/escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/escape-goat": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
-      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
-      "dev": true
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-      "dev": true,
-      "dependencies": {
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esrecurse/node_modules/estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-      "dev": true
-    },
-    "node_modules/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
-    },
-    "node_modules/events": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
-      "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/eventsource": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz",
-      "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/evp_bytestokey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-      "dev": true,
-      "dependencies": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "node_modules/execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "dev": true,
-      "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/expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/express": {
-      "version": "4.18.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
-      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.1",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.5.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.11.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "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",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
-      "dev": true
-    },
-    "node_modules/express/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/express/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/express/node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "dev": true,
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/express/node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "dev": true
-    },
-    "node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ]
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "dev": true,
-      "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.6.0"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
-    "node_modules/fastq": {
-      "version": "1.14.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
-      "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
-      "dev": true,
-      "dependencies": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "node_modules/faye-websocket": {
-      "version": "0.11.4",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
-      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
-      "dev": true,
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/figgy-pudding": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-      "dev": true
-    },
-    "node_modules/figures": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/file-loader": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
-      "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.0.2",
-        "schema-utils": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/file-loader/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/finalhandler/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/finalhandler/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/find-cache-dir": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-      "dev": true,
-      "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/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==",
-      "dev": true
-    },
-    "node_modules/forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dev": true,
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 0.12"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
-      "dev": true,
-      "dependencies": {
-        "map-cache": "^0.2.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "node_modules/fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
-    "node_modules/fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "node_modules/function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true,
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
-      "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "dev": true,
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "dev": true,
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "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",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/glob-to-regexp": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
-      "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
-      "dev": true
-    },
-    "node_modules/global": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
-      "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
-      "dev": true,
-      "dependencies": {
-        "min-document": "^2.19.0",
-        "process": "^0.11.10"
-      }
-    },
-    "node_modules/global-dirs": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
-      "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
-      "dev": true,
-      "dependencies": {
-        "ini": "1.3.7"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby": {
-      "version": "10.0.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
-      "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
-      "dev": true,
-      "dependencies": {
-        "@types/glob": "^7.1.1",
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.0.3",
-        "glob": "^7.1.3",
-        "ignore": "^5.1.1",
-        "merge2": "^1.2.3",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/got": {
-      "version": "9.6.0",
-      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
-      "dev": true,
-      "dependencies": {
-        "@sindresorhus/is": "^0.14.0",
-        "@szmarczak/http-timer": "^1.1.2",
-        "cacheable-request": "^6.0.0",
-        "decompress-response": "^3.3.0",
-        "duplexer3": "^0.1.4",
-        "get-stream": "^4.1.0",
-        "lowercase-keys": "^1.0.1",
-        "mimic-response": "^1.0.1",
-        "p-cancelable": "^1.0.0",
-        "to-readable-stream": "^1.0.0",
-        "url-parse-lax": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
-      "dev": true
-    },
-    "node_modules/gray-matter": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
-      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
-      "dev": true,
-      "dependencies": {
-        "js-yaml": "^3.13.1",
-        "kind-of": "^6.0.2",
-        "section-matter": "^1.0.0",
-        "strip-bom-string": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/handle-thing": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
-      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
-      "dev": true
-    },
-    "node_modules/har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "deprecated": "this library is no longer supported",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values/node_modules/kind-of": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-      "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-yarn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
-      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/hash-base": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
-      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/hash-sum": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
-      "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-      "dev": true
-    },
-    "node_modules/hash.js": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
-      }
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true,
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/hex-color-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
-      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
-      "dev": true
-    },
-    "node_modules/hmac-drbg": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
-      "dev": true,
-      "dependencies": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
-    },
-    "node_modules/hogan.js": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
-      "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==",
-      "dev": true,
-      "dependencies": {
-        "mkdirp": "0.3.0",
-        "nopt": "1.0.10"
-      },
-      "bin": {
-        "hulk": "bin/hulk"
-      }
-    },
-    "node_modules/hogan.js/node_modules/mkdirp": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
-      "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==",
-      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/hosted-git-info": {
-      "version": "2.8.9",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-      "dev": true
-    },
-    "node_modules/hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-      "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
-      "dev": true
-    },
-    "node_modules/hsla-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-      "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
-      "dev": true
-    },
-    "node_modules/html-entities": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
-      "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
-      "dev": true
-    },
-    "node_modules/html-minifier": {
-      "version": "3.5.21",
-      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
-      "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
-      "dev": true,
-      "dependencies": {
-        "camel-case": "3.0.x",
-        "clean-css": "4.2.x",
-        "commander": "2.17.x",
-        "he": "1.2.x",
-        "param-case": "2.1.x",
-        "relateurl": "0.2.x",
-        "uglify-js": "3.4.x"
-      },
-      "bin": {
-        "html-minifier": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/html-tags": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
-      "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "dev": true,
-      "funding": [
-        "https://github.com/fb55/htmlparser2?sponsor=1",
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/htmlparser2/node_modules/dom-serializer": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-      "dev": true,
-      "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/htmlparser2/node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ]
-    },
-    "node_modules/htmlparser2/node_modules/domutils": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-      "dev": true,
-      "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/http-cache-semantics": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-      "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
-      "dev": true
-    },
-    "node_modules/http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
-      "dev": true
-    },
-    "node_modules/http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "dev": true,
-      "dependencies": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
-      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
-      "dev": true
-    },
-    "node_modules/http-proxy": {
-      "version": "1.18.1",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
-      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
-      "dev": true,
-      "dependencies": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": 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/http-proxy-middleware/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": 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/http-proxy-middleware/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/http-proxy-middleware/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": 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/http-proxy-middleware/node_modules/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      },
-      "engines": {
-        "node": ">=0.8",
-        "npm": ">=1.3.7"
-      }
-    },
-    "node_modules/https-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
-      "dev": true
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/icss-replace-symbols": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
-      "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==",
-      "dev": true
-    },
-    "node_modules/icss-utils": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
-      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.14"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/icss-utils/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/icss-utils/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/iferr": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
-      "dev": true
-    },
-    "node_modules/ignore": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/immediate": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
-      "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
-      "dev": true
-    },
-    "node_modules/import-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
-      "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
-      "dev": true,
-      "dependencies": {
-        "import-from": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
-      "dev": true,
-      "dependencies": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-from": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
-      "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-lazy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-      "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
-      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
-      "dev": true,
-      "dependencies": {
-        "pkg-dir": "^3.0.0",
-        "resolve-cwd": "^2.0.0"
-      },
-      "bin": {
-        "import-local-fixture": "fixtures/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
-      "dev": true
-    },
-    "node_modules/infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
-      "dev": true
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "node_modules/ini": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
-      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
-      "dev": true
-    },
-    "node_modules/internal-ip": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
-      "dev": true,
-      "dependencies": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/internal-slot": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
-      "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
-      "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/ip": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
-      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
-      "dev": true
-    },
-    "node_modules/ip-regex": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/is-absolute-url": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-      "dev": true
-    },
-    "node_modules/is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
-      "dependencies": {
-        "has-bigints": "^1.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "node_modules/is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "dev": true,
-      "dependencies": {
-        "ci-info": "^2.0.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/is-color-stop": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-      "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
-      "dev": true,
-      "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.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-data-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "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/is-descriptor/node_modules/kind-of": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-expression": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
-      "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
-      "dev": true,
-      "dependencies": {
-        "acorn": "^7.1.1",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "node_modules/is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-installed-globally": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
-      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
-      "dev": true,
-      "dependencies": {
-        "global-dirs": "^2.0.1",
-        "is-path-inside": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-npm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
-      "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-path-cwd": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-in-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
-      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
-      "dev": true,
-      "dependencies": {
-        "is-path-inside": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-in-cwd/node_modules/is-path-inside": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
-      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
-      "dev": true,
-      "dependencies": {
-        "path-is-inside": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-promise": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
-      "dev": true
-    },
-    "node_modules/is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-resolvable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
-      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
-      "dev": true
-    },
-    "node_modules/is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
-      "dev": true
-    },
-    "node_modules/is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/is-yarn-global": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
-      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
-      "dev": true
-    },
-    "node_modules/isarray": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-      "dev": true
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
-    },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
-      "dev": true
-    },
-    "node_modules/javascript-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
-      "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
-      "dev": true
-    },
-    "node_modules/js-stringify": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
-      "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==",
-      "dev": true
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
-    },
-    "node_modules/js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "dev": true,
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
-      "dev": true
-    },
-    "node_modules/jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-      "dev": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/json-buffer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
-      "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
-      "dev": true
-    },
-    "node_modules/json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
-    "node_modules/json-schema": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
-      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
-      "dev": true
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "node_modules/json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
-      "dev": true
-    },
-    "node_modules/json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
-      "dev": true
-    },
-    "node_modules/json5": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
-      "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
-      "dev": true,
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
-      "dev": true,
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsprim": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
-      "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.4.0",
-        "verror": "1.10.0"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/jstransformer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
-      "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
-      "dev": true,
-      "dependencies": {
-        "is-promise": "^2.0.0",
-        "promise": "^7.0.1"
-      }
-    },
-    "node_modules/keyv": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
-      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
-      "dev": true,
-      "dependencies": {
-        "json-buffer": "3.0.0"
-      }
-    },
-    "node_modules/killable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
-      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
-      "dev": true
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/last-call-webpack-plugin": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
-      "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.5",
-        "webpack-sources": "^1.1.0"
-      }
-    },
-    "node_modules/latest-version": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
-      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
-      "dev": true,
-      "dependencies": {
-        "package-json": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/linkify-it": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
-      "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
-      "dev": true,
-      "dependencies": {
-        "uc.micro": "^1.0.1"
-      }
-    },
-    "node_modules/load-script": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
-      "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==",
-      "dev": true
-    },
-    "node_modules/loader-runner": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/loader-utils": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
-      "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-      "dev": true,
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/loader-utils/node_modules/json5": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
-    },
-    "node_modules/lodash._reinterpolate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
-      "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
-      "dev": true
-    },
-    "node_modules/lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
-      "dev": true
-    },
-    "node_modules/lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
-      "dev": true
-    },
-    "node_modules/lodash.kebabcase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
-      "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
-      "dev": true
-    },
-    "node_modules/lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
-      "dev": true
-    },
-    "node_modules/lodash.template": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
-      "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
-      "dev": true,
-      "dependencies": {
-        "lodash._reinterpolate": "^3.0.0",
-        "lodash.templatesettings": "^4.0.0"
-      }
-    },
-    "node_modules/lodash.templatesettings": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
-      "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
-      "dev": true,
-      "dependencies": {
-        "lodash._reinterpolate": "^3.0.0"
-      }
-    },
-    "node_modules/lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
-      "dev": true
-    },
-    "node_modules/loglevel": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz",
-      "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      },
-      "funding": {
-        "type": "tidelift",
-        "url": "https://tidelift.com/funding/github/npm/loglevel"
-      }
-    },
-    "node_modules/lower-case": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
-      "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
-      "dev": true
-    },
-    "node_modules/lowercase-keys": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-      "dev": true,
-      "dependencies": {
-        "sourcemap-codec": "^1.4.8"
-      }
-    },
-    "node_modules/make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/make-dir/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
-      "dev": true,
-      "dependencies": {
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/markdown-it": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
-      "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
-      "dev": true,
-      "peer": true,
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "entities": "~2.0.0",
-        "linkify-it": "^2.0.0",
-        "mdurl": "^1.0.1",
-        "uc.micro": "^1.0.5"
-      },
-      "bin": {
-        "markdown-it": "bin/markdown-it.js"
-      }
-    },
-    "node_modules/markdown-it-anchor": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
-      "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
-      "dev": true,
-      "peerDependencies": {
-        "markdown-it": "*"
-      }
-    },
-    "node_modules/markdown-it-chain": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz",
-      "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==",
-      "dev": true,
-      "dependencies": {
-        "webpack-chain": "^4.9.0"
-      },
-      "engines": {
-        "node": ">=6.9"
-      },
-      "peerDependencies": {
-        "markdown-it": ">=5.0.0"
-      }
-    },
-    "node_modules/markdown-it-chain/node_modules/javascript-stringify": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz",
-      "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==",
-      "dev": true
-    },
-    "node_modules/markdown-it-chain/node_modules/webpack-chain": {
-      "version": "4.12.1",
-      "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz",
-      "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==",
-      "dev": true,
-      "dependencies": {
-        "deepmerge": "^1.5.2",
-        "javascript-stringify": "^1.6.0"
-      }
-    },
-    "node_modules/markdown-it-container": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz",
-      "integrity": "sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==",
-      "dev": true
-    },
-    "node_modules/markdown-it-emoji": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz",
-      "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==",
-      "dev": true
-    },
-    "node_modules/markdown-it-include": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/markdown-it-include/-/markdown-it-include-1.1.1.tgz",
-      "integrity": "sha512-jDWIHhOtiQkFIc6BqXqXK1r4LfCxKFOWtsdvwZjLw5zZaWk64n71lE5HWHtzyVvfDudYWxR+tH0hO10B2I1e3w==",
-      "dev": true,
-      "peerDependencies": {
-        "markdown-it": ">=8.4.2 <11.0.0"
-      }
-    },
-    "node_modules/markdown-it-table-of-contents": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz",
-      "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==",
-      "dev": true,
-      "engines": {
-        "node": ">6.4.0"
-      }
-    },
-    "node_modules/md5.js": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-      "dev": true,
-      "dependencies": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "node_modules/mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
-      "dev": true
-    },
-    "node_modules/mdurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
-      "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
-      "dev": true
-    },
-    "node_modules/media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
-      "dev": true,
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
-      "dev": true
-    },
-    "node_modules/merge-source-map": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
-      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
-      "dev": true,
-      "dependencies": {
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-      "dev": true,
-      "dependencies": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/miller-rabin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/mime": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-      "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dev": true,
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mimic-response": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/min-document": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
-      "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
-      "dev": true,
-      "dependencies": {
-        "dom-walk": "^0.1.0"
-      }
-    },
-    "node_modules/mini-css-extract-plugin": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz",
-      "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0",
-        "normalize-url": "^2.0.1",
-        "schema-utils": "^1.0.0",
-        "webpack-sources": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.4.0"
-      }
-    },
-    "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-      "dev": true
-    },
-    "node_modules/minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
-      "dev": true
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/mississippi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "dev": true,
-      "dependencies": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mixin-deep/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/move-concurrently": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
-      "dev": true,
-      "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/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true
-    },
-    "node_modules/multicast-dns": {
-      "version": "6.2.3",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
-      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
-      "dev": true
-    },
-    "node_modules/nan": {
-      "version": "2.17.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
-      "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "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/nanomatch/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nanomatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nanomatch/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nanomatch/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nanomatch/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/nanomatch/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
-    },
-    "node_modules/nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
-    "node_modules/no-case": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
-      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
-      "dev": true,
-      "dependencies": {
-        "lower-case": "^1.1.1"
-      }
-    },
-    "node_modules/node-forge": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
-      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/node-libs-browser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-      "dev": true,
-      "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/events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.x"
-      }
-    },
-    "node_modules/node-libs-browser/node_modules/punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
-      "dev": true
-    },
-    "node_modules/node-releases": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
-      "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
-      "dev": true
-    },
-    "node_modules/nopt": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
-      "dev": true,
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "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-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-range": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-url": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
-      "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
-      "dev": true,
-      "dependencies": {
-        "prepend-http": "^2.0.0",
-        "query-string": "^5.0.1",
-        "sort-keys": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/nprogress": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
-      "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
-      "dev": true
-    },
-    "node_modules/nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "node_modules/num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
-      "dev": true
-    },
-    "node_modules/oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
-      "dev": true,
-      "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/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-      "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.getownpropertydescriptors": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz",
-      "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==",
-      "dev": true,
-      "dependencies": {
-        "array.prototype.reduce": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
-      "dev": true
-    },
-    "node_modules/on-finished": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
-      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
-      "dev": true,
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/opencollective-postinstall": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
-      "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
-      "dev": true,
-      "bin": {
-        "opencollective-postinstall": "index.js"
-      }
-    },
-    "node_modules/opn": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-      "dev": true,
-      "dependencies": {
-        "is-wsl": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/optimize-css-assets-webpack-plugin": {
-      "version": "5.0.8",
-      "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz",
-      "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==",
-      "dev": true,
-      "dependencies": {
-        "cssnano": "^4.1.10",
-        "last-call-webpack-plugin": "^3.0.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/os-browserify": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
-      "dev": true
-    },
-    "node_modules/p-cancelable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-map": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-retry": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
-      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
-      "dev": true,
-      "dependencies": {
-        "retry": "^0.12.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/package-json": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
-      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
-      "dev": true,
-      "dependencies": {
-        "got": "^9.6.0",
-        "registry-auth-token": "^4.0.0",
-        "registry-url": "^5.0.0",
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/package-json/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/pako": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-      "dev": true
-    },
-    "node_modules/parallel-transform": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-      "dev": true,
-      "dependencies": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "node_modules/param-case": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
-      "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
-      "dev": true,
-      "dependencies": {
-        "no-case": "^2.2.0"
-      }
-    },
-    "node_modules/parse-asn1": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
-      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
-      "dev": true,
-      "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": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
-      "dev": true,
-      "dependencies": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-browserify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-      "dev": true
-    },
-    "node_modules/path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
-      "dev": true
-    },
-    "node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
-      "dev": true
-    },
-    "node_modules/path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
-      "dev": true
-    },
-    "node_modules/path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pbkdf2": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
-      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
-      "dev": true
-    },
-    "node_modules/picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
-      "dev": true,
-      "dependencies": {
-        "pinkie": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/portfinder": {
-      "version": "1.0.32",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
-      "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
-      "dev": true,
-      "dependencies": {
-        "async": "^2.6.4",
-        "debug": "^3.2.7",
-        "mkdirp": "^0.5.6"
-      },
-      "engines": {
-        "node": ">= 0.12.0"
-      }
-    },
-    "node_modules/posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.4.20",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
-      "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        }
-      ],
-      "dependencies": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/postcss-calc": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz",
-      "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
-      }
-    },
-    "node_modules/postcss-calc/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-calc/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-colormin": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
-      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-colormin/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-convert-values": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
-      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-convert-values/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-convert-values/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-comments": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
-      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-comments/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-comments/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
-      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-duplicates/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-duplicates/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-discard-empty": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
-      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-empty/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-empty/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-discard-overridden": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
-      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-overridden/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-overridden/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-load-config": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
-      "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
-      "dev": true,
-      "dependencies": {
-        "cosmiconfig": "^5.0.0",
-        "import-cwd": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
-      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-loader/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-loader/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/postcss-merge-longhand": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
-      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-merge-longhand/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-merge-rules": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
-      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-merge-rules/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
-      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-minify-font-values/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-font-values/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-gradients": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
-      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-gradients/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-params": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
-      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-params/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-selectors": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
-      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-selectors/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
-      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.5"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-modules-extract-imports/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-modules-extract-imports/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz",
-      "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0",
-        "postcss-value-parser": "^3.3.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-modules-local-by-default/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-modules-scope": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
-      "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-modules-scope/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-modules-scope/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-modules-values": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz",
-      "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==",
-      "dev": true,
-      "dependencies": {
-        "icss-replace-symbols": "^1.1.0",
-        "postcss": "^7.0.6"
-      }
-    },
-    "node_modules/postcss-modules-values/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-modules-values/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-charset": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
-      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-charset/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-charset/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
-      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-display-values/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-positions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
-      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-positions/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
-      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-repeat-style/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-string": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
-      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-string/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
-      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-timing-functions/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
-      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-unicode/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-url": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
-      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
-      "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/postcss-normalize-url/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-url/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
-      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-whitespace/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-whitespace/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-ordered-values": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
-      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-ordered-values/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-reduce-initial": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
-      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
-      "dev": true,
-      "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-initial/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-reduce-initial/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-reduce-transforms": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
-      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-reduce-transforms/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-safe-parser": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
-      "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.26"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/postcss-safe-parser/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-safe-parser/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
-      "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
-      "dev": true,
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-svgo": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
-      "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-svgo/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-unique-selectors": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
-      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
-      "dev": true,
-      "dependencies": {
-        "alphanum-sort": "^1.0.0",
-        "postcss": "^7.0.0",
-        "uniqs": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-unique-selectors/node_modules/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/postcss-unique-selectors/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "dev": true
-    },
-    "node_modules/prepend-http": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-      "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/prettier": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
-      "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
-      "dev": true,
-      "bin": {
-        "prettier": "bin-prettier.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pretty-error": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz",
-      "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.20",
-        "renderkid": "^2.0.4"
-      }
-    },
-    "node_modules/pretty-time": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
-      "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/prismjs": {
-      "version": "1.29.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
-      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "node_modules/promise": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-      "dev": true,
-      "dependencies": {
-        "asap": "~2.0.3"
-      }
-    },
-    "node_modules/promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
-      "dev": true
-    },
-    "node_modules/proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "dev": true,
-      "dependencies": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
-      "dev": true
-    },
-    "node_modules/pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
-      "dev": true
-    },
-    "node_modules/psl": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
-      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
-      "dev": true
-    },
-    "node_modules/public-encrypt": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-      "dev": true
-    },
-    "node_modules/pug": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz",
-      "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==",
-      "dev": true,
-      "dependencies": {
-        "pug-code-gen": "^3.0.2",
-        "pug-filters": "^4.0.0",
-        "pug-lexer": "^5.0.1",
-        "pug-linker": "^4.0.0",
-        "pug-load": "^3.0.0",
-        "pug-parser": "^6.0.0",
-        "pug-runtime": "^3.0.1",
-        "pug-strip-comments": "^2.0.0"
-      }
-    },
-    "node_modules/pug-attrs": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
-      "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
-      "dev": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "js-stringify": "^1.0.2",
-        "pug-runtime": "^3.0.0"
-      }
-    },
-    "node_modules/pug-code-gen": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz",
-      "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==",
-      "dev": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "doctypes": "^1.1.0",
-        "js-stringify": "^1.0.2",
-        "pug-attrs": "^3.0.0",
-        "pug-error": "^2.0.0",
-        "pug-runtime": "^3.0.0",
-        "void-elements": "^3.1.0",
-        "with": "^7.0.0"
-      }
-    },
-    "node_modules/pug-error": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
-      "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==",
-      "dev": true
-    },
-    "node_modules/pug-filters": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
-      "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
-      "dev": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "jstransformer": "1.0.0",
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0",
-        "resolve": "^1.15.1"
-      }
-    },
-    "node_modules/pug-lexer": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
-      "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
-      "dev": true,
-      "dependencies": {
-        "character-parser": "^2.2.0",
-        "is-expression": "^4.0.0",
-        "pug-error": "^2.0.0"
-      }
-    },
-    "node_modules/pug-linker": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
-      "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
-      "dev": true,
-      "dependencies": {
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "node_modules/pug-load": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
-      "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
-      "dev": true,
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "node_modules/pug-parser": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
-      "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
-      "dev": true,
-      "dependencies": {
-        "pug-error": "^2.0.0",
-        "token-stream": "1.0.0"
-      }
-    },
-    "node_modules/pug-runtime": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
-      "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
-      "dev": true
-    },
-    "node_modules/pug-strip-comments": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
-      "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
-      "dev": true,
-      "dependencies": {
-        "pug-error": "^2.0.0"
-      }
-    },
-    "node_modules/pug-walk": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
-      "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
-      "dev": true
-    },
-    "node_modules/pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
-      "dev": true,
-      "dependencies": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      }
-    },
-    "node_modules/pumpify/node_modules/pump": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pupa": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
-      "dev": true,
-      "dependencies": {
-        "escape-goat": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6.0",
-        "teleport": ">=0.2.0"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
-      "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/query-string": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
-      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
-      "dev": true,
-      "dependencies": {
-        "decode-uri-component": "^0.2.0",
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
-      "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/randomfill": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
-      "dev": true,
-      "dependencies": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-      "dev": true,
-      "dependencies": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
-      },
-      "bin": {
-        "rc": "cli.js"
-      }
-    },
-    "node_modules/read-pkg": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
-      "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==",
-      "dev": true,
-      "dependencies": {
-        "normalize-package-data": "^2.3.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-      "dev": true
-    },
-    "node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/recast": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz",
-      "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==",
-      "dev": true,
-      "dependencies": {
-        "ast-types": "0.15.2",
-        "esprima": "~4.0.0",
-        "source-map": "~0.6.1",
-        "tslib": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/recast/node_modules/ast-types": {
-      "version": "0.15.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
-      "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/recast/node_modules/tslib": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-      "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
-      "dev": true
-    },
-    "node_modules/reduce": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz",
-      "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==",
-      "dev": true,
-      "dependencies": {
-        "object-keys": "^1.1.0"
-      }
-    },
-    "node_modules/regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
-      "dev": true
-    },
-    "node_modules/regenerate-unicode-properties": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
-      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
-      "dev": true,
-      "dependencies": {
-        "regenerate": "^1.4.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.13.11",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
-      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
-      "dev": true
-    },
-    "node_modules/regenerator-transform": {
-      "version": "0.15.1",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
-      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "node_modules/regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/regex-not/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/regex-not/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/regexpu-core": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
-      "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
-      "dev": true,
-      "dependencies": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.1.0",
-        "regjsgen": "^0.7.1",
-        "regjsparser": "^0.9.1",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/registry-auth-token": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz",
-      "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==",
-      "dev": true,
-      "dependencies": {
-        "rc": "1.2.8"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/registry-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
-      "dev": true,
-      "dependencies": {
-        "rc": "^1.2.8"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/regjsgen": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
-      "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
-      "dev": true
-    },
-    "node_modules/regjsparser": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
-      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
-      "dev": true,
-      "dependencies": {
-        "jsesc": "~0.5.0"
-      },
-      "bin": {
-        "regjsparser": "bin/parser"
-      }
-    },
-    "node_modules/regjsparser/node_modules/jsesc": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
-      "dev": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      }
-    },
-    "node_modules/relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
-      "dev": true
-    },
-    "node_modules/renderkid": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz",
-      "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/renderkid/node_modules/css-select": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.0.1",
-        "domhandler": "^4.3.1",
-        "domutils": "^2.8.0",
-        "nth-check": "^2.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/renderkid/node_modules/css-what": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
-      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/renderkid/node_modules/dom-serializer": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-      "dev": true,
-      "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/renderkid/node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ]
-    },
-    "node_modules/renderkid/node_modules/domutils": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-      "dev": true,
-      "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/renderkid/node_modules/nth-check": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
-      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/repeat-element": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
-      "dev": true,
-      "dependencies": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-      "dev": true
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "dev": true
-    },
-    "node_modules/resolve": {
-      "version": "1.22.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.9.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-cwd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
-      "deprecated": "https://github.com/lydell/resolve-url#deprecated",
-      "dev": true
-    },
-    "node_modules/responselike": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-      "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
-      "dev": true,
-      "dependencies": {
-        "lowercase-keys": "^1.0.0"
-      }
-    },
-    "node_modules/ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true,
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rgb-regex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-      "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
-      "dev": true
-    },
-    "node_modules/rgba-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-      "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
-      "dev": true
-    },
-    "node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/ripemd160": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-      "dev": true,
-      "dependencies": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/run-queue": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
-      "dev": true,
-      "dependencies": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "node_modules/rxjs": {
-      "version": "6.6.7",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "node_modules/safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
-      "dev": true,
-      "dependencies": {
-        "ret": "~0.1.10"
-      }
-    },
-    "node_modules/safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "node_modules/sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "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/section-matter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
-      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
-      "dev": true
-    },
-    "node_modules/selfsigned": {
-      "version": "1.10.14",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
-      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
-      "dev": true,
-      "dependencies": {
-        "node-forge": "^0.10.0"
-      }
-    },
-    "node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/semver-diff": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/semver-diff/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/send/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/send/node_modules/debug/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/send/node_modules/mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "dev": true,
-      "dependencies": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
-      "dev": true
-    },
-    "node_modules/set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "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/setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
-      "dev": true
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-      "dev": true
-    },
-    "node_modules/sha.js": {
-      "version": "2.4.11",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      },
-      "bin": {
-        "sha.js": "bin.js"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "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.7",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-      "dev": true
-    },
-    "node_modules/simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
-      "dev": true,
-      "dependencies": {
-        "is-arrayish": "^0.3.1"
-      }
-    },
-    "node_modules/simple-swizzle/node_modules/is-arrayish": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-      "dev": true
-    },
-    "node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/smoothscroll-polyfill": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz",
-      "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==",
-      "dev": true
-    },
-    "node_modules/snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.2.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-util/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/snapdragon/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
-      "dev": true,
-      "dependencies": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "node_modules/sockjs-client": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
-      "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^3.2.5",
-        "eventsource": "^1.0.7",
-        "faye-websocket": "~0.11.1",
-        "inherits": "^2.0.3",
-        "json3": "^3.3.2",
-        "url-parse": "^1.4.3"
-      }
-    },
-    "node_modules/sockjs/node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "dev": true,
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/sort-keys": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
-      "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-      "dev": true
-    },
-    "node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-      "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
-      "dev": true,
-      "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/source-map-support": {
-      "version": "0.5.21",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "dev": true,
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/source-map-url": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
-      "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
-      "dev": true
-    },
-    "node_modules/sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "deprecated": "Please use @jridgewell/sourcemap-codec instead",
-      "dev": true
-    },
-    "node_modules/spawn-command": {
-      "version": "0.0.2-1",
-      "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
-      "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
-      "dev": true
-    },
-    "node_modules/spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
-      "dependencies": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-exceptions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
-    },
-    "node_modules/spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
-      "dependencies": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-license-ids": {
-      "version": "3.0.12",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
-      "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
-      "dev": true
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
-      "dev": true,
-      "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/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/spdy-transport/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/spdy-transport/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/spdy/node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/spdy/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/split-string/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/split-string/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
-      "dev": true
-    },
-    "node_modules/sshpk": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
-      "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-      "dev": true,
-      "dependencies": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      },
-      "bin": {
-        "sshpk-conv": "bin/sshpk-conv",
-        "sshpk-sign": "bin/sshpk-sign",
-        "sshpk-verify": "bin/sshpk-verify"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ssri": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-      "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
-      "dev": true
-    },
-    "node_modules/stack-utils": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
-      "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stack-utils/node_modules/escape-string-regexp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
-      "dev": true,
-      "dependencies": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/std-env": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz",
-      "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==",
-      "dev": true,
-      "dependencies": {
-        "ci-info": "^3.1.1"
-      }
-    },
-    "node_modules/std-env/node_modules/ci-info": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz",
-      "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stream-browserify": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "node_modules/stream-each": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "node_modules/stream-http": {
-      "version": "2.8.3",
-      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
-      "dev": true
-    },
-    "node_modules/strict-uri-encode": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-bom-string": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
-      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/stylehacks": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
-      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
-      "dev": true,
-      "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/picocolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-      "dev": true
-    },
-    "node_modules/stylehacks/node_modules/postcss": {
-      "version": "7.0.39",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-      "dev": true,
-      "dependencies": {
-        "picocolors": "^0.2.1",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
-      }
-    },
-    "node_modules/stylehacks/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stylus": {
-      "version": "0.54.8",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
-      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
-      "dev": true,
-      "dependencies": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.3.0",
-        "source-map": "^0.7.3"
-      },
-      "bin": {
-        "stylus": "bin/stylus"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/stylus-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
-      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.0.2",
-        "lodash.clonedeep": "^4.5.0",
-        "when": "~3.6.x"
-      },
-      "peerDependencies": {
-        "stylus": ">=0.52.4"
-      }
-    },
-    "node_modules/stylus/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/stylus/node_modules/mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-      "dev": true,
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/stylus/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "dev": true
-    },
-    "node_modules/stylus/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/stylus/node_modules/source-map": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/svg-tags": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
-      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
-      "dev": true
-    },
-    "node_modules/svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-      "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
-      "dev": true,
-      "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/tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/term-size": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/terser": {
-      "version": "4.8.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
-      "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
-      "dev": true,
-      "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": "1.4.5",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-      "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
-      "dev": true,
-      "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/terser-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/terser/node_modules/commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
-    },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "node_modules/through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
-      "dev": true
-    },
-    "node_modules/through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "dev": true
-    },
-    "node_modules/timers-browserify": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
-      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
-      "dev": true,
-      "dependencies": {
-        "setimmediate": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
-      "dev": true
-    },
-    "node_modules/to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
-      "dev": true
-    },
-    "node_modules/to-factory": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz",
-      "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==",
-      "dev": true
-    },
-    "node_modules/to-fast-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-object-path/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-readable-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/to-regex/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/to-regex/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/token-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
-      "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==",
-      "dev": true
-    },
-    "node_modules/toml": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
-      "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
-      "dev": true
-    },
-    "node_modules/toposort": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
-      "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==",
-      "dev": true
-    },
-    "node_modules/tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-      "dev": true,
-      "dependencies": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/tree-kill": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
-      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
-      "dev": true,
-      "bin": {
-        "tree-kill": "cli.js"
-      }
-    },
-    "node_modules/ts-map": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz",
-      "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==",
-      "dev": true
-    },
-    "node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
-    "node_modules/tty-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
-      "dev": true
-    },
-    "node_modules/tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
-      "dev": true
-    },
-    "node_modules/type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "dev": true,
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
-      "dev": true
-    },
-    "node_modules/typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dev": true,
-      "dependencies": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "node_modules/uc.micro": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
-      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
-      "dev": true
-    },
-    "node_modules/uglify-js": {
-      "version": "3.4.10",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
-      "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
-      "dev": true,
-      "dependencies": {
-        "commander": "~2.19.0",
-        "source-map": "~0.6.1"
-      },
-      "bin": {
-        "uglifyjs": "bin/uglifyjs"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/uglify-js/node_modules/commander": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
-      "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
-      "dev": true
-    },
-    "node_modules/unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
-      "dev": true,
-      "dependencies": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-value-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-property-aliases-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "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/uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
-      "dev": true
-    },
-    "node_modules/uniqs": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
-      "dev": true
-    },
-    "node_modules/unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "dev": true,
-      "dependencies": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "dev": true,
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "node_modules/unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dev": true,
-      "dependencies": {
-        "crypto-random-string": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
-      "dev": true
-    },
-    "node_modules/unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-      "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-      "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
-      "dev": true,
-      "dependencies": {
-        "isarray": "1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/has-values": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-      "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-      "dev": true
-    },
-    "node_modules/upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4",
-        "yarn": "*"
-      }
-    },
-    "node_modules/update-browserslist-db": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
-      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        }
-      ],
-      "dependencies": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0"
-      },
-      "bin": {
-        "browserslist-lint": "cli.js"
-      },
-      "peerDependencies": {
-        "browserslist": ">= 4.21.0"
-      }
-    },
-    "node_modules/update-notifier": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
-      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
-      "dev": true,
-      "dependencies": {
-        "boxen": "^4.2.0",
-        "chalk": "^3.0.0",
-        "configstore": "^5.0.1",
-        "has-yarn": "^2.1.0",
-        "import-lazy": "^2.1.0",
-        "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
-        "is-npm": "^4.0.0",
-        "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver-diff": "^3.1.1",
-        "xdg-basedir": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/yeoman/update-notifier?sponsor=1"
-      }
-    },
-    "node_modules/update-notifier/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/update-notifier/node_modules/chalk": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/update-notifier/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/update-notifier/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/update-notifier/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/update-notifier/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/upper-case": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
-      "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
-      "dev": true
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
-      "deprecated": "Please see https://github.com/lydell/urix#deprecated",
-      "dev": true
-    },
-    "node_modules/url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
-      "dev": true,
-      "dependencies": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      }
-    },
-    "node_modules/url-loader": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
-      "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0",
-        "mime": "^2.0.3",
-        "schema-utils": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/url-loader/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/url-parse": {
-      "version": "1.5.10",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
-      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-      "dev": true,
-      "dependencies": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "node_modules/url-parse-lax": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-      "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
-      "dev": true,
-      "dependencies": {
-        "prepend-http": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/url/node_modules/punycode": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-      "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
-      "dev": true
-    },
-    "node_modules/use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/util": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "2.0.3"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-      "dev": true
-    },
-    "node_modules/util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "dev": true,
-      "dependencies": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/util/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-      "dev": true
-    },
-    "node_modules/utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
-      "dev": true
-    },
-    "node_modules/utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
-      "dev": true,
-      "bin": {
-        "uuid": "bin/uuid"
-      }
-    },
-    "node_modules/validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "node_modules/vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/vendors": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
-      "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
-      "dev": true,
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "node_modules/verror/node_modules/core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
-      "dev": true
-    },
-    "node_modules/vm-browserify": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-      "dev": true
-    },
-    "node_modules/void-elements": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
-      "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/vue": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz",
-      "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==",
-      "dependencies": {
-        "@vue/compiler-sfc": "2.7.14",
-        "csstype": "^3.1.0"
-      }
-    },
-    "node_modules/vue-docgen-api": {
-      "version": "4.56.2",
-      "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.56.2.tgz",
-      "integrity": "sha512-7V36UExnHwAKq0KmB7rtk5ONuHzsATkhDZwCZ+aEudsnaNmMUTc+9g5MZgUXTi8V76KNE4gMrWd3MuESbaUItw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.13.12",
-        "@babel/types": "^7.18.8",
-        "@vue/compiler-dom": "^3.2.0",
-        "@vue/compiler-sfc": "^3.2.0",
-        "ast-types": "0.14.2",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.5",
-        "pug": "^3.0.2",
-        "recast": "0.21.5",
-        "ts-map": "^1.0.3",
-        "vue-inbrowser-compiler-independent-utils": "^4.56.2"
-      }
-    },
-    "node_modules/vue-docgen-api/node_modules/@vue/compiler-sfc": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
-      "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.45",
-        "@vue/compiler-dom": "3.2.45",
-        "@vue/compiler-ssr": "3.2.45",
-        "@vue/reactivity-transform": "3.2.45",
-        "@vue/shared": "3.2.45",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7",
-        "postcss": "^8.1.10",
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/vue-docgen-cli": {
-      "version": "4.34.4",
-      "resolved": "https://registry.npmjs.org/vue-docgen-cli/-/vue-docgen-cli-4.34.4.tgz",
-      "integrity": "sha512-G3+vwUX0v6IwHlVmp2fpmWnXnVHRHM+wbgEnpTslZTdSJgaidofcPZ5PHo1gQuDmGb+inCUCNJsfbgfEkSnVKg==",
-      "dev": true,
-      "dependencies": {
-        "chokidar": "^3.4.3",
-        "globby": "^10.0.1",
-        "lodash.memoize": "4.1.2",
-        "minimist": "^1.2.0",
-        "mkdirp": "^0.5.1",
-        "prettier": "^1.18.2",
-        "vue-docgen-api": "^4.34.2"
-      },
-      "bin": {
-        "vue-docgen": "lib/bin.js"
-      }
-    },
-    "node_modules/vue-hot-reload-api": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
-      "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
-      "dev": true
-    },
-    "node_modules/vue-inbrowser-compiler-independent-utils": {
-      "version": "4.56.2",
-      "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz",
-      "integrity": "sha512-szE2vZDSkZlItq+K4MevgvCGKt5IzM6OkIjyCuj/09ty2akixeQGNFRXyDELMdmVVzmN+9nJn02YKnoPkhXHwA==",
-      "dev": true,
-      "peerDependencies": {
-        "vue": ">=2"
-      }
-    },
-    "node_modules/vue-loader": {
-      "version": "15.10.1",
-      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
-      "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
-      "dev": true,
-      "dependencies": {
-        "@vue/component-compiler-utils": "^3.1.0",
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.1.0",
-        "vue-hot-reload-api": "^2.3.0",
-        "vue-style-loader": "^4.1.0"
-      },
-      "peerDependencies": {
-        "css-loader": "*",
-        "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
-      },
-      "peerDependenciesMeta": {
-        "cache-loader": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vue-router": {
-      "version": "3.6.5",
-      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz",
-      "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==",
-      "dev": true
-    },
-    "node_modules/vue-server-renderer": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz",
-      "integrity": "sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^4.1.2",
-        "hash-sum": "^2.0.0",
-        "he": "^1.2.0",
-        "lodash.template": "^4.5.0",
-        "lodash.uniq": "^4.5.0",
-        "resolve": "^1.22.0",
-        "serialize-javascript": "^6.0.0",
-        "source-map": "0.5.6"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
-      "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/vue-server-renderer/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/vue-server-renderer/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/hash-sum": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
-      "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
-      "dev": true
-    },
-    "node_modules/vue-server-renderer/node_modules/serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/source-map": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-      "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/vue-server-renderer/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/vue-style-loader": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
-      "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==",
-      "dev": true,
-      "dependencies": {
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.0.2"
-      }
-    },
-    "node_modules/vue-telescope-expo": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/vue-telescope-expo/-/vue-telescope-expo-1.0.1.tgz",
-      "integrity": "sha512-p70ooNnAGHaEYysJH+Gh+Ig8dIF9nHcKRCzYc9eJ1nVCJPehUuMq6lOq3dyBawr3vMDsDNyVVxYxH5RK0waA7Q==",
-      "peerDependencies": {
-        "vue": "~2"
-      }
-    },
-    "node_modules/vue-template-compiler": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
-      "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
-      "dev": true,
-      "dependencies": {
-        "de-indent": "^1.0.2",
-        "he": "^1.2.0"
-      }
-    },
-    "node_modules/vue-template-es2015-compiler": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
-      "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
-      "dev": true
-    },
-    "node_modules/vuepress": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-1.5.2.tgz",
-      "integrity": "sha512-buscwFfIqvCcUAaRdbBWENmCSBZzr510fch1BhQZwVaQy28mF8H6Mvb+UDdwHQ7jon0d9qauXs9M0k4XHIWviw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "dependencies": {
-        "@vuepress/core": "1.5.2",
-        "@vuepress/theme-default": "1.5.2",
-        "cac": "^6.5.6",
-        "envinfo": "^7.2.0",
-        "opencollective-postinstall": "^2.0.2",
-        "update-notifier": "^4.0.0"
-      },
-      "bin": {
-        "vuepress": "cli.js"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==",
-      "dev": true,
-      "dependencies": {
-        "html-minifier": "^3.2.3",
-        "loader-utils": "^0.2.16",
-        "lodash": "^4.17.3",
-        "pretty-error": "^2.0.2",
-        "tapable": "^1.0.0",
-        "toposort": "^1.0.0",
-        "util.promisify": "1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9"
-      },
-      "peerDependencies": {
-        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin/node_modules/big.js": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
-      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin/node_modules/emojis-list": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-      "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin/node_modules/json5": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-      "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
-      "dev": true,
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin/node_modules/loader-utils": {
-      "version": "0.2.17",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-      "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==",
-      "dev": true,
-      "dependencies": {
-        "big.js": "^3.1.3",
-        "emojis-list": "^2.0.0",
-        "json5": "^0.5.0",
-        "object-assign": "^4.0.1"
-      }
-    },
-    "node_modules/vuepress-html-webpack-plugin/node_modules/util.promisify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
-      "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
-      "dev": true,
-      "dependencies": {
-        "define-properties": "^1.1.2",
-        "object.getownpropertydescriptors": "^2.0.3"
-      }
-    },
-    "node_modules/vuepress-plugin-container": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz",
-      "integrity": "sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==",
-      "dev": true,
-      "dependencies": {
-        "@vuepress/shared-utils": "^1.2.0",
-        "markdown-it-container": "^2.0.0"
-      }
-    },
-    "node_modules/vuepress-plugin-demo-block": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-demo-block/-/vuepress-plugin-demo-block-0.7.2.tgz",
-      "integrity": "sha512-0k7z7bTjXoXgdAMVFIVn3RFSQpKOM0yvD0hf/CA0gMCLBih77mCALtEpH9b+bEvijHmLLIq+BUtS2TQHXpkbNA==",
-      "dev": true
-    },
-    "node_modules/vuepress-plugin-smooth-scroll": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz",
-      "integrity": "sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==",
-      "dev": true,
-      "dependencies": {
-        "smoothscroll-polyfill": "^0.4.3"
-      }
-    },
-    "node_modules/watchpack": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-      "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "chokidar": "^2.1.8"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "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/chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
-      "dev": true,
-      "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/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": true,
-      "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/fsevents": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "optional": true,
-      "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/watchpack-chokidar2/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": true,
-      "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/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "dev": true,
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/webpack": {
-      "version": "4.46.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
-      "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
-      "dev": true,
-      "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.5.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-chain": {
-      "version": "6.5.1",
-      "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
-      "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
-      "dev": true,
-      "dependencies": {
-        "deepmerge": "^1.5.2",
-        "javascript-stringify": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-dev-middleware": {
-      "version": "3.7.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
-      "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
-      "dev": true,
-      "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-server": {
-      "version": "3.11.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
-      "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-html-community": "0.0.8",
-        "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",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": 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/webpack-dev-server/node_modules/chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
-      "dev": 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/webpack-dev-server/node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/eventsource": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
-      "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12.0.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": 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/webpack-dev-server/node_modules/fsevents": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/webpack-dev-server/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": 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/webpack-dev-server/node_modules/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-      "dev": true
-    },
-    "node_modules/webpack-dev-server/node_modules/readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "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/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/sockjs-client": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
-      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^3.2.7",
-        "eventsource": "^2.0.2",
-        "faye-websocket": "^0.11.4",
-        "inherits": "^2.0.4",
-        "url-parse": "^1.5.10"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://tidelift.com/funding/github/npm/sockjs-client"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/sockjs-client/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-log": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/webpack-merge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
-      "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.15"
-      }
-    },
-    "node_modules/webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-      "dev": true,
-      "dependencies": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      }
-    },
-    "node_modules/webpack/node_modules/acorn": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": 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/webpack/node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-      "dev": 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/webpack/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "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/webpack/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": 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/webpack/node_modules/micromatch/node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/webpack/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpackbar": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-3.2.0.tgz",
-      "integrity": "sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^4.1.0",
-        "chalk": "^2.4.1",
-        "consola": "^2.6.0",
-        "figures": "^3.0.0",
-        "pretty-time": "^1.1.0",
-        "std-env": "^2.2.1",
-        "text-table": "^0.2.0",
-        "wrap-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/when": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
-      "dev": true
-    },
-    "node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "node_modules/which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
-      "dev": true
-    },
-    "node_modules/widest-line": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
-      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/with": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
-      "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/parser": "^7.9.6",
-        "@babel/types": "^7.9.6",
-        "assert-never": "^1.2.1",
-        "babel-walk": "3.0.0-canary-5"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/worker-farm": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
-      "dev": true,
-      "dependencies": {
-        "errno": "~0.1.7"
-      }
-    },
-    "node_modules/wrap-ansi": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^3.2.0",
-        "string-width": "^3.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/ansi-regex": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-      "dev": true
-    },
-    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/string-width": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^7.0.1",
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
-    },
-    "node_modules/write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "dev": true,
-      "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": "6.2.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
-      "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
-      "dev": true,
-      "dependencies": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "node_modules/xdg-basedir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
-      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4"
-      }
-    },
-    "node_modules/y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-      "dev": true
-    },
-    "node_modules/yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
-      "dev": true
-    },
-    "node_modules/yargs": {
-      "version": "13.3.2",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
-      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
-      "dev": true,
-      "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/yargs-parser": {
-      "version": "13.1.2",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    },
-    "node_modules/yargs-parser/node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/ansi-regex": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-      "dev": true
-    },
-    "node_modules/yargs/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yargs/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yargs/node_modules/string-width": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^7.0.1",
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/zepto": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz",
-      "integrity": "sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==",
-      "dev": true
-    }
-  },
-  "dependencies": {
-    "@ampproject/remapping": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
-      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/gen-mapping": "^0.1.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@babel/code-frame": {
-      "version": "7.22.13",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
-      "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
-      "dev": true,
-      "requires": {
-        "@babel/highlight": "^7.22.13",
-        "chalk": "^2.4.2"
-      }
-    },
-    "@babel/compat-data": {
-      "version": "7.20.10",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
-      "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
-      "dev": true
-    },
-    "@babel/core": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
-      "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
-      "dev": true,
-      "requires": {
-        "@ampproject/remapping": "^2.1.0",
-        "@babel/code-frame": "^7.18.6",
-        "@babel/generator": "^7.20.7",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-module-transforms": "^7.20.7",
-        "@babel/helpers": "^7.20.7",
-        "@babel/parser": "^7.20.7",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/generator": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
-      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.23.0",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "@jridgewell/trace-mapping": "^0.3.17",
-        "jsesc": "^2.5.1"
-      },
-      "dependencies": {
-        "@jridgewell/gen-mapping": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-          "dev": true,
-          "requires": {
-            "@jridgewell/set-array": "^1.0.1",
-            "@jridgewell/sourcemap-codec": "^1.4.10",
-            "@jridgewell/trace-mapping": "^0.3.9"
-          }
-        }
-      }
-    },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
-      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
-      "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.18.6",
-        "@babel/types": "^7.18.9"
-      }
-    },
-    "@babel/helper-compilation-targets": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
-      "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.20.5",
-        "@babel/helper-validator-option": "^7.18.6",
-        "browserslist": "^4.21.3",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-          "dev": true,
-          "requires": {
-            "yallist": "^3.0.2"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/helper-create-class-features-plugin": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz",
-      "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-member-expression-to-functions": "^7.20.7",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz",
-      "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "regexpu-core": "^5.2.1"
-      }
-    },
-    "@babel/helper-define-polyfill-provider": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
-      "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.17.7",
-        "@babel/helper-plugin-utils": "^7.16.7",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2",
-        "semver": "^6.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/helper-environment-visitor": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
-      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
-      "dev": true
-    },
-    "@babel/helper-explode-assignable-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
-      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-function-name": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
-      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
-      "dev": true,
-      "requires": {
-        "@babel/template": "^7.22.15",
-        "@babel/types": "^7.23.0"
-      }
-    },
-    "@babel/helper-hoist-variables": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
-      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-member-expression-to-functions": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz",
-      "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.20.7"
-      }
-    },
-    "@babel/helper-module-imports": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
-      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-module-transforms": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
-      "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-simple-access": "^7.20.2",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/helper-validator-identifier": "^7.19.1",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.10",
-        "@babel/types": "^7.20.7"
-      }
-    },
-    "@babel/helper-optimise-call-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
-      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.18.6"
-      }
-    },
-    "@babel/helper-plugin-utils": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
-      "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
-      "dev": true
-    },
-    "@babel/helper-remap-async-to-generator": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
-      "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-wrap-function": "^7.18.9",
-        "@babel/types": "^7.18.9"
-      }
-    },
-    "@babel/helper-replace-supers": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
-      "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-member-expression-to-functions": "^7.20.7",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7"
-      }
-    },
-    "@babel/helper-simple-access": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
-      "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.20.2"
-      }
-    },
-    "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
-      "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.20.0"
-      }
-    },
-    "@babel/helper-split-export-declaration": {
-      "version": "7.22.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
-      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
-      "dev": true
-    },
-    "@babel/helper-validator-identifier": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
-      "dev": true
-    },
-    "@babel/helper-validator-option": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
-      "dev": true
-    },
-    "@babel/helper-wrap-function": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
-      "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/template": "^7.18.10",
-        "@babel/traverse": "^7.20.5",
-        "@babel/types": "^7.20.5"
-      }
-    },
-    "@babel/helpers": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
-      "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
-      "dev": true,
-      "requires": {
-        "@babel/template": "^7.20.7",
-        "@babel/traverse": "^7.20.7",
-        "@babel/types": "^7.20.7"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
-      "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@babel/parser": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
-    },
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
-      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
-      "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
-        "@babel/plugin-proposal-optional-chaining": "^7.20.7"
-      }
-    },
-    "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
-      "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-remap-async-to-generator": "^7.18.9",
-        "@babel/plugin-syntax-async-generators": "^7.8.4"
-      }
-    },
-    "@babel/plugin-proposal-class-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
-      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-proposal-class-static-block": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz",
-      "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-decorators": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz",
-      "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "@babel/plugin-syntax-decorators": "^7.19.0"
-      }
-    },
-    "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
-      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-export-namespace-from": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
-      "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9",
-        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-json-strings": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
-      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-json-strings": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-logical-assignment-operators": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
-      "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
-      }
-    },
-    "@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
-      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-numeric-separator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
-      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
-      }
-    },
-    "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
-      "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.20.5",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.20.7"
-      }
-    },
-    "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
-      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz",
-      "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      }
-    },
-    "@babel/plugin-proposal-private-methods": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
-      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz",
-      "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-create-class-features-plugin": "^7.20.5",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
-      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-syntax-async-generators": {
-      "version": "7.8.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
-      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-class-properties": {
-      "version": "7.12.13",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
-      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-class-static-block": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
-      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-decorators": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz",
-      "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
-      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-export-namespace-from": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
-      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      }
-    },
-    "@babel/plugin-syntax-import-assertions": {
-      "version": "7.20.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
-      "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.19.0"
-      }
-    },
-    "@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
-      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-jsx": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
-      "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-syntax-logical-assignment-operators": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
-      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-nullish-coalescing-operator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
-      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-numeric-separator": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
-      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-object-rest-spread": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
-      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-catch-binding": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
-      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-chaining": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
-      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-private-property-in-object": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
-      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-top-level-await": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
-      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-arrow-functions": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
-      "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-async-to-generator": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
-      "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-remap-async-to-generator": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
-      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-block-scoping": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz",
-      "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-classes": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz",
-      "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.18.6",
-        "@babel/helper-compilation-targets": "^7.20.7",
-        "@babel/helper-environment-visitor": "^7.18.9",
-        "@babel/helper-function-name": "^7.19.0",
-        "@babel/helper-optimise-call-expression": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-replace-supers": "^7.20.7",
-        "@babel/helper-split-export-declaration": "^7.18.6",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/plugin-transform-computed-properties": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
-      "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/template": "^7.20.7"
-      }
-    },
-    "@babel/plugin-transform-destructuring": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz",
-      "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-dotall-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
-      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
-      "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
-      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-for-of": {
-      "version": "7.18.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
-      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-function-name": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
-      "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.18.9",
-        "@babel/helper-function-name": "^7.18.9",
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
-      "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
-      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-modules-amd": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
-      "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz",
-      "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-simple-access": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.20.11",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
-      "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-hoist-variables": "^7.18.6",
-        "@babel/helper-module-transforms": "^7.20.11",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-identifier": "^7.19.1"
-      }
-    },
-    "@babel/plugin-transform-modules-umd": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
-      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
-      "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.20.5",
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-new-target": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
-      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-object-super": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
-      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-replace-supers": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-parameters": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz",
-      "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2"
-      }
-    },
-    "@babel/plugin-transform-property-literals": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
-      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-regenerator": {
-      "version": "7.20.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
-      "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "regenerator-transform": "^0.15.1"
-      }
-    },
-    "@babel/plugin-transform-reserved-words": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
-      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-runtime": {
-      "version": "7.19.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz",
-      "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.19.0",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
-      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-spread": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
-      "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
-      }
-    },
-    "@babel/plugin-transform-sticky-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
-      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-template-literals": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
-      "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.18.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
-      "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-unicode-escapes": {
-      "version": "7.18.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
-      "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.18.9"
-      }
-    },
-    "@babel/plugin-transform-unicode-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
-      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/preset-env": {
-      "version": "7.20.2",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
-      "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.20.1",
-        "@babel/helper-compilation-targets": "^7.20.0",
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-validator-option": "^7.18.6",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
-        "@babel/plugin-proposal-class-properties": "^7.18.6",
-        "@babel/plugin-proposal-class-static-block": "^7.18.6",
-        "@babel/plugin-proposal-dynamic-import": "^7.18.6",
-        "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
-        "@babel/plugin-proposal-json-strings": "^7.18.6",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
-        "@babel/plugin-proposal-numeric-separator": "^7.18.6",
-        "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
-        "@babel/plugin-proposal-optional-chaining": "^7.18.9",
-        "@babel/plugin-proposal-private-methods": "^7.18.6",
-        "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
-        "@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-import-assertions": "^7.20.0",
-        "@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.18.6",
-        "@babel/plugin-transform-async-to-generator": "^7.18.6",
-        "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
-        "@babel/plugin-transform-block-scoping": "^7.20.2",
-        "@babel/plugin-transform-classes": "^7.20.2",
-        "@babel/plugin-transform-computed-properties": "^7.18.9",
-        "@babel/plugin-transform-destructuring": "^7.20.2",
-        "@babel/plugin-transform-dotall-regex": "^7.18.6",
-        "@babel/plugin-transform-duplicate-keys": "^7.18.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
-        "@babel/plugin-transform-for-of": "^7.18.8",
-        "@babel/plugin-transform-function-name": "^7.18.9",
-        "@babel/plugin-transform-literals": "^7.18.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.18.6",
-        "@babel/plugin-transform-modules-amd": "^7.19.6",
-        "@babel/plugin-transform-modules-commonjs": "^7.19.6",
-        "@babel/plugin-transform-modules-systemjs": "^7.19.6",
-        "@babel/plugin-transform-modules-umd": "^7.18.6",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
-        "@babel/plugin-transform-new-target": "^7.18.6",
-        "@babel/plugin-transform-object-super": "^7.18.6",
-        "@babel/plugin-transform-parameters": "^7.20.1",
-        "@babel/plugin-transform-property-literals": "^7.18.6",
-        "@babel/plugin-transform-regenerator": "^7.18.6",
-        "@babel/plugin-transform-reserved-words": "^7.18.6",
-        "@babel/plugin-transform-shorthand-properties": "^7.18.6",
-        "@babel/plugin-transform-spread": "^7.19.0",
-        "@babel/plugin-transform-sticky-regex": "^7.18.6",
-        "@babel/plugin-transform-template-literals": "^7.18.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.18.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.18.10",
-        "@babel/plugin-transform-unicode-regex": "^7.18.6",
-        "@babel/preset-modules": "^0.1.5",
-        "@babel/types": "^7.20.2",
-        "babel-plugin-polyfill-corejs2": "^0.3.3",
-        "babel-plugin-polyfill-corejs3": "^0.6.0",
-        "babel-plugin-polyfill-regenerator": "^0.4.1",
-        "core-js-compat": "^3.25.1",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/preset-modules": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
-      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
-      "dev": true,
-      "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/runtime": {
-      "version": "7.20.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
-      "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
-      "dev": true,
-      "requires": {
-        "regenerator-runtime": "^0.13.11"
-      }
-    },
-    "@babel/template": {
-      "version": "7.22.15",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
-      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/parser": "^7.22.15",
-        "@babel/types": "^7.22.15"
-      }
-    },
-    "@babel/traverse": {
-      "version": "7.23.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
-      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/generator": "^7.23.0",
-        "@babel/helper-environment-visitor": "^7.22.20",
-        "@babel/helper-function-name": "^7.23.0",
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/parser": "^7.23.0",
-        "@babel/types": "^7.23.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        }
-      }
-    },
-    "@babel/types": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "@fortawesome/fontawesome-common-types": {
-      "version": "0.2.36",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
-      "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
-      "dev": true
-    },
-    "@fortawesome/fontawesome-svg-core": {
-      "version": "1.2.28",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz",
-      "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==",
-      "dev": true,
-      "requires": {
-        "@fortawesome/fontawesome-common-types": "^0.2.28"
-      }
-    },
-    "@fortawesome/free-solid-svg-icons": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz",
-      "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==",
-      "dev": true,
-      "requires": {
-        "@fortawesome/fontawesome-common-types": "^0.2.28"
-      }
-    },
-    "@fortawesome/vue-fontawesome": {
-      "version": "0.1.9",
-      "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.9.tgz",
-      "integrity": "sha512-h/emhmZz+DfB2zOGLWawNwXq82UYhn9waTfUjLLmeaIqtnIyNt6kYlpQT/vzJjLZRDRvY2IEJAh1di5qKpKVpA==",
-      "dev": true,
-      "requires": {}
-    },
-    "@jridgewell/gen-mapping": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
-      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/set-array": "^1.0.0",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
-      }
-    },
-    "@jridgewell/resolve-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
-      "dev": true
-    },
-    "@jridgewell/set-array": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.4.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
-      "dev": true
-    },
-    "@jridgewell/trace-mapping": {
-      "version": "0.3.17",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-      "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/resolve-uri": "3.1.0",
-        "@jridgewell/sourcemap-codec": "1.4.14"
-      }
-    },
-    "@mrmlnc/readdir-enhanced": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
-      "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
-      "dev": true,
-      "requires": {
-        "call-me-maybe": "^1.0.1",
-        "glob-to-regexp": "^0.3.0"
-      }
-    },
-    "@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      }
-    },
-    "@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true
-    },
-    "@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      }
-    },
-    "@sindresorhus/is": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
-      "dev": true
-    },
-    "@szmarczak/http-timer": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
-      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
-      "dev": true,
-      "requires": {
-        "defer-to-connect": "^1.0.1"
-      }
-    },
-    "@types/glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
-      "dev": true,
-      "requires": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/json-schema": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
-      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-      "dev": true
-    },
-    "@types/minimatch": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
-      "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "18.11.18",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-      "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
-      "dev": true
-    },
-    "@types/q": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
-      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
-      "dev": true
-    },
-    "@vue/babel-helper-vue-jsx-merge-props": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz",
-      "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==",
-      "dev": true
-    },
-    "@vue/babel-helper-vue-transform-on": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
-      "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
-      "dev": true
-    },
-    "@vue/babel-plugin-jsx": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
-      "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "@vue/babel-helper-vue-transform-on": "^1.0.2",
-        "camelcase": "^6.0.0",
-        "html-tags": "^3.1.0",
-        "svg-tags": "^1.0.0"
-      }
-    },
-    "@vue/babel-plugin-transform-vue-jsx": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz",
-      "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "html-tags": "^2.0.0",
-        "lodash.kebabcase": "^4.1.1",
-        "svg-tags": "^1.0.0"
-      },
-      "dependencies": {
-        "html-tags": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
-          "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-preset-app": {
-      "version": "4.5.19",
-      "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz",
-      "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.11.0",
-        "@babel/helper-compilation-targets": "^7.9.6",
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/plugin-proposal-class-properties": "^7.8.3",
-        "@babel/plugin-proposal-decorators": "^7.8.3",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-jsx": "^7.8.3",
-        "@babel/plugin-transform-runtime": "^7.11.0",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.0",
-        "@vue/babel-plugin-jsx": "^1.0.3",
-        "@vue/babel-preset-jsx": "^1.2.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3",
-        "core-js": "^3.6.5",
-        "core-js-compat": "^3.6.5",
-        "semver": "^6.1.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-preset-jsx": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz",
-      "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==",
-      "dev": true,
-      "requires": {
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "@vue/babel-sugar-composition-api-inject-h": "^1.4.0",
-        "@vue/babel-sugar-composition-api-render-instance": "^1.4.0",
-        "@vue/babel-sugar-functional-vue": "^1.4.0",
-        "@vue/babel-sugar-inject-h": "^1.4.0",
-        "@vue/babel-sugar-v-model": "^1.4.0",
-        "@vue/babel-sugar-v-on": "^1.4.0"
-      }
-    },
-    "@vue/babel-sugar-composition-api-inject-h": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz",
-      "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-composition-api-render-instance": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz",
-      "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-functional-vue": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz",
-      "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-inject-h": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz",
-      "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-v-model": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz",
-      "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "camelcase": "^5.0.0",
-        "html-tags": "^2.0.0",
-        "svg-tags": "^1.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        },
-        "html-tags": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
-          "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-sugar-v-on": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz",
-      "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
-        "camelcase": "^5.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        }
-      }
-    },
-    "@vue/compiler-core": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
-      "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.45",
-        "estree-walker": "^2.0.2",
-        "source-map": "^0.6.1"
-      }
-    },
-    "@vue/compiler-dom": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
-      "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
-      "dev": true,
-      "requires": {
-        "@vue/compiler-core": "3.2.45",
-        "@vue/shared": "3.2.45"
-      }
-    },
-    "@vue/compiler-sfc": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
-      "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
-      "requires": {
-        "@babel/parser": "^7.18.4",
-        "postcss": "^8.4.14",
-        "source-map": "^0.6.1"
-      }
-    },
-    "@vue/compiler-ssr": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
-      "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
-      "dev": true,
-      "requires": {
-        "@vue/compiler-dom": "3.2.45",
-        "@vue/shared": "3.2.45"
-      }
-    },
-    "@vue/component-compiler-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
-      "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==",
-      "dev": true,
-      "requires": {
-        "consolidate": "^0.15.1",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.2",
-        "merge-source-map": "^1.1.0",
-        "postcss": "^7.0.36",
-        "postcss-selector-parser": "^6.0.2",
-        "prettier": "^1.18.2 || ^2.0.0",
-        "source-map": "~0.6.1",
-        "vue-template-es2015-compiler": "^1.9.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "@vue/reactivity-transform": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
-      "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.45",
-        "@vue/shared": "3.2.45",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7"
-      }
-    },
-    "@vue/shared": {
-      "version": "3.2.45",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
-      "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
-      "dev": true
-    },
-    "@vuepress/core": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-1.5.2.tgz",
-      "integrity": "sha512-DaRLzShuT116mu6ObsgfFXk+BX2c0W1Zp+BcIg1W5HrRhMZFnMvncdx9iiIjJhXdhVcaBYrVa3Y2624V113TBA==",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.8.4",
-        "@vue/babel-preset-app": "^4.1.2",
-        "@vuepress/markdown": "1.5.2",
-        "@vuepress/markdown-loader": "1.5.2",
-        "@vuepress/plugin-last-updated": "1.5.2",
-        "@vuepress/plugin-register-components": "1.5.2",
-        "@vuepress/shared-utils": "1.5.2",
-        "autoprefixer": "^9.5.1",
-        "babel-loader": "^8.0.4",
-        "cache-loader": "^3.0.0",
-        "chokidar": "^2.0.3",
-        "connect-history-api-fallback": "^1.5.0",
-        "copy-webpack-plugin": "^5.0.2",
-        "core-js": "^3.6.4",
-        "cross-spawn": "^6.0.5",
-        "css-loader": "^2.1.1",
-        "file-loader": "^3.0.1",
-        "js-yaml": "^3.13.1",
-        "lru-cache": "^5.1.1",
-        "mini-css-extract-plugin": "0.6.0",
-        "optimize-css-assets-webpack-plugin": "^5.0.1",
-        "portfinder": "^1.0.13",
-        "postcss-loader": "^3.0.0",
-        "postcss-safe-parser": "^4.0.1",
-        "toml": "^3.0.0",
-        "url-loader": "^1.0.1",
-        "vue": "^2.6.10",
-        "vue-loader": "^15.7.1",
-        "vue-router": "^3.1.3",
-        "vue-server-renderer": "^2.6.10",
-        "vue-template-compiler": "^2.6.10",
-        "vuepress-html-webpack-plugin": "^3.2.0",
-        "vuepress-plugin-container": "^2.0.2",
-        "webpack": "^4.8.1",
-        "webpack-chain": "^6.0.0",
-        "webpack-dev-server": "^3.5.1",
-        "webpack-merge": "^4.1.2",
-        "webpackbar": "3.2.0"
-      },
-      "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-              "dev": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": 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"
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-          "dev": 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"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-          "dev": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "lru-cache": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-          "dev": true,
-          "requires": {
-            "yallist": "^3.0.2"
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": 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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "@vuepress/markdown": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.5.2.tgz",
-      "integrity": "sha512-736fVRZh4x3QOORWhhz2IzCdrOKOnGL7KpWQ59Y+lg7SYNETRvxGxGXTFGrfd+hR9GugThj952BaWWpUCrO7fw==",
-      "dev": true,
-      "requires": {
-        "@vuepress/shared-utils": "1.5.2",
-        "markdown-it": "^8.4.1",
-        "markdown-it-anchor": "^5.0.2",
-        "markdown-it-chain": "^1.3.0",
-        "markdown-it-emoji": "^1.4.0",
-        "markdown-it-table-of-contents": "^0.4.0",
-        "prismjs": "^1.13.0"
-      },
-      "dependencies": {
-        "entities": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-          "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-          "dev": true
-        },
-        "markdown-it": {
-          "version": "8.4.2",
-          "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
-          "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
-          "dev": true,
-          "requires": {
-            "argparse": "^1.0.7",
-            "entities": "~1.1.1",
-            "linkify-it": "^2.0.0",
-            "mdurl": "^1.0.1",
-            "uc.micro": "^1.0.5"
-          }
-        }
-      }
-    },
-    "@vuepress/markdown-loader": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/markdown-loader/-/markdown-loader-1.5.2.tgz",
-      "integrity": "sha512-ZRW/sQk5EK1yNKjWFNdfLmdlQXgT8GUBrnWQDV6FRwh5r+NmSJsgEYISmewGgGGzlUY+GUJKiUjGhe7itztB2Q==",
-      "dev": true,
-      "requires": {
-        "@vuepress/markdown": "1.5.2",
-        "loader-utils": "^1.1.0",
-        "lru-cache": "^5.1.1"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-          "dev": true,
-          "requires": {
-            "yallist": "^3.0.2"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "@vuepress/plugin-active-header-links": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.5.2.tgz",
-      "integrity": "sha512-bZP/0jpouVSvMypixx2/I7kxWFUV4HfwLNx7UxbtuDrykQzXnA2cz6yTra8Y1ZoXACbRp6TIqGlWpCUafBzyww==",
-      "dev": true,
-      "requires": {
-        "lodash.debounce": "^4.0.8"
-      }
-    },
-    "@vuepress/plugin-google-analytics": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.5.2.tgz",
-      "integrity": "sha512-MrM/Zs0VbOclL0xKXS/Gi017Kl42oiWHUDr2Uz5VCQjqGB1FyAsQdGLtloE1Y6rtTuDXektsss9Bx9uX0f1amw==",
-      "dev": true
-    },
-    "@vuepress/plugin-last-updated": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.2.tgz",
-      "integrity": "sha512-wTq1reNSpGTSPJcnUHFfg+qpZBg88yXv3fZNWnEGSdiuUnbF4bFMTUr9tSaWHzMgtajvzY2B8VnTmrhy2ABfsA==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.5"
-      }
-    },
-    "@vuepress/plugin-nprogress": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-1.5.2.tgz",
-      "integrity": "sha512-PtiV5u9hHZJNPmyKs7s++f4GCJTuvPP25aIASi06vKACr/+Ier5XC7PvOwUvS1LbG6HAGRbQpokmeP1aVbrI6w==",
-      "dev": true,
-      "requires": {
-        "nprogress": "^0.2.0"
-      }
-    },
-    "@vuepress/plugin-register-components": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-register-components/-/plugin-register-components-1.5.2.tgz",
-      "integrity": "sha512-e0GYZG6KXa7axy8GO9sNtLaZNW+lXlidWCURg61/gfKISG5yzKr71n75j5V7pyEJ/idAV/sAakunp7+6nsShDg==",
-      "dev": true,
-      "requires": {
-        "@vuepress/shared-utils": "1.5.2"
-      }
-    },
-    "@vuepress/plugin-search": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-1.5.2.tgz",
-      "integrity": "sha512-/n0W7lQhBCj7vrIhU6VL8ZlUnWBru83W4w0gGNxzXDzZ1AMRJRnQDamBjKAWNd+WMYz8LA2LbJy1rCCds1Mu2Q==",
-      "dev": true
-    },
-    "@vuepress/shared-utils": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.5.2.tgz",
-      "integrity": "sha512-msDE6Mpof9JDVZQDHYUbsKmQm4aT/CUlUnItlORF+0J4xrIzv96dldJb8pvloDNUjyvB3DXeDJrV4V1XzpwsIA==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.3.2",
-        "diacritics": "^1.3.0",
-        "escape-html": "^1.0.3",
-        "fs-extra": "^7.0.1",
-        "globby": "^9.2.0",
-        "gray-matter": "^4.0.1",
-        "hash-sum": "^1.0.2",
-        "semver": "^6.0.0",
-        "upath": "^1.1.0"
-      },
-      "dependencies": {
-        "@nodelib/fs.stat": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
-          "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
-          "dev": true
-        },
-        "array-union": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-          "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-          "dev": true,
-          "requires": {
-            "array-uniq": "^1.0.1"
-          }
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": 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"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "dir-glob": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-          "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-          "dev": true,
-          "requires": {
-            "path-type": "^3.0.0"
-          }
-        },
-        "fast-glob": {
-          "version": "2.2.7",
-          "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
-          "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
-          "dev": true,
-          "requires": {
-            "@mrmlnc/readdir-enhanced": "^2.2.1",
-            "@nodelib/fs.stat": "^1.1.2",
-            "glob-parent": "^3.1.0",
-            "is-glob": "^4.0.0",
-            "merge2": "^1.2.3",
-            "micromatch": "^3.1.10"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "globby": {
-          "version": "9.2.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
-          "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
-          "dev": true,
-          "requires": {
-            "@types/glob": "^7.1.1",
-            "array-union": "^1.0.2",
-            "dir-glob": "^2.2.2",
-            "fast-glob": "^2.2.6",
-            "glob": "^7.1.3",
-            "ignore": "^4.0.3",
-            "pify": "^4.0.1",
-            "slash": "^2.0.0"
-          }
-        },
-        "ignore": {
-          "version": "4.0.6",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-          "dev": true
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": 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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "path-type": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-          "dev": true,
-          "requires": {
-            "pify": "^3.0.0"
-          },
-          "dependencies": {
-            "pify": {
-              "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-              "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
-              "dev": true
-            }
-          }
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "@vuepress/theme-default": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-1.5.2.tgz",
-      "integrity": "sha512-sO44ExAoO+pNO5qJJvlFin1vaBjxYkTO5oiBu53sYoInAoN3liG1uraMpyaGmhdmzCSlGQpqH+ojtnISTmfAcg==",
-      "dev": true,
-      "requires": {
-        "@vuepress/plugin-active-header-links": "1.5.2",
-        "@vuepress/plugin-nprogress": "1.5.2",
-        "@vuepress/plugin-search": "1.5.2",
-        "docsearch.js": "^2.5.2",
-        "lodash": "^4.17.15",
-        "stylus": "^0.54.5",
-        "stylus-loader": "^3.0.2",
-        "vuepress-plugin-container": "^2.0.2",
-        "vuepress-plugin-smooth-scroll": "^0.0.3"
-      }
-    },
-    "@webassemblyjs/ast": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
-      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
-      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-api-error": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
-      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-buffer": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
-      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-code-frame": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
-      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/wast-printer": "1.9.0"
-      }
-    },
-    "@webassemblyjs/helper-fsm": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
-      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-module-context": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
-      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0"
-      }
-    },
-    "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
-      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-wasm-section": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
-      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
-      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
-      "dev": true,
-      "requires": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "@webassemblyjs/leb128": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
-      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
-      "dev": true,
-      "requires": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/utf8": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
-      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
-      "dev": true
-    },
-    "@webassemblyjs/wasm-edit": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
-      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
-      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
-      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
-      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
-      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
-      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/wast-parser": "1.9.0",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@xtuc/ieee754": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "dev": true
-    },
-    "@xtuc/long": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "dev": true
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "accepts": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-      "dev": true,
-      "requires": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      }
-    },
-    "acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "dev": true
-    },
-    "agentkeepalive": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
-      "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==",
-      "dev": true
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true,
-      "requires": {}
-    },
-    "ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true,
-      "requires": {}
-    },
-    "algoliasearch": {
-      "version": "3.35.1",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz",
-      "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==",
-      "dev": true,
-      "requires": {
-        "agentkeepalive": "^2.2.0",
-        "debug": "^2.6.9",
-        "envify": "^4.0.0",
-        "es6-promise": "^4.1.0",
-        "events": "^1.1.0",
-        "foreach": "^2.0.5",
-        "global": "^4.3.2",
-        "inherits": "^2.0.1",
-        "isarray": "^2.0.1",
-        "load-script": "^1.0.0",
-        "object-keys": "^1.0.11",
-        "querystring-es3": "^0.2.1",
-        "reduce": "^1.0.1",
-        "semver": "^5.1.0",
-        "tunnel-agent": "^0.6.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        }
-      }
-    },
-    "alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
-      "dev": true
-    },
-    "ansi-align": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
-      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
-      "dev": true,
-      "requires": {
-        "string-width": "^4.1.0"
-      }
-    },
-    "ansi-colors": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
-      "dev": true
-    },
-    "ansi-escapes": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
-      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.21.3"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.21.3",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
-          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
-          "dev": true
-        }
-      }
-    },
-    "ansi-html-community": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
-      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
-      "dev": true
-    },
-    "ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-      "dev": true
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dev": true,
-      "requires": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
-      "dev": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
-      "dev": true
-    },
-    "array-flatten": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
-      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
-      "dev": true
-    },
-    "array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-      "dev": true
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
-      "dev": true
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
-      "dev": true
-    },
-    "array.prototype.reduce": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
-      "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "es-array-method-boxes-properly": "^1.0.0",
-        "is-string": "^1.0.7"
-      }
-    },
-    "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
-      "dev": true
-    },
-    "asn1": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
-      "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "asn1.js": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
-      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "assert": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-          "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
-          "dev": true
-        },
-        "util": {
-          "version": "0.10.3",
-          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-          "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
-          "dev": true,
-          "requires": {
-            "inherits": "2.0.1"
-          }
-        }
-      }
-    },
-    "assert-never": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
-      "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==",
-      "dev": true
-    },
-    "assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
-      "dev": true
-    },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
-      "dev": true
-    },
-    "ast-types": {
-      "version": "0.14.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
-      "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-          "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
-          "dev": true
-        }
-      }
-    },
-    "async": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
-      "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true
-    },
-    "async-limiter": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "dev": true
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-      "dev": true
-    },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true
-    },
-    "autocomplete.js": {
-      "version": "0.36.0",
-      "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz",
-      "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==",
-      "dev": true,
-      "requires": {
-        "immediate": "^3.2.3"
-      }
-    },
-    "autoprefixer": {
-      "version": "9.8.8",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
-      "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.12.0",
-        "caniuse-lite": "^1.0.30001109",
-        "normalize-range": "^0.1.2",
-        "num2fraction": "^1.2.2",
-        "picocolors": "^0.2.1",
-        "postcss": "^7.0.32",
-        "postcss-value-parser": "^4.1.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
-      "dev": true
-    },
-    "aws4": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
-      "dev": true
-    },
-    "babel-loader": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz",
-      "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
-      "dev": true,
-      "requires": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^2.0.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
-      },
-      "dependencies": {
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        }
-      }
-    },
-    "babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "dev": true,
-      "requires": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "babel-plugin-polyfill-corejs2": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
-      "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.17.7",
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "semver": "^6.1.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "babel-plugin-polyfill-corejs3": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
-      "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3",
-        "core-js-compat": "^3.25.1"
-      }
-    },
-    "babel-plugin-polyfill-regenerator": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
-      "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.3.3"
-      }
-    },
-    "babel-walk": {
-      "version": "3.0.0-canary-5",
-      "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
-      "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.9.6"
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "dev": true
-    },
-    "batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
-      "dev": true
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
-      "dev": true,
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-      "dev": true
-    },
-    "binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true
-    },
-    "bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-      "dev": true
-    },
-    "bn.js": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
-      "dev": true
-    },
-    "body-parser": {
-      "version": "1.20.1",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
-      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
-      "dev": true,
-      "requires": {
-        "bytes": "3.1.2",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.11.0",
-        "raw-body": "2.5.1",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "bytes": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.11.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-          "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-          "dev": true,
-          "requires": {
-            "side-channel": "^1.0.4"
-          }
-        }
-      }
-    },
-    "bonjour": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "dev": true
-    },
-    "boxen": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
-      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
-      "dev": true,
-      "requires": {
-        "ansi-align": "^3.0.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^3.0.0",
-        "cli-boxes": "^2.2.0",
-        "string-width": "^4.1.0",
-        "term-size": "^2.1.0",
-        "type-fest": "^0.8.1",
-        "widest-line": "^3.1.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "brorand": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
-      "dev": true
-    },
-    "browserify-aes": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-      "dev": true,
-      "requires": {
-        "browserify-aes": "^1.0.4",
-        "browserify-des": "^1.0.0",
-        "evp_bytestokey": "^1.0.0"
-      }
-    },
-    "browserify-des": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
-      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "browserify-sign": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
-      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "browserify-zlib": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-      "dev": true,
-      "requires": {
-        "pako": "~1.0.5"
-      }
-    },
-    "browserslist": {
-      "version": "4.21.4",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
-      "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
-      "dev": true,
-      "requires": {
-        "caniuse-lite": "^1.0.30001400",
-        "electron-to-chromium": "^1.4.251",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.9"
-      }
-    },
-    "buffer": {
-      "version": "4.9.2",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-      "dev": true,
-      "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-          "dev": true
-        }
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "dev": true
-    },
-    "buffer-indexof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
-      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
-      "dev": true
-    },
-    "buffer-json": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
-      "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
-      "dev": true
-    },
-    "buffer-xor": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
-      "dev": true
-    },
-    "builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
-      "dev": true
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
-      "dev": true
-    },
-    "cac": {
-      "version": "6.7.14",
-      "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
-      "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
-      "dev": true
-    },
-    "cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-          "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-          "dev": true,
-          "requires": {
-            "yallist": "^3.0.2"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "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"
-      }
-    },
-    "cache-loader": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-3.0.1.tgz",
-      "integrity": "sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==",
-      "dev": true,
-      "requires": {
-        "buffer-json": "^2.0.0",
-        "find-cache-dir": "^2.1.0",
-        "loader-utils": "^1.2.3",
-        "mkdirp": "^0.5.1",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "make-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "cacheable-request": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-      "dev": true,
-      "requires": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^3.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^4.1.0",
-        "responselike": "^1.0.2"
-      },
-      "dependencies": {
-        "get-stream": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        },
-        "lowercase-keys": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-          "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-          "dev": true
-        },
-        "normalize-url": {
-          "version": "4.5.1",
-          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
-          "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
-          "dev": true
-        }
-      }
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "call-me-maybe": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
-      "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
-      "dev": true
-    },
-    "caller-callsite": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
-      "dev": true,
-      "requires": {
-        "callsites": "^2.0.0"
-      }
-    },
-    "caller-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-      "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
-      "dev": true,
-      "requires": {
-        "caller-callsite": "^2.0.0"
-      }
-    },
-    "callsites": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-      "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
-      "dev": true
-    },
-    "camel-case": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
-      "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
-      "dev": true,
-      "requires": {
-        "no-case": "^2.2.0",
-        "upper-case": "^1.1.1"
-      }
-    },
-    "camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
-      "dev": true
-    },
-    "caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "dev": true,
-      "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.30001441",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
-      "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
-      "dev": true
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
-      "dev": true
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "character-parser": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
-      "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
-      "dev": true,
-      "requires": {
-        "is-regex": "^1.0.3"
-      }
-    },
-    "chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": 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": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-      "dev": true
-    },
-    "chrome-trace-event": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
-      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-      "dev": true
-    },
-    "ci-info": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
-      "dev": true
-    },
-    "cipher-base": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      }
-    },
-    "clean-css": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
-      "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
-      "dev": true,
-      "requires": {
-        "source-map": "~0.6.0"
-      }
-    },
-    "cli-boxes": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
-      "dev": true
-    },
-    "cliui": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-      "dev": true,
-      "requires": {
-        "string-width": "^3.1.0",
-        "strip-ansi": "^5.2.0",
-        "wrap-ansi": "^5.1.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "clone-response": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
-      "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
-      "dev": true,
-      "requires": {
-        "mimic-response": "^1.0.0"
-      }
-    },
-    "coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-      "dev": true,
-      "requires": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      }
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
-      "dev": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "color": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
-      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.3",
-        "color-string": "^1.6.0"
-      }
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-      "dev": true
-    },
-    "color-string": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
-      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
-      "dev": true,
-      "requires": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.17.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
-      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
-      "dev": true
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
-      "dev": true
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-      "dev": true
-    },
-    "compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "dev": true,
-      "requires": {
-        "mime-db": ">= 1.43.0 < 2"
-      }
-    },
-    "compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        }
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "concurrently": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz",
-      "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "date-fns": "^2.0.1",
-        "lodash": "^4.17.15",
-        "read-pkg": "^4.0.1",
-        "rxjs": "^6.5.2",
-        "spawn-command": "^0.0.2-1",
-        "supports-color": "^6.1.0",
-        "tree-kill": "^1.2.2",
-        "yargs": "^13.3.0"
-      }
-    },
-    "configstore": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
-      "dev": true,
-      "requires": {
-        "dot-prop": "^5.2.0",
-        "graceful-fs": "^4.1.2",
-        "make-dir": "^3.0.0",
-        "unique-string": "^2.0.0",
-        "write-file-atomic": "^3.0.0",
-        "xdg-basedir": "^4.0.0"
-      }
-    },
-    "connect-history-api-fallback": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
-      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
-      "dev": true
-    },
-    "consola": {
-      "version": "2.15.3",
-      "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
-      "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
-      "dev": true
-    },
-    "console-browserify": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
-      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
-      "dev": true
-    },
-    "consolidate": {
-      "version": "0.15.1",
-      "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
-      "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
-      "dev": true,
-      "requires": {
-        "bluebird": "^3.1.1"
-      }
-    },
-    "constantinople": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
-      "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.6.0",
-        "@babel/types": "^7.6.1"
-      }
-    },
-    "constants-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
-      "dev": true
-    },
-    "content-disposition": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
-      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.2.1"
-      },
-      "dependencies": {
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "dev": true
-    },
-    "convert-source-map": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
-      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
-      "dev": true
-    },
-    "cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
-      "dev": true
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
-      "dev": true
-    },
-    "copy-concurrently": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-      "dev": true,
-      "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"
-      }
-    },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
-      "dev": true
-    },
-    "copy-webpack-plugin": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
-      "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
-      "dev": true,
-      "requires": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "webpack-log": "^2.0.0"
-      },
-      "dependencies": {
-        "array-union": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-          "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-          "dev": true,
-          "requires": {
-            "array-uniq": "^1.0.1"
-          }
-        },
-        "dir-glob": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-          "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-          "dev": true,
-          "requires": {
-            "path-type": "^3.0.0"
-          }
-        },
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "globby": {
-          "version": "7.1.1",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-          "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
-          "dev": true,
-          "requires": {
-            "array-union": "^1.0.1",
-            "dir-glob": "^2.0.0",
-            "glob": "^7.1.2",
-            "ignore": "^3.3.5",
-            "pify": "^3.0.0",
-            "slash": "^1.0.0"
-          }
-        },
-        "ignore": {
-          "version": "3.3.10",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-          "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "make-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          },
-          "dependencies": {
-            "pify": {
-              "version": "4.0.1",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-              "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-              "dev": true
-            }
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "path-type": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-          "dev": true,
-          "requires": {
-            "pify": "^3.0.0"
-          }
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "slash": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-          "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
-          "dev": true
-        }
-      }
-    },
-    "core-js": {
-      "version": "3.27.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz",
-      "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==",
-      "dev": true
-    },
-    "core-js-compat": {
-      "version": "3.27.1",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz",
-      "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.21.4"
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "dev": true
-    },
-    "cosmiconfig": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-      "dev": true,
-      "requires": {
-        "import-fresh": "^2.0.0",
-        "is-directory": "^0.3.1",
-        "js-yaml": "^3.13.1",
-        "parse-json": "^4.0.0"
-      }
-    },
-    "create-ecdh": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
-      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "create-hash": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-      "dev": true,
-      "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": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "crypto-browserify": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
-      "dev": true,
-      "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": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-      "dev": true
-    },
-    "css": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
-      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      }
-    },
-    "css-color-names": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
-      "dev": true
-    },
-    "css-declaration-sorter": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
-      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "css-loader": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz",
-      "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.2.0",
-        "icss-utils": "^4.1.0",
-        "loader-utils": "^1.2.3",
-        "normalize-path": "^3.0.0",
-        "postcss": "^7.0.14",
-        "postcss-modules-extract-imports": "^2.0.0",
-        "postcss-modules-local-by-default": "^2.0.6",
-        "postcss-modules-scope": "^2.1.0",
-        "postcss-modules-values": "^2.0.0",
-        "postcss-value-parser": "^3.3.0",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "css-parse": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
-      "dev": true,
-      "requires": {
-        "css": "^2.0.0"
-      }
-    },
-    "css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-      "dev": true,
-      "requires": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
-      "dev": true
-    },
-    "css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
-      "dev": true,
-      "requires": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      }
-    },
-    "css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
-      "dev": true
-    },
-    "cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "dev": true
-    },
-    "cssnano": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz",
-      "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^5.0.0",
-        "cssnano-preset-default": "^4.0.8",
-        "is-resolvable": "^1.0.0",
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "cssnano-preset-default": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
-      "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "cssnano-util-get-arguments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-      "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
-      "dev": true
-    },
-    "cssnano-util-get-match": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-      "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
-      "dev": true
-    },
-    "cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
-      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
-      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
-      "dev": true
-    },
-    "csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "dev": true,
-      "requires": {
-        "css-tree": "^1.1.2"
-      },
-      "dependencies": {
-        "css-tree": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-          "dev": true,
-          "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
-          }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-          "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-          "dev": true
-        }
-      }
-    },
-    "csstype": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
-    },
-    "cyclist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
-      "dev": true
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "date-fns": {
-      "version": "2.29.3",
-      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
-      "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
-      "dev": true
-    },
-    "de-indent": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
-      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
-      "dev": true
-    },
-    "debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "requires": {
-        "ms": "^2.1.1"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-      "dev": true
-    },
-    "decode-uri-component": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
-      "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
-      "dev": true
-    },
-    "decompress-response": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
-      "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
-      "dev": true,
-      "requires": {
-        "mimic-response": "^1.0.0"
-      }
-    },
-    "deep-equal": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
-      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
-      "dev": true,
-      "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-extend": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-      "dev": true
-    },
-    "deepmerge": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
-      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
-      "dev": true
-    },
-    "default-gateway": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
-      "dev": true,
-      "requires": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
-      }
-    },
-    "defer-to-connect": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
-      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-      "dev": true
-    },
-    "define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
-      "dev": true,
-      "requires": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-      "dev": true,
-      "requires": {
-        "is-descriptor": "^0.1.0"
-      }
-    },
-    "del": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
-      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-          "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
-          "dev": true,
-          "requires": {
-            "array-uniq": "^1.0.1"
-          }
-        },
-        "globby": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
-          "dev": true,
-          "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",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-              "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-              "dev": true
-            }
-          }
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        }
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-      "dev": true
-    },
-    "depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-      "dev": true
-    },
-    "des.js": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
-      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
-      "dev": true
-    },
-    "detect-node": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
-      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
-      "dev": true
-    },
-    "diacritics": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz",
-      "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==",
-      "dev": true
-    },
-    "diffie-hellman": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "miller-rabin": "^4.0.0",
-        "randombytes": "^2.0.0"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "dev": true,
-      "requires": {
-        "path-type": "^4.0.0"
-      }
-    },
-    "dns-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
-      "dev": true
-    },
-    "dns-packet": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
-      "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
-      "dev": true,
-      "requires": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "dns-txt": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
-      "dev": true,
-      "requires": {
-        "buffer-indexof": "^1.0.0"
-      }
-    },
-    "docsearch.js": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz",
-      "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==",
-      "dev": true,
-      "requires": {
-        "algoliasearch": "^3.24.5",
-        "autocomplete.js": "0.36.0",
-        "hogan.js": "^3.0.2",
-        "request": "^2.87.0",
-        "stack-utils": "^1.0.1",
-        "to-factory": "^1.0.0",
-        "zepto": "^1.2.0"
-      }
-    },
-    "doctypes": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
-      "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
-      "dev": true
-    },
-    "dom-converter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
-      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
-      "dev": true,
-      "requires": {
-        "utila": "~0.4"
-      }
-    },
-    "dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-          "dev": true
-        }
-      }
-    },
-    "dom-walk": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
-      "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
-      "dev": true
-    },
-    "domain-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-      "dev": true
-    },
-    "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
-      "dev": true
-    },
-    "domhandler": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.2.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-          "dev": true
-        }
-      }
-    },
-    "domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "dev": true,
-      "requires": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "dot-prop": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
-      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
-      "dev": true,
-      "requires": {
-        "is-obj": "^2.0.0"
-      }
-    },
-    "duplexer3": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
-      "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
-      "dev": true
-    },
-    "duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
-      "dev": true,
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
-      "dev": true
-    },
-    "electron-to-chromium": {
-      "version": "1.4.284",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
-      "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
-      "dev": true
-    },
-    "elliptic": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
-      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
-    },
-    "emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-      "dev": true
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
-      "dev": true
-    },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "dev": true,
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "enhanced-resolve": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
-      "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.5.0",
-        "tapable": "^1.0.0"
-      },
-      "dependencies": {
-        "memory-fs": {
-          "version": "0.5.0",
-          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-          "dev": true,
-          "requires": {
-            "errno": "^0.1.3",
-            "readable-stream": "^2.0.1"
-          }
-        }
-      }
-    },
-    "entities": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
-      "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
-      "dev": true
-    },
-    "envify": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz",
-      "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==",
-      "dev": true,
-      "requires": {
-        "esprima": "^4.0.0",
-        "through": "~2.3.4"
-      }
-    },
-    "envinfo": {
-      "version": "7.8.1",
-      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
-      "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
-      "dev": true
-    },
-    "errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "dev": true,
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
-    "error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "es-abstract": {
-      "version": "1.20.5",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
-      "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.1.3",
-        "get-symbol-description": "^1.0.0",
-        "gopd": "^1.0.1",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.2",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.4.3",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trimend": "^1.0.6",
-        "string.prototype.trimstart": "^1.0.6",
-        "unbox-primitive": "^1.0.2"
-      }
-    },
-    "es-array-method-boxes-properly": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
-      "dev": true
-    },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "es6-promise": {
-      "version": "4.2.8",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-      "dev": true
-    },
-    "escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true
-    },
-    "escape-goat": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
-      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
-      "dev": true
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
-      "dev": true
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-      "dev": true
-    },
-    "eslint-scope": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.3.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-          "dev": true
-        }
-      }
-    },
-    "estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "dev": true
-    },
-    "eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
-    },
-    "events": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
-      "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
-      "dev": true
-    },
-    "eventsource": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz",
-      "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==",
-      "dev": true
-    },
-    "evp_bytestokey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-      "dev": true,
-      "requires": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "dev": true,
-      "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"
-      }
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        }
-      }
-    },
-    "express": {
-      "version": "4.18.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
-      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
-      "dev": true,
-      "requires": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.1",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.5.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.11.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.11.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-          "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-          "dev": true,
-          "requires": {
-            "side-channel": "^1.0.4"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "dev": true
-    },
-    "extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-      "dev": true,
-      "requires": {
-        "is-extendable": "^0.1.0"
-      }
-    },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
-      "dev": true
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
-    "fastq": {
-      "version": "1.14.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
-      "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
-      "dev": true,
-      "requires": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "faye-websocket": {
-      "version": "0.11.4",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
-      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
-      "dev": true,
-      "requires": {
-        "websocket-driver": ">=0.5.1"
-      }
-    },
-    "figgy-pudding": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-      "dev": true
-    },
-    "figures": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "file-loader": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
-      "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.0.2",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
-    "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        }
-      }
-    },
-    "find-cache-dir": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-      "dev": true,
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      }
-    },
-    "find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
-      "requires": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
-      "dev": true
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
-      "dev": true
-    },
-    "foreach": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-      "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==",
-      "dev": true
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
-      "dev": true
-    },
-    "form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dev": true,
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-      "dev": true
-    },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
-      "dev": true,
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "dev": true
-    },
-    "from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "iferr": "^0.1.5",
-        "imurmurhash": "^0.1.4",
-        "readable-stream": "1 || 2"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true
-    },
-    "gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-      "dev": true
-    },
-    "get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true
-    },
-    "get-intrinsic": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
-      "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      }
-    },
-    "get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "dev": true,
-      "requires": {
-        "pump": "^3.0.0"
-      }
-    },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
-      "dev": true
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "requires": {
-        "is-glob": "^4.0.1"
-      }
-    },
-    "glob-to-regexp": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
-      "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
-      "dev": true
-    },
-    "global": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
-      "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
-      "dev": true,
-      "requires": {
-        "min-document": "^2.19.0",
-        "process": "^0.11.10"
-      }
-    },
-    "global-dirs": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
-      "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
-      "dev": true,
-      "requires": {
-        "ini": "1.3.7"
-      }
-    },
-    "globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "dev": true
-    },
-    "globby": {
-      "version": "10.0.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
-      "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
-      "dev": true,
-      "requires": {
-        "@types/glob": "^7.1.1",
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.0.3",
-        "glob": "^7.1.3",
-        "ignore": "^5.1.1",
-        "merge2": "^1.2.3",
-        "slash": "^3.0.0"
-      }
-    },
-    "gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "got": {
-      "version": "9.6.0",
-      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
-      "dev": true,
-      "requires": {
-        "@sindresorhus/is": "^0.14.0",
-        "@szmarczak/http-timer": "^1.1.2",
-        "cacheable-request": "^6.0.0",
-        "decompress-response": "^3.3.0",
-        "duplexer3": "^0.1.4",
-        "get-stream": "^4.1.0",
-        "lowercase-keys": "^1.0.1",
-        "mimic-response": "^1.0.1",
-        "p-cancelable": "^1.0.0",
-        "to-readable-stream": "^1.0.0",
-        "url-parse-lax": "^3.0.0"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
-      "dev": true
-    },
-    "gray-matter": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
-      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
-      "dev": true,
-      "requires": {
-        "js-yaml": "^3.13.1",
-        "kind-of": "^6.0.2",
-        "section-matter": "^1.0.0",
-        "strip-bom-string": "^1.0.0"
-      }
-    },
-    "handle-thing": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
-      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
-      "dev": true
-    },
-    "har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
-      "dev": true
-    },
-    "has-property-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true
-    },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
-      "dev": true,
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "has-values": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "has-yarn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
-      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
-      "dev": true
-    },
-    "hash-base": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
-      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "hash-sum": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
-      "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-      "dev": true
-    },
-    "hash.js": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
-      }
-    },
-    "he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true
-    },
-    "hex-color-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
-      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
-      "dev": true
-    },
-    "hmac-drbg": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
-      "dev": true,
-      "requires": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
-    },
-    "hogan.js": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
-      "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==",
-      "dev": true,
-      "requires": {
-        "mkdirp": "0.3.0",
-        "nopt": "1.0.10"
-      },
-      "dependencies": {
-        "mkdirp": {
-          "version": "0.3.0",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
-          "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==",
-          "dev": true
-        }
-      }
-    },
-    "hosted-git-info": {
-      "version": "2.8.9",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-      "dev": true
-    },
-    "hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      }
-    },
-    "hsl-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-      "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
-      "dev": true
-    },
-    "hsla-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-      "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
-      "dev": true
-    },
-    "html-entities": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
-      "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
-      "dev": true
-    },
-    "html-minifier": {
-      "version": "3.5.21",
-      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
-      "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
-      "dev": true,
-      "requires": {
-        "camel-case": "3.0.x",
-        "clean-css": "4.2.x",
-        "commander": "2.17.x",
-        "he": "1.2.x",
-        "param-case": "2.1.x",
-        "relateurl": "0.2.x",
-        "uglify-js": "3.4.x"
-      }
-    },
-    "html-tags": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
-      "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
-      "dev": true
-    },
-    "htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "dom-serializer": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-          "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-          "dev": true,
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "domhandler": "^4.2.0",
-            "entities": "^2.0.0"
-          }
-        },
-        "domelementtype": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-          "dev": true
-        },
-        "domutils": {
-          "version": "2.8.0",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-          "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-          "dev": true,
-          "requires": {
-            "dom-serializer": "^1.0.1",
-            "domelementtype": "^2.2.0",
-            "domhandler": "^4.2.0"
-          }
-        }
-      }
-    },
-    "http-cache-semantics": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-      "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
-      "dev": true
-    },
-    "http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
-      "dev": true
-    },
-    "http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "dev": true,
-      "requires": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      }
-    },
-    "http-parser-js": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
-      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
-      "dev": true
-    },
-    "http-proxy": {
-      "version": "1.18.1",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
-      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
-      "dev": true,
-      "requires": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": 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"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": 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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      }
-    },
-    "https-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
-      "dev": true
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "icss-replace-symbols": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
-      "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==",
-      "dev": true
-    },
-    "icss-utils": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
-      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.14"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "dev": true
-    },
-    "iferr": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
-      "dev": true
-    },
-    "ignore": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
-      "dev": true
-    },
-    "immediate": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
-      "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
-      "dev": true
-    },
-    "import-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
-      "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
-      "dev": true,
-      "requires": {
-        "import-from": "^2.1.0"
-      }
-    },
-    "import-fresh": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
-      "dev": true,
-      "requires": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-from": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
-      "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-lazy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-      "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
-      "dev": true
-    },
-    "import-local": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
-      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
-      "dev": true,
-      "requires": {
-        "pkg-dir": "^3.0.0",
-        "resolve-cwd": "^2.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        }
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true
-    },
-    "indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
-      "dev": true
-    },
-    "infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "ini": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
-      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
-      "dev": true
-    },
-    "internal-ip": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
-      "dev": true,
-      "requires": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      }
-    },
-    "internal-slot": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
-      "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.3",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "ip": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
-      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
-      "dev": true
-    },
-    "ip-regex": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
-      "dev": true
-    },
-    "ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-      "dev": true
-    },
-    "is-absolute-url": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
-      "dev": true
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-      "dev": true
-    },
-    "is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "is-callable": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true
-    },
-    "is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "dev": true,
-      "requires": {
-        "ci-info": "^2.0.0"
-      }
-    },
-    "is-color-stop": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-      "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
-      "dev": true,
-      "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.11.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-      "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-          "dev": true
-        }
-      }
-    },
-    "is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
-      "dev": true
-    },
-    "is-expression": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
-      "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
-      "dev": true,
-      "requires": {
-        "acorn": "^7.1.1",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
-      "dev": true
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true
-    },
-    "is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-installed-globally": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
-      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
-      "dev": true,
-      "requires": {
-        "global-dirs": "^2.0.1",
-        "is-path-inside": "^3.0.1"
-      }
-    },
-    "is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-      "dev": true
-    },
-    "is-npm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
-      "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
-      "dev": true
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
-    },
-    "is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "dev": true
-    },
-    "is-path-cwd": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-      "dev": true
-    },
-    "is-path-in-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
-      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
-      "dev": true,
-      "requires": {
-        "is-path-inside": "^2.1.0"
-      },
-      "dependencies": {
-        "is-path-inside": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
-          "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
-          "dev": true,
-          "requires": {
-            "path-is-inside": "^1.0.2"
-          }
-        }
-      }
-    },
-    "is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true
-    },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
-      "dev": true
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-promise": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
-      "dev": true
-    },
-    "is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-resolvable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
-      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
-      "dev": true
-    },
-    "is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
-      "dev": true
-    },
-    "is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
-      "dev": true
-    },
-    "is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true
-    },
-    "is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
-      "dev": true
-    },
-    "is-yarn-global": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
-      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
-      "dev": true
-    },
-    "isarray": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-      "dev": true
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
-      "dev": true
-    },
-    "javascript-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
-      "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
-      "dev": true
-    },
-    "js-stringify": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
-      "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==",
-      "dev": true
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
-    },
-    "js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "dev": true,
-      "requires": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      }
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
-      "dev": true
-    },
-    "jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-      "dev": true
-    },
-    "json-buffer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
-      "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
-      "dev": true
-    },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
-    "json-schema": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
-      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
-      "dev": true
-    },
-    "json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
-      "dev": true
-    },
-    "json5": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
-      "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
-      "dev": true
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsprim": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
-      "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.4.0",
-        "verror": "1.10.0"
-      }
-    },
-    "jstransformer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
-      "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
-      "dev": true,
-      "requires": {
-        "is-promise": "^2.0.0",
-        "promise": "^7.0.1"
-      }
-    },
-    "keyv": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
-      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
-      "dev": true,
-      "requires": {
-        "json-buffer": "3.0.0"
-      }
-    },
-    "killable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
-      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
-      "dev": true
-    },
-    "kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true
-    },
-    "last-call-webpack-plugin": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
-      "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.5",
-        "webpack-sources": "^1.1.0"
-      }
-    },
-    "latest-version": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
-      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
-      "dev": true,
-      "requires": {
-        "package-json": "^6.3.0"
-      }
-    },
-    "linkify-it": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
-      "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
-      "dev": true,
-      "requires": {
-        "uc.micro": "^1.0.1"
-      }
-    },
-    "load-script": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
-      "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==",
-      "dev": true
-    },
-    "loader-runner": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
-      "dev": true
-    },
-    "loader-utils": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
-      "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-      "dev": true,
-      "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        }
-      }
-    },
-    "locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
-    },
-    "lodash._reinterpolate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
-      "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
-      "dev": true
-    },
-    "lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
-      "dev": true
-    },
-    "lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
-      "dev": true
-    },
-    "lodash.kebabcase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
-      "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
-      "dev": true
-    },
-    "lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
-      "dev": true
-    },
-    "lodash.template": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
-      "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
-      "dev": true,
-      "requires": {
-        "lodash._reinterpolate": "^3.0.0",
-        "lodash.templatesettings": "^4.0.0"
-      }
-    },
-    "lodash.templatesettings": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
-      "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
-      "dev": true,
-      "requires": {
-        "lodash._reinterpolate": "^3.0.0"
-      }
-    },
-    "lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
-      "dev": true
-    },
-    "loglevel": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz",
-      "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
-      "dev": true
-    },
-    "lower-case": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
-      "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
-      "dev": true
-    },
-    "lowercase-keys": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-      "dev": true
-    },
-    "lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
-      "requires": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-      "dev": true,
-      "requires": {
-        "sourcemap-codec": "^1.4.8"
-      }
-    },
-    "make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dev": true,
-      "requires": {
-        "semver": "^6.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
-      "dev": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
-      "dev": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "markdown-it": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
-      "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
-      "dev": true,
-      "peer": true,
-      "requires": {
-        "argparse": "^1.0.7",
-        "entities": "~2.0.0",
-        "linkify-it": "^2.0.0",
-        "mdurl": "^1.0.1",
-        "uc.micro": "^1.0.5"
-      }
-    },
-    "markdown-it-anchor": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
-      "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
-      "dev": true,
-      "requires": {}
-    },
-    "markdown-it-chain": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz",
-      "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==",
-      "dev": true,
-      "requires": {
-        "webpack-chain": "^4.9.0"
-      },
-      "dependencies": {
-        "javascript-stringify": {
-          "version": "1.6.0",
-          "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz",
-          "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==",
-          "dev": true
-        },
-        "webpack-chain": {
-          "version": "4.12.1",
-          "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz",
-          "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==",
-          "dev": true,
-          "requires": {
-            "deepmerge": "^1.5.2",
-            "javascript-stringify": "^1.6.0"
-          }
-        }
-      }
-    },
-    "markdown-it-container": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz",
-      "integrity": "sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==",
-      "dev": true
-    },
-    "markdown-it-emoji": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz",
-      "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==",
-      "dev": true
-    },
-    "markdown-it-include": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/markdown-it-include/-/markdown-it-include-1.1.1.tgz",
-      "integrity": "sha512-jDWIHhOtiQkFIc6BqXqXK1r4LfCxKFOWtsdvwZjLw5zZaWk64n71lE5HWHtzyVvfDudYWxR+tH0hO10B2I1e3w==",
-      "dev": true,
-      "requires": {}
-    },
-    "markdown-it-table-of-contents": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz",
-      "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==",
-      "dev": true
-    },
-    "md5.js": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
-      "dev": true
-    },
-    "mdurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
-      "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
-      "dev": true
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
-      "dev": true
-    },
-    "memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
-      "dev": true,
-      "requires": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
-      "dev": true
-    },
-    "merge-source-map": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
-      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
-      "dev": true,
-      "requires": {
-        "source-map": "^0.6.1"
-      }
-    },
-    "merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-      "dev": true,
-      "requires": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      }
-    },
-    "miller-rabin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.0.0",
-        "brorand": "^1.0.1"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "mime": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-      "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dev": true,
-      "requires": {
-        "mime-db": "1.52.0"
-      }
-    },
-    "mimic-response": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
-      "dev": true
-    },
-    "min-document": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
-      "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
-      "dev": true,
-      "requires": {
-        "dom-walk": "^0.1.0"
-      }
-    },
-    "mini-css-extract-plugin": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz",
-      "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "normalize-url": "^2.0.1",
-        "schema-utils": "^1.0.0",
-        "webpack-sources": "^1.1.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "minimalistic-assert": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-      "dev": true
-    },
-    "minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
-      "dev": true
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "dev": true
-    },
-    "mississippi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.6"
-      }
-    },
-    "move-concurrently": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
-      "dev": true,
-      "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"
-      }
-    },
-    "ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true
-    },
-    "multicast-dns": {
-      "version": "6.2.3",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
-      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
-      "dev": true,
-      "requires": {
-        "dns-packet": "^1.3.1",
-        "thunky": "^1.0.2"
-      }
-    },
-    "multicast-dns-service-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.17.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
-      "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
-      "dev": true,
-      "optional": true
-    },
-    "nanoid": {
-      "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "extend-shallow": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-          "dev": true,
-          "requires": {
-            "assign-symbols": "^1.0.0",
-            "is-extendable": "^1.0.1"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
-      "dev": true
-    },
-    "neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
-    "no-case": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
-      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
-      "dev": true,
-      "requires": {
-        "lower-case": "^1.1.1"
-      }
-    },
-    "node-forge": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
-      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
-      "dev": true
-    },
-    "node-libs-browser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-      "dev": true,
-      "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": {
-        "events": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-          "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-          "dev": true
-        },
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
-          "dev": true
-        }
-      }
-    },
-    "node-releases": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
-      "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
-      "dev": true
-    },
-    "nopt": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
-      "dev": true,
-      "requires": {
-        "abbrev": "1"
-      }
-    },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
-    },
-    "normalize-range": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
-      "dev": true
-    },
-    "normalize-url": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
-      "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
-      "dev": true,
-      "requires": {
-        "prepend-http": "^2.0.0",
-        "query-string": "^5.0.1",
-        "sort-keys": "^2.0.0"
-      }
-    },
-    "npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
-      "dev": true,
-      "requires": {
-        "path-key": "^2.0.0"
-      }
-    },
-    "nprogress": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
-      "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
-      "dev": true
-    },
-    "nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-      "dev": true,
-      "requires": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "dev": true
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
-      "dev": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-      "dev": true
-    },
-    "object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
-    },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.assign": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.getownpropertydescriptors": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz",
-      "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==",
-      "dev": true,
-      "requires": {
-        "array.prototype.reduce": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "object.values": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
-      "dev": true
-    },
-    "on-finished": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
-      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
-      "dev": true,
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-      "dev": true
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "opencollective-postinstall": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
-      "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
-      "dev": true
-    },
-    "opn": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-      "dev": true,
-      "requires": {
-        "is-wsl": "^1.1.0"
-      }
-    },
-    "optimize-css-assets-webpack-plugin": {
-      "version": "5.0.8",
-      "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz",
-      "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==",
-      "dev": true,
-      "requires": {
-        "cssnano": "^4.1.10",
-        "last-call-webpack-plugin": "^3.0.0"
-      }
-    },
-    "os-browserify": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
-      "dev": true
-    },
-    "p-cancelable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-      "dev": true
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
-      "requires": {
-        "p-limit": "^2.2.0"
-      }
-    },
-    "p-map": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-      "dev": true
-    },
-    "p-retry": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
-      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
-      "dev": true,
-      "requires": {
-        "retry": "^0.12.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true
-    },
-    "package-json": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
-      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
-      "dev": true,
-      "requires": {
-        "got": "^9.6.0",
-        "registry-auth-token": "^4.0.0",
-        "registry-url": "^5.0.0",
-        "semver": "^6.2.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "pako": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-      "dev": true
-    },
-    "parallel-transform": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-      "dev": true,
-      "requires": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "param-case": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
-      "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
-      "dev": true,
-      "requires": {
-        "no-case": "^2.2.0"
-      }
-    },
-    "parse-asn1": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
-      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
-      "dev": true,
-      "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": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
-      "dev": true,
-      "requires": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      }
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "dev": true
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
-      "dev": true
-    },
-    "path-browserify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-      "dev": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
-      "dev": true
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "dev": true
-    },
-    "path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
-      "dev": true
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
-      "dev": true
-    },
-    "path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true
-    },
-    "pbkdf2": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
-      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
-      "dev": true
-    },
-    "picocolors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-    },
-    "picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true
-    },
-    "pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
-      "dev": true,
-      "requires": {
-        "pinkie": "^2.0.0"
-      }
-    },
-    "pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "dev": true,
-      "requires": {
-        "find-up": "^4.0.0"
-      }
-    },
-    "portfinder": {
-      "version": "1.0.32",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
-      "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
-      "dev": true,
-      "requires": {
-        "async": "^2.6.4",
-        "debug": "^3.2.7",
-        "mkdirp": "^0.5.6"
-      }
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
-      "dev": true
-    },
-    "postcss": {
-      "version": "8.4.20",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
-      "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
-      "requires": {
-        "nanoid": "^3.3.4",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "postcss-calc": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz",
-      "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-colormin": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
-      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "color": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-convert-values": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
-      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-discard-comments": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
-      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
-      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-discard-empty": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
-      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-discard-overridden": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
-      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-load-config": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
-      "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^5.0.0",
-        "import-cwd": "^2.0.0"
-      }
-    },
-    "postcss-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
-      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "postcss": "^7.0.0",
-        "postcss-load-config": "^2.0.0",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "postcss-merge-longhand": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
-      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
-      "dev": true,
-      "requires": {
-        "css-color-names": "0.0.4",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "stylehacks": "^4.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-merge-rules": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
-      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
-      "dev": true,
-      "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": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "postcss-minify-font-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
-      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-gradients": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
-      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
-      "dev": true,
-      "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": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-params": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
-      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
-      "dev": true,
-      "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": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-selectors": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
-      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "^1.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "postcss-modules-extract-imports": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
-      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.5"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-modules-local-by-default": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz",
-      "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0",
-        "postcss-value-parser": "^3.3.1"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-modules-scope": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
-      "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-modules-values": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz",
-      "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==",
-      "dev": true,
-      "requires": {
-        "icss-replace-symbols": "^1.1.0",
-        "postcss": "^7.0.6"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-normalize-charset": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
-      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
-      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
-      "dev": true,
-      "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-positions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
-      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
-      "dev": true,
-      "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
-      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
-      "dev": true,
-      "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": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-string": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
-      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
-      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
-      "dev": true,
-      "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
-      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-url": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
-      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
-          "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
-      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-ordered-values": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
-      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
-      "dev": true,
-      "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-reduce-initial": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
-      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "caniuse-api": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-reduce-transforms": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
-      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
-      "dev": true,
-      "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-safe-parser": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
-      "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.26"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-selector-parser": {
-      "version": "6.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
-      "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
-      "dev": true,
-      "requires": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      }
-    },
-    "postcss-svgo": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
-      "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "svgo": "^1.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-unique-selectors": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
-      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "^1.0.0",
-        "postcss": "^7.0.0",
-        "uniqs": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "dev": true
-    },
-    "prepend-http": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-      "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
-      "dev": true
-    },
-    "prettier": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
-      "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
-      "dev": true
-    },
-    "pretty-error": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz",
-      "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.20",
-        "renderkid": "^2.0.4"
-      }
-    },
-    "pretty-time": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
-      "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==",
-      "dev": true
-    },
-    "prismjs": {
-      "version": "1.29.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
-      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
-      "dev": true
-    },
-    "process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "promise": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-      "dev": true,
-      "requires": {
-        "asap": "~2.0.3"
-      }
-    },
-    "promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
-      "dev": true
-    },
-    "proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "dev": true,
-      "requires": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      }
-    },
-    "prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
-      "dev": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
-      "dev": true
-    },
-    "psl": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
-      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
-      "dev": true
-    },
-    "public-encrypt": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "pug": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz",
-      "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==",
-      "dev": true,
-      "requires": {
-        "pug-code-gen": "^3.0.2",
-        "pug-filters": "^4.0.0",
-        "pug-lexer": "^5.0.1",
-        "pug-linker": "^4.0.0",
-        "pug-load": "^3.0.0",
-        "pug-parser": "^6.0.0",
-        "pug-runtime": "^3.0.1",
-        "pug-strip-comments": "^2.0.0"
-      }
-    },
-    "pug-attrs": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
-      "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
-      "dev": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "js-stringify": "^1.0.2",
-        "pug-runtime": "^3.0.0"
-      }
-    },
-    "pug-code-gen": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz",
-      "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==",
-      "dev": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "doctypes": "^1.1.0",
-        "js-stringify": "^1.0.2",
-        "pug-attrs": "^3.0.0",
-        "pug-error": "^2.0.0",
-        "pug-runtime": "^3.0.0",
-        "void-elements": "^3.1.0",
-        "with": "^7.0.0"
-      }
-    },
-    "pug-error": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
-      "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==",
-      "dev": true
-    },
-    "pug-filters": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
-      "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
-      "dev": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "jstransformer": "1.0.0",
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0",
-        "resolve": "^1.15.1"
-      }
-    },
-    "pug-lexer": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
-      "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
-      "dev": true,
-      "requires": {
-        "character-parser": "^2.2.0",
-        "is-expression": "^4.0.0",
-        "pug-error": "^2.0.0"
-      }
-    },
-    "pug-linker": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
-      "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
-      "dev": true,
-      "requires": {
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "pug-load": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
-      "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "pug-parser": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
-      "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
-      "dev": true,
-      "requires": {
-        "pug-error": "^2.0.0",
-        "token-stream": "1.0.0"
-      }
-    },
-    "pug-runtime": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
-      "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
-      "dev": true
-    },
-    "pug-strip-comments": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
-      "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
-      "dev": true,
-      "requires": {
-        "pug-error": "^2.0.0"
-      }
-    },
-    "pug-walk": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
-      "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
-      "dev": true
-    },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
-      "dev": true,
-      "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      },
-      "dependencies": {
-        "pump": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-          "dev": true,
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
-        }
-      }
-    },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true
-    },
-    "pupa": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
-      "dev": true,
-      "requires": {
-        "escape-goat": "^2.0.0"
-      }
-    },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
-      "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
-      "dev": true
-    },
-    "query-string": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
-      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
-      "dev": true,
-      "requires": {
-        "decode-uri-component": "^0.2.0",
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
-      }
-    },
-    "querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
-      "dev": true
-    },
-    "querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
-      "dev": true
-    },
-    "querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
-    },
-    "queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true
-    },
-    "randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "randomfill": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-      "dev": true,
-      "requires": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
-      "dev": true,
-      "requires": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "bytes": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-          "dev": true
-        }
-      }
-    },
-    "rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-      "dev": true,
-      "requires": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
-      }
-    },
-    "read-pkg": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
-      "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==",
-      "dev": true,
-      "requires": {
-        "normalize-package-data": "^2.3.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-          "dev": true
-        }
-      }
-    },
-    "readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "requires": {
-        "picomatch": "^2.2.1"
-      }
-    },
-    "recast": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz",
-      "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==",
-      "dev": true,
-      "requires": {
-        "ast-types": "0.15.2",
-        "esprima": "~4.0.0",
-        "source-map": "~0.6.1",
-        "tslib": "^2.0.1"
-      },
-      "dependencies": {
-        "ast-types": {
-          "version": "0.15.2",
-          "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
-          "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==",
-          "dev": true,
-          "requires": {
-            "tslib": "^2.0.1"
-          }
-        },
-        "tslib": {
-          "version": "2.4.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-          "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
-          "dev": true
-        }
-      }
-    },
-    "reduce": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz",
-      "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.1.0"
-      }
-    },
-    "regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
-      "dev": true
-    },
-    "regenerate-unicode-properties": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
-      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
-      "dev": true,
-      "requires": {
-        "regenerate": "^1.4.2"
-      }
-    },
-    "regenerator-runtime": {
-      "version": "0.13.11",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
-      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
-      "dev": true
-    },
-    "regenerator-transform": {
-      "version": "0.15.1",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
-      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
-      "dev": true,
-      "requires": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-          "dev": true,
-          "requires": {
-            "assign-symbols": "^1.0.0",
-            "is-extendable": "^1.0.1"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "regexpu-core": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
-      "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
-      "dev": true,
-      "requires": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.1.0",
-        "regjsgen": "^0.7.1",
-        "regjsparser": "^0.9.1",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      }
-    },
-    "registry-auth-token": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz",
-      "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==",
-      "dev": true,
-      "requires": {
-        "rc": "1.2.8"
-      }
-    },
-    "registry-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
-      "dev": true,
-      "requires": {
-        "rc": "^1.2.8"
-      }
-    },
-    "regjsgen": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
-      "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
-      "dev": true
-    },
-    "regjsparser": {
-      "version": "0.9.1",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
-      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
-      "dev": true,
-      "requires": {
-        "jsesc": "~0.5.0"
-      },
-      "dependencies": {
-        "jsesc": {
-          "version": "0.5.0",
-          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
-          "dev": true
-        }
-      }
-    },
-    "relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
-      "dev": true
-    },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
-      "dev": true
-    },
-    "renderkid": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz",
-      "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-          "dev": true
-        },
-        "css-select": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-          "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-          "dev": true,
-          "requires": {
-            "boolbase": "^1.0.0",
-            "css-what": "^6.0.1",
-            "domhandler": "^4.3.1",
-            "domutils": "^2.8.0",
-            "nth-check": "^2.0.1"
-          }
-        },
-        "css-what": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
-          "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
-          "dev": true
-        },
-        "dom-serializer": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-          "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-          "dev": true,
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "domhandler": "^4.2.0",
-            "entities": "^2.0.0"
-          }
-        },
-        "domelementtype": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-          "dev": true
-        },
-        "domutils": {
-          "version": "2.8.0",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-          "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-          "dev": true,
-          "requires": {
-            "dom-serializer": "^1.0.1",
-            "domelementtype": "^2.2.0",
-            "domhandler": "^4.2.0"
-          }
-        },
-        "nth-check": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
-          "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
-          "dev": true,
-          "requires": {
-            "boolbase": "^1.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        }
-      }
-    },
-    "repeat-element": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-      "dev": true
-    },
-    "request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-      "dev": true
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-      "dev": true
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.22.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-      "dev": true,
-      "requires": {
-        "is-core-module": "^2.9.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      }
-    },
-    "resolve-cwd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "resolve-from": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
-      "dev": true
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
-      "dev": true
-    },
-    "responselike": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-      "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
-      "dev": true,
-      "requires": {
-        "lowercase-keys": "^1.0.0"
-      }
-    },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
-    },
-    "retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-      "dev": true
-    },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true
-    },
-    "rgb-regex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-      "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
-      "dev": true
-    },
-    "rgba-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-      "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "ripemd160": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
-    },
-    "run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "run-queue": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
-      "dev": true,
-      "requires": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "rxjs": {
-      "version": "6.6.7",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.9.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
-    "safe-regex-test": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "requires": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      }
-    },
-    "section-matter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
-      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "kind-of": "^6.0.0"
-      }
-    },
-    "select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
-      "dev": true
-    },
-    "selfsigned": {
-      "version": "1.10.14",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
-      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
-      "dev": true,
-      "requires": {
-        "node-forge": "^0.10.0"
-      }
-    },
-    "semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true
-    },
-    "semver-diff": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
-      "dev": true,
-      "requires": {
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
-    "send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-              "dev": true
-            }
-          }
-        },
-        "mime": {
-          "version": "1.6.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-          "dev": true
-        }
-      }
-    },
-    "serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-      "dev": true,
-      "requires": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
-      "dev": true,
-      "requires": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "depd": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-          "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
-          "dev": true
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-          "dev": true,
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-          "dev": true
-        },
-        "statuses": {
-          "version": "1.5.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
-          "dev": true
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "dev": true,
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      }
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      }
-    },
-    "setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
-      "dev": true
-    },
-    "setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-      "dev": true
-    },
-    "sha.js": {
-      "version": "2.4.11",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
-      "dev": true
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "signal-exit": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-      "dev": true
-    },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.3.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-          "dev": true
-        }
-      }
-    },
-    "slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true
-    },
-    "smoothscroll-polyfill": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz",
-      "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==",
-      "dev": true
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "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",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-          "dev": true
-        }
-      }
-    },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
-      "dev": true,
-      "requires": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      },
-      "dependencies": {
-        "uuid": {
-          "version": "8.3.2",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-          "dev": true
-        }
-      }
-    },
-    "sockjs-client": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
-      "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
-      "dev": true,
-      "requires": {
-        "debug": "^3.2.5",
-        "eventsource": "^1.0.7",
-        "faye-websocket": "~0.11.1",
-        "inherits": "^2.0.3",
-        "json3": "^3.3.2",
-        "url-parse": "^1.4.3"
-      }
-    },
-    "sort-keys": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
-      "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
-      "dev": true,
-      "requires": {
-        "is-plain-obj": "^1.0.0"
-      }
-    },
-    "source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-      "dev": true
-    },
-    "source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-    },
-    "source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
-    },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-      "dev": true,
-      "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"
-      }
-    },
-    "source-map-support": {
-      "version": "0.5.21",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
-      "dev": true
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "spawn-command": {
-      "version": "0.0.2-1",
-      "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
-      "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
-      "dev": true
-    },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.12",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
-      "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
-      "dev": true
-    },
-    "spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        }
-      }
-    },
-    "spdy-transport": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
-      "dev": true,
-      "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": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-          "dev": true,
-          "requires": {
-            "assign-symbols": "^1.0.0",
-            "is-extendable": "^1.0.1"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
-      "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-      "dev": true,
-      "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      }
-    },
-    "ssri": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-      "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
-      "dev": true,
-      "requires": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "dev": true
-    },
-    "stack-utils": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
-      "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
-          "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
-          "dev": true
-        }
-      }
-    },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
-      "dev": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      }
-    },
-    "statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "dev": true
-    },
-    "std-env": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz",
-      "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==",
-      "dev": true,
-      "requires": {
-        "ci-info": "^3.1.1"
-      },
-      "dependencies": {
-        "ci-info": {
-          "version": "3.7.0",
-          "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz",
-          "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==",
-          "dev": true
-        }
-      }
-    },
-    "stream-browserify": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
-      "dev": true,
-      "requires": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "stream-each": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "stream-http": {
-      "version": "2.8.3",
-      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
-      "dev": true
-    },
-    "strict-uri-encode": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
-      "dev": true
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
-      "requires": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^5.0.1"
-      }
-    },
-    "strip-bom-string": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
-      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
-      "dev": true
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
-      "dev": true
-    },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
-      "dev": true
-    },
-    "stylehacks": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
-      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "stylus": {
-      "version": "0.54.8",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
-      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
-      "dev": true,
-      "requires": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.3.0",
-        "source-map": "^0.7.3"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
-          "dev": true
-        }
-      }
-    },
-    "stylus-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
-      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.0.2",
-        "lodash.clonedeep": "^4.5.0",
-        "when": "~3.6.x"
-      }
-    },
-    "supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true
-    },
-    "svg-tags": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
-      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
-      "dev": true
-    },
-    "svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-      "dev": true,
-      "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"
-      }
-    },
-    "tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
-      "dev": true
-    },
-    "term-size": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
-      "dev": true
-    },
-    "terser": {
-      "version": "4.8.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
-      "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
-      "dev": true,
-      "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.20.3",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-          "dev": true
-        }
-      }
-    },
-    "terser-webpack-plugin": {
-      "version": "1.4.5",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-      "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "make-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
-      "dev": true
-    },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "dev": true,
-      "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "dev": true
-    },
-    "timers-browserify": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
-      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
-      "dev": true,
-      "requires": {
-        "setimmediate": "^1.0.4"
-      }
-    },
-    "timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
-      "dev": true
-    },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
-      "dev": true
-    },
-    "to-factory": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz",
-      "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==",
-      "dev": true
-    },
-    "to-fast-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true
-    },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "to-readable-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-      "dev": true
-    },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "extend-shallow": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-          "dev": true,
-          "requires": {
-            "assign-symbols": "^1.0.0",
-            "is-extendable": "^1.0.1"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "dev": true
-    },
-    "token-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
-      "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==",
-      "dev": true
-    },
-    "toml": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
-      "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
-      "dev": true
-    },
-    "toposort": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
-      "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==",
-      "dev": true
-    },
-    "tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-      "dev": true,
-      "requires": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      }
-    },
-    "tree-kill": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
-      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
-      "dev": true
-    },
-    "ts-map": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz",
-      "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==",
-      "dev": true
-    },
-    "tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
-    },
-    "tty-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
-      "dev": true
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
-      "dev": true
-    },
-    "type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "dev": true,
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
-      "dev": true
-    },
-    "typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dev": true,
-      "requires": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "uc.micro": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
-      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "3.4.10",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
-      "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
-      "dev": true,
-      "requires": {
-        "commander": "~2.19.0",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.19.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
-          "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
-          "dev": true
-        }
-      }
-    },
-    "unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      }
-    },
-    "unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
-      "dev": true
-    },
-    "unicode-match-property-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
-      "dev": true,
-      "requires": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
-      }
-    },
-    "unicode-match-property-value-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
-      "dev": true
-    },
-    "unicode-property-aliases-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
-      "dev": true
-    },
-    "union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
-      "dev": true
-    },
-    "uniqs": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
-      "dev": true
-    },
-    "unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "dev": true,
-      "requires": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "dev": true,
-      "requires": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dev": true,
-      "requires": {
-        "crypto-random-string": "^2.0.0"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "dev": true
-    },
-    "unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
-      "dev": true
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
-      "dev": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
-          "dev": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
-          "dev": true
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-          "dev": true
-        }
-      }
-    },
-    "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true
-    },
-    "update-browserslist-db": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
-      "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
-      "dev": true,
-      "requires": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0"
-      }
-    },
-    "update-notifier": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
-      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
-      "dev": true,
-      "requires": {
-        "boxen": "^4.2.0",
-        "chalk": "^3.0.0",
-        "configstore": "^5.0.1",
-        "has-yarn": "^2.1.0",
-        "import-lazy": "^2.1.0",
-        "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
-        "is-npm": "^4.0.0",
-        "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver-diff": "^3.1.1",
-        "xdg-basedir": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "upper-case": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
-      "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
-      "dev": true
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
-      "dev": true
-    },
-    "url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
-      "dev": true,
-      "requires": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
-          "dev": true
-        }
-      }
-    },
-    "url-loader": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
-      "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "mime": "^2.0.3",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "url-parse": {
-      "version": "1.5.10",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
-      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-      "dev": true,
-      "requires": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "url-parse-lax": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-      "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
-      "dev": true,
-      "requires": {
-        "prepend-http": "^2.0.0"
-      }
-    },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true
-    },
-    "util": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-          "dev": true
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-      "dev": true
-    },
-    "util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      }
-    },
-    "utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
-      "dev": true
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "dev": true
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
-      "dev": true
-    },
-    "vendors": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
-      "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
-      "dev": true
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      },
-      "dependencies": {
-        "core-util-is": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-          "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
-          "dev": true
-        }
-      }
-    },
-    "vm-browserify": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-      "dev": true
-    },
-    "void-elements": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
-      "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
-      "dev": true
-    },
-    "vue": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz",
-      "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==",
-      "requires": {
-        "@vue/compiler-sfc": "2.7.14",
-        "csstype": "^3.1.0"
-      }
-    },
-    "vue-docgen-api": {
-      "version": "4.56.2",
-      "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.56.2.tgz",
-      "integrity": "sha512-7V36UExnHwAKq0KmB7rtk5ONuHzsATkhDZwCZ+aEudsnaNmMUTc+9g5MZgUXTi8V76KNE4gMrWd3MuESbaUItw==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.13.12",
-        "@babel/types": "^7.18.8",
-        "@vue/compiler-dom": "^3.2.0",
-        "@vue/compiler-sfc": "^3.2.0",
-        "ast-types": "0.14.2",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.5",
-        "pug": "^3.0.2",
-        "recast": "0.21.5",
-        "ts-map": "^1.0.3",
-        "vue-inbrowser-compiler-independent-utils": "^4.56.2"
-      },
-      "dependencies": {
-        "@vue/compiler-sfc": {
-          "version": "3.2.45",
-          "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
-          "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
-          "dev": true,
-          "requires": {
-            "@babel/parser": "^7.16.4",
-            "@vue/compiler-core": "3.2.45",
-            "@vue/compiler-dom": "3.2.45",
-            "@vue/compiler-ssr": "3.2.45",
-            "@vue/reactivity-transform": "3.2.45",
-            "@vue/shared": "3.2.45",
-            "estree-walker": "^2.0.2",
-            "magic-string": "^0.25.7",
-            "postcss": "^8.1.10",
-            "source-map": "^0.6.1"
-          }
-        }
-      }
-    },
-    "vue-docgen-cli": {
-      "version": "4.34.4",
-      "resolved": "https://registry.npmjs.org/vue-docgen-cli/-/vue-docgen-cli-4.34.4.tgz",
-      "integrity": "sha512-G3+vwUX0v6IwHlVmp2fpmWnXnVHRHM+wbgEnpTslZTdSJgaidofcPZ5PHo1gQuDmGb+inCUCNJsfbgfEkSnVKg==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^3.4.3",
-        "globby": "^10.0.1",
-        "lodash.memoize": "4.1.2",
-        "minimist": "^1.2.0",
-        "mkdirp": "^0.5.1",
-        "prettier": "^1.18.2",
-        "vue-docgen-api": "^4.34.2"
-      }
-    },
-    "vue-hot-reload-api": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
-      "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
-      "dev": true
-    },
-    "vue-inbrowser-compiler-independent-utils": {
-      "version": "4.56.2",
-      "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz",
-      "integrity": "sha512-szE2vZDSkZlItq+K4MevgvCGKt5IzM6OkIjyCuj/09ty2akixeQGNFRXyDELMdmVVzmN+9nJn02YKnoPkhXHwA==",
-      "dev": true,
-      "requires": {}
-    },
-    "vue-loader": {
-      "version": "15.10.1",
-      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
-      "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
-      "dev": true,
-      "requires": {
-        "@vue/component-compiler-utils": "^3.1.0",
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.1.0",
-        "vue-hot-reload-api": "^2.3.0",
-        "vue-style-loader": "^4.1.0"
-      }
-    },
-    "vue-router": {
-      "version": "3.6.5",
-      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz",
-      "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==",
-      "dev": true
-    },
-    "vue-server-renderer": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz",
-      "integrity": "sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.1.2",
-        "hash-sum": "^2.0.0",
-        "he": "^1.2.0",
-        "lodash.template": "^4.5.0",
-        "lodash.uniq": "^4.5.0",
-        "resolve": "^1.22.0",
-        "serialize-javascript": "^6.0.0",
-        "source-map": "0.5.6"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "hash-sum": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
-          "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
-          "dev": true
-        },
-        "serialize-javascript": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-          "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-          "dev": true,
-          "requires": {
-            "randombytes": "^2.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.6",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-          "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "vue-style-loader": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
-      "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==",
-      "dev": true,
-      "requires": {
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.0.2"
-      }
-    },
-    "vue-telescope-expo": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/vue-telescope-expo/-/vue-telescope-expo-1.0.1.tgz",
-      "integrity": "sha512-p70ooNnAGHaEYysJH+Gh+Ig8dIF9nHcKRCzYc9eJ1nVCJPehUuMq6lOq3dyBawr3vMDsDNyVVxYxH5RK0waA7Q==",
-      "requires": {}
-    },
-    "vue-template-compiler": {
-      "version": "2.7.14",
-      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
-      "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
-      "dev": true,
-      "requires": {
-        "de-indent": "^1.0.2",
-        "he": "^1.2.0"
-      }
-    },
-    "vue-template-es2015-compiler": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
-      "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
-      "dev": true
-    },
-    "vuepress": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-1.5.2.tgz",
-      "integrity": "sha512-buscwFfIqvCcUAaRdbBWENmCSBZzr510fch1BhQZwVaQy28mF8H6Mvb+UDdwHQ7jon0d9qauXs9M0k4XHIWviw==",
-      "dev": true,
-      "requires": {
-        "@vuepress/core": "1.5.2",
-        "@vuepress/theme-default": "1.5.2",
-        "cac": "^6.5.6",
-        "envinfo": "^7.2.0",
-        "opencollective-postinstall": "^2.0.2",
-        "update-notifier": "^4.0.0"
-      }
-    },
-    "vuepress-html-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==",
-      "dev": true,
-      "requires": {
-        "html-minifier": "^3.2.3",
-        "loader-utils": "^0.2.16",
-        "lodash": "^4.17.3",
-        "pretty-error": "^2.0.2",
-        "tapable": "^1.0.0",
-        "toposort": "^1.0.0",
-        "util.promisify": "1.0.0"
-      },
-      "dependencies": {
-        "big.js": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
-          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
-          "dev": true
-        },
-        "emojis-list": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-          "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
-          "dev": true
-        },
-        "json5": {
-          "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-          "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
-          "dev": true
-        },
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==",
-          "dev": true,
-          "requires": {
-            "big.js": "^3.1.3",
-            "emojis-list": "^2.0.0",
-            "json5": "^0.5.0",
-            "object-assign": "^4.0.1"
-          }
-        },
-        "util.promisify": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
-          "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
-          "dev": true,
-          "requires": {
-            "define-properties": "^1.1.2",
-            "object.getownpropertydescriptors": "^2.0.3"
-          }
-        }
-      }
-    },
-    "vuepress-plugin-container": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz",
-      "integrity": "sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==",
-      "dev": true,
-      "requires": {
-        "@vuepress/shared-utils": "^1.2.0",
-        "markdown-it-container": "^2.0.0"
-      }
-    },
-    "vuepress-plugin-demo-block": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-demo-block/-/vuepress-plugin-demo-block-0.7.2.tgz",
-      "integrity": "sha512-0k7z7bTjXoXgdAMVFIVn3RFSQpKOM0yvD0hf/CA0gMCLBih77mCALtEpH9b+bEvijHmLLIq+BUtS2TQHXpkbNA==",
-      "dev": true
-    },
-    "vuepress-plugin-smooth-scroll": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz",
-      "integrity": "sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==",
-      "dev": true,
-      "requires": {
-        "smoothscroll-polyfill": "^0.4.3"
-      }
-    },
-    "watchpack": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-      "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "chokidar": "^2.1.8"
-      },
-      "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true,
-          "optional": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "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"
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-          "dev": true,
-          "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"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": true,
-          "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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "dev": true,
-      "requires": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "webpack": {
-      "version": "4.46.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
-      "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
-      "dev": true,
-      "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.5.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",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-          "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-          "dev": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": 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"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": 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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "webpack-chain": {
-      "version": "6.5.1",
-      "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
-      "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
-      "dev": true,
-      "requires": {
-        "deepmerge": "^1.5.2",
-        "javascript-stringify": "^2.0.1"
-      }
-    },
-    "webpack-dev-middleware": {
-      "version": "3.7.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
-      "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
-      "dev": true,
-      "requires": {
-        "memory-fs": "^0.4.1",
-        "mime": "^2.4.4",
-        "mkdirp": "^0.5.1",
-        "range-parser": "^1.2.1",
-        "webpack-log": "^2.0.0"
-      }
-    },
-    "webpack-dev-server": {
-      "version": "3.11.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
-      "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
-      "dev": true,
-      "requires": {
-        "ansi-html-community": "0.0.8",
-        "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",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-          "dev": true
-        },
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-              "dev": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": 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"
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-          "dev": 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"
-          }
-        },
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "define-property": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-          "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.2",
-            "isobject": "^3.0.1"
-          }
-        },
-        "eventsource": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
-          "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
-          "dev": true
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-absolute-url": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-          "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-          "dev": true
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-          "dev": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": 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"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-              "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-              "dev": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            }
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
-        "sockjs-client": {
-          "version": "1.6.1",
-          "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
-          "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
-          "dev": true,
-          "requires": {
-            "debug": "^3.2.7",
-            "eventsource": "^2.0.2",
-            "faye-websocket": "^0.11.4",
-            "inherits": "^2.0.4",
-            "url-parse": "^1.5.10"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.2.7",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-              "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-              "dev": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            }
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
-    },
-    "webpack-log": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-      "dev": true,
-      "requires": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "webpack-merge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
-      "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.15"
-      }
-    },
-    "webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-      "dev": true,
-      "requires": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      }
-    },
-    "webpackbar": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-3.2.0.tgz",
-      "integrity": "sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^4.1.0",
-        "chalk": "^2.4.1",
-        "consola": "^2.6.0",
-        "figures": "^3.0.0",
-        "pretty-time": "^1.1.0",
-        "std-env": "^2.2.1",
-        "text-table": "^0.2.0",
-        "wrap-ansi": "^5.1.0"
-      }
-    },
-    "websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "dev": true,
-      "requires": {
-        "http-parser-js": ">=0.5.1",
-        "safe-buffer": ">=5.1.0",
-        "websocket-extensions": ">=0.1.1"
-      }
-    },
-    "websocket-extensions": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
-      "dev": true
-    },
-    "when": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
-      "dev": true
-    },
-    "which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "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",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
-      "dev": true
-    },
-    "widest-line": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
-      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
-      "dev": true,
-      "requires": {
-        "string-width": "^4.0.0"
-      }
-    },
-    "with": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
-      "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.9.6",
-        "@babel/types": "^7.9.6",
-        "assert-never": "^1.2.1",
-        "babel-walk": "3.0.0-canary-5"
-      }
-    },
-    "worker-farm": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
-      "dev": true,
-      "requires": {
-        "errno": "~0.1.7"
-      }
-    },
-    "wrap-ansi": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.0",
-        "string-width": "^3.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
-    },
-    "write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "dev": true,
-      "requires": {
-        "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
-      }
-    },
-    "ws": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
-      "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
-      "dev": true,
-      "requires": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "xdg-basedir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
-      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "dev": true
-    },
-    "y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
-      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-      "dev": true
-    },
-    "yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
-      "dev": true
-    },
-    "yargs": {
-      "version": "13.3.2",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
-      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "yargs-parser": {
-      "version": "13.1.2",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        }
-      }
-    },
-    "zepto": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz",
-      "integrity": "sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==",
-      "dev": true
-    }
-  }
-}
diff --git a/packages/docs/package.json b/packages/docs/package.json
deleted file mode 100644
index a0668ba13..000000000
--- a/packages/docs/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "name": "@oruga-ui/docs",
-  "version": "0.7.0",
-  "homepage": "https://oruga.io",
-  "description": "UI components for Vue.js and CSS framework agnostic",
-  "author": "Walter Tommasi <tommsi20@gmail.com>",
-  "license": "MIT",
-  "scripts": {
-    "docs:dev": "npm link @oruga-ui/oruga && concurrently \"vue-docgen --watch\" \"vuepress dev --host 0.0.0.0\"",
-    "docs:build": "vuepress build",
-    "docs:hacktoberfest": "wget -O ./.vuepress/public/hfrepos.json https://api.github.com/search/repositories?q=topic:hacktoberfest+org:oruga-ui > hfrepos.json"
-  },
-  "devDependencies": {
-    "@fortawesome/fontawesome-svg-core": "1.2.28",
-    "@fortawesome/free-solid-svg-icons": "5.13.0",
-    "@fortawesome/vue-fontawesome": "0.1.9",
-    "@vuepress/plugin-google-analytics": "1.5.2",
-    "concurrently": "5.2.0",
-    "markdown-it-include": "1.1.1",
-    "sockjs-client": "1.4.0",
-    "vue-docgen-cli": "4.34.4",
-    "vuepress": "1.5.2",
-    "vuepress-plugin-demo-block": "0.7.2"
-  },
-  "resolutions": {
-    "watchpack": "1.6.1"
-  },
-  "dependencies": {
-    "vue-telescope-expo": "^1.0.0"
-  }
-}
\ No newline at end of file
diff --git a/packages/oruga/.browserslistrc b/packages/oruga/.browserslistrc
deleted file mode 100644
index 214388fe4..000000000
--- a/packages/oruga/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead
diff --git a/packages/oruga/.eslintrc.js b/packages/oruga/.eslintrc.js
deleted file mode 100644
index 395a16aa4..000000000
--- a/packages/oruga/.eslintrc.js
+++ /dev/null
@@ -1,41 +0,0 @@
-module.exports = {
-  root: true,
-  env: {
-    node: true,
-    jest: true
-  },
-  extends: [
-    'plugin:vue/essential',
-    'eslint:recommended'
-  ],
-  parserOptions: {
-    ecmaVersion: 2020
-  },
-  rules: {
-    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'prefer-rest-params': 'off',
-    'vue/no-v-for-template-key-on-child': 'off',
-    'vue/valid-v-for': 'off',
-    'vue/require-v-for-key': 'off',
-    'vue/no-v-for-template-key': 'off',
-    'vue/no-template-key': 'off',
-    'vue/comment-directive': 'off',
-    'vue/custom-event-name-casing': 'off',
-    'vue/no-reserved-keys': 'warn',
-  },
-  overrides: [
-    {
-      files: ["*.spec.js"],
-      rules: {
-        'require-atomic-updates': 'off'
-      }
-    },
-    {
-      files: ["*.md"],
-      rules: {
-        'semi': ['error', 'never'],
-      }
-    },
-  ]
-}
diff --git a/packages/oruga/.gitignore b/packages/oruga/.gitignore
deleted file mode 100644
index 7983440f1..000000000
--- a/packages/oruga/.gitignore
+++ /dev/null
@@ -1,22 +0,0 @@
-.DS_Store
-node_modules
-/dist
-/coverage
-
-# local env files
-.env.local
-.env.*.local
-
-# Log files
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/packages/oruga/__mocks__/matchMediaMock.js b/packages/oruga/__mocks__/matchMediaMock.js
deleted file mode 100644
index c1bf552c5..000000000
--- a/packages/oruga/__mocks__/matchMediaMock.js
+++ /dev/null
@@ -1,10 +0,0 @@
-window.matchMedia = jest.fn().mockImplementation((query) => ({
-    matches: false,
-    media: query,
-    onchange: null,
-    addListener: jest.fn(), // deprecated
-    removeListener: jest.fn(), // deprecated
-    addEventListener: jest.fn(),
-    removeEventListener: jest.fn(),
-    dispatchEvent: jest.fn(),
-}))
diff --git a/packages/oruga/babel.config.js b/packages/oruga/babel.config.js
deleted file mode 100644
index c76a0d028..000000000
--- a/packages/oruga/babel.config.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
-  presets: [
-    [
-      '@babel/preset-env',
-      {
-        targets: {
-          node: 'current'
-        }
-      }
-    ]
-  ]
-}
diff --git a/packages/oruga/build/banner.js b/packages/oruga/build/banner.js
deleted file mode 100644
index 5075fdc89..000000000
--- a/packages/oruga/build/banner.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const pack = require('../package.json')
-const bannerText = require('./bannertext')
-
-const bannerTxt = bannerText.generate(pack.version)
-
-process.stdout.write(bannerTxt)
-process.stdin.pipe(process.stdout)
diff --git a/packages/oruga/build/bannertext.js b/packages/oruga/build/bannertext.js
deleted file mode 100644
index 6f2384bb5..000000000
--- a/packages/oruga/build/bannertext.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const generate = function (version) {
-
-    const preview_build = process.env.ORUGA_PREVIEW_BUILD
-
-    if (preview_build) {
-        version = `${version} (build ${preview_build})`
-    }
-
-    return `/*! Oruga v${version} | MIT License | github.com/oruga-ui/oruga */\n`
-}
-
-module.exports.generate = generate
diff --git a/packages/oruga/jest.config.js b/packages/oruga/jest.config.js
deleted file mode 100644
index 6da87db4b..000000000
--- a/packages/oruga/jest.config.js
+++ /dev/null
@@ -1,31 +0,0 @@
-module.exports = {
-  preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel',
-  roots: [
-    '<rootDir>/src'
-  ],
-  testMatch: [
-    '<rootDir>/src/components/**/*.spec.[jt]s?(x)',
-    '<rootDir>/src/utils/*.spec.[jt]s?(x)'
-  ],
-  moduleFileExtensions: [
-      'js',
-      'vue'
-  ],
-  transform: {
-      '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
-      '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
-  },
-  moduleNameMapper: {
-      '^@components/(.*)$': '<rootDir>/src/components/$1',
-      '^@utils/(.*)$': '<rootDir>/src/utils/$1'
-  },
-  snapshotSerializers: [
-      '<rootDir>/node_modules/jest-serializer-vue'
-  ],
-  setupFiles: [
-      '<rootDir>/__mocks__/matchMediaMock.js'
-  ],
-  coverageDirectory: './coverage/',
-  collectCoverage: true,
-  testURL: 'http://localhost/'
-}
diff --git a/packages/oruga/nuxt/index.js b/packages/oruga/nuxt/index.js
deleted file mode 100644
index d4f63c741..000000000
--- a/packages/oruga/nuxt/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const { resolve } = require('path')
-
-// --- Main Nuxt.js module ---
-module.exports = function nuxtOruga(moduleOptions = {}) {
-  this.nuxt.hook('build:before', () => {
-
-    const options = Object.assign({}, this.options.oruga, moduleOptions)
-
-    // Add css
-    if (options.includeCss === 'vars') {
-        this.options.css.unshift('@oruga-ui/oruga/dist/oruga-full-vars.css');
-    }
-    else if (options.includeCss === 'full') {
-        this.options.css.unshift('@oruga-ui/oruga/dist/oruga-full.css');
-    }
-    else if (options.includeCss !== false) {
-        this.options.css.unshift('@oruga-ui/oruga/dist/oruga.css');
-    }
-
-    // Register plugin
-    this.addPlugin({
-        src: resolve(__dirname, 'plugin.template.js'),
-        fileName: 'oruga.js',
-        options
-    })
-  })
-}
-
-module.exports.meta = require(__dirname, '../package.json')
diff --git a/packages/oruga/nuxt/plugin.template.js b/packages/oruga/nuxt/plugin.template.js
deleted file mode 100644
index f3211088b..000000000
--- a/packages/oruga/nuxt/plugin.template.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import Vue from 'vue'
-import Oruga from '@oruga-ui/oruga'
-
-Vue.use(Oruga, <%= JSON.stringify(options, null, 2) %>)
\ No newline at end of file
diff --git a/packages/oruga/package-lock.json b/packages/oruga/package-lock.json
deleted file mode 100644
index 5c835473d..000000000
--- a/packages/oruga/package-lock.json
+++ /dev/null
@@ -1,33813 +0,0 @@
-{
-  "name": "@oruga-ui/oruga",
-  "version": "0.7.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "@oruga-ui/oruga",
-      "version": "0.7.0",
-      "license": "MIT",
-      "devDependencies": {
-        "@babel/core": "7.10.2",
-        "@babel/preset-env": "7.10.2",
-        "@rollup/plugin-babel": "5.0.2",
-        "@rollup/plugin-commonjs": "12.0.0",
-        "@rollup/plugin-node-resolve": "8.0.0",
-        "@rollup/plugin-replace": "2.3.2",
-        "@types/jest": "24.0.19",
-        "@typescript-eslint/eslint-plugin": "2.26.0",
-        "@typescript-eslint/parser": "2.26.0",
-        "@vue/cli-plugin-babel": "4.3.0",
-        "@vue/cli-plugin-eslint": "4.3.0",
-        "@vue/cli-plugin-typescript": "4.3.0",
-        "@vue/cli-plugin-unit-jest": "4.3.0",
-        "@vue/cli-service": "4.3.0",
-        "@vue/eslint-config-typescript": "5.0.2",
-        "@vue/test-utils": "1.0.0-beta.31",
-        "clean-css-cli": "4.3.0",
-        "codecov": "3.7.2",
-        "concurrently": "5.2.0",
-        "core-js": "3.6.5",
-        "cross-env": "7.0.3",
-        "eslint": "6.7.2",
-        "eslint-plugin-vue": "6.2.2",
-        "full-icu": "1.3.1",
-        "jest-serializer-vue": "0.3.0",
-        "rollup": "2.12.0",
-        "rollup-copy-plugin": "0.1.0",
-        "rollup-plugin-terser": "6.1.0",
-        "rollup-plugin-vue": "5.1.9",
-        "sass": "1.27.0",
-        "sinon": "9.0.3",
-        "typescript": "3.8.3",
-        "vue": "2.6.11",
-        "vue-class-component": "7.2.3",
-        "vue-property-decorator": "8.4.1",
-        "vue-template-compiler": "2.6.11"
-      },
-      "peerDependencies": {
-        "vue": "^2.6.11"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.22.13",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
-      "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/highlight": "^7.22.13",
-        "chalk": "^2.4.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/compat-data": {
-      "version": "7.15.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.10.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.10.1",
-        "@babel/generator": "^7.10.2",
-        "@babel/helper-module-transforms": "^7.10.1",
-        "@babel/helpers": "^7.10.1",
-        "@babel/parser": "^7.10.2",
-        "@babel/template": "^7.10.1",
-        "@babel/traverse": "^7.10.1",
-        "@babel/types": "^7.10.2",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.1",
-        "json5": "^2.1.2",
-        "lodash": "^4.17.13",
-        "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/generator": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
-      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.23.0",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "@jridgewell/trace-mapping": "^0.3.17",
-        "jsesc": "^2.5.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-explode-assignable-expression": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.15.0",
-        "@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",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/helper-member-expression-to-functions": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-environment-visitor": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
-      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-explode-assignable-expression": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-function-name": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
-      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/template": "^7.22.15",
-        "@babel/types": "^7.23.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-hoist-variables": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
-      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.22.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.15.4",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-simple-access": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4",
-        "@babel/helper-validator-identifier": "^7.14.9",
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.14.5",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-wrap-function": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-member-expression-to-functions": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-split-export-declaration": {
-      "version": "7.22.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
-      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.22.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-option": {
-      "version": "7.14.5",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-wrap-function": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/highlight": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
-      "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
-      "dev": true,
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4",
-        "@babel/plugin-proposal-optional-chaining": "^7.14.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.13.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-remap-async-to-generator": "^7.15.4",
-        "@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",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-decorators": "^7.14.5"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-dynamic-import": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.15.0",
-        "@babel/helper-compilation-targets": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.15.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.3",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4",
-        "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-for-of": {
-      "version": "7.15.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-simple-access": "^7.15.4",
-        "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.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-hoist-variables": "^7.15.4",
-        "@babel/helper-module-transforms": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-validator-identifier": "^7.14.9",
-        "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",
-      "dev": true,
-      "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.9",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-regenerator": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "babel-plugin-polyfill-corejs2": "^0.2.2",
-        "babel-plugin-polyfill-corejs3": "^0.2.2",
-        "babel-plugin-polyfill-regenerator": "^0.2.2",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-escapes": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.10.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.10.1",
-        "@babel/helper-compilation-targets": "^7.10.2",
-        "@babel/helper-module-imports": "^7.10.1",
-        "@babel/helper-plugin-utils": "^7.10.1",
-        "@babel/plugin-proposal-async-generator-functions": "^7.10.1",
-        "@babel/plugin-proposal-class-properties": "^7.10.1",
-        "@babel/plugin-proposal-dynamic-import": "^7.10.1",
-        "@babel/plugin-proposal-json-strings": "^7.10.1",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1",
-        "@babel/plugin-proposal-numeric-separator": "^7.10.1",
-        "@babel/plugin-proposal-object-rest-spread": "^7.10.1",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.10.1",
-        "@babel/plugin-proposal-optional-chaining": "^7.10.1",
-        "@babel/plugin-proposal-private-methods": "^7.10.1",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.10.1",
-        "@babel/plugin-syntax-async-generators": "^7.8.0",
-        "@babel/plugin-syntax-class-properties": "^7.10.1",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
-        "@babel/plugin-syntax-json-strings": "^7.8.0",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.1",
-        "@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.10.1",
-        "@babel/plugin-transform-arrow-functions": "^7.10.1",
-        "@babel/plugin-transform-async-to-generator": "^7.10.1",
-        "@babel/plugin-transform-block-scoped-functions": "^7.10.1",
-        "@babel/plugin-transform-block-scoping": "^7.10.1",
-        "@babel/plugin-transform-classes": "^7.10.1",
-        "@babel/plugin-transform-computed-properties": "^7.10.1",
-        "@babel/plugin-transform-destructuring": "^7.10.1",
-        "@babel/plugin-transform-dotall-regex": "^7.10.1",
-        "@babel/plugin-transform-duplicate-keys": "^7.10.1",
-        "@babel/plugin-transform-exponentiation-operator": "^7.10.1",
-        "@babel/plugin-transform-for-of": "^7.10.1",
-        "@babel/plugin-transform-function-name": "^7.10.1",
-        "@babel/plugin-transform-literals": "^7.10.1",
-        "@babel/plugin-transform-member-expression-literals": "^7.10.1",
-        "@babel/plugin-transform-modules-amd": "^7.10.1",
-        "@babel/plugin-transform-modules-commonjs": "^7.10.1",
-        "@babel/plugin-transform-modules-systemjs": "^7.10.1",
-        "@babel/plugin-transform-modules-umd": "^7.10.1",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
-        "@babel/plugin-transform-new-target": "^7.10.1",
-        "@babel/plugin-transform-object-super": "^7.10.1",
-        "@babel/plugin-transform-parameters": "^7.10.1",
-        "@babel/plugin-transform-property-literals": "^7.10.1",
-        "@babel/plugin-transform-regenerator": "^7.10.1",
-        "@babel/plugin-transform-reserved-words": "^7.10.1",
-        "@babel/plugin-transform-shorthand-properties": "^7.10.1",
-        "@babel/plugin-transform-spread": "^7.10.1",
-        "@babel/plugin-transform-sticky-regex": "^7.10.1",
-        "@babel/plugin-transform-template-literals": "^7.10.1",
-        "@babel/plugin-transform-typeof-symbol": "^7.10.1",
-        "@babel/plugin-transform-unicode-escapes": "^7.10.1",
-        "@babel/plugin-transform-unicode-regex": "^7.10.1",
-        "@babel/preset-modules": "^0.1.3",
-        "@babel/types": "^7.10.2",
-        "browserslist": "^4.12.0",
-        "core-js-compat": "^3.6.2",
-        "invariant": "^2.2.2",
-        "levenary": "^1.1.1",
-        "semver": "^5.5.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/preset-modules": {
-      "version": "0.1.4",
-      "dev": true,
-      "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/runtime": {
-      "version": "7.15.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "regenerator-runtime": "^0.13.4"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.22.15",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
-      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/parser": "^7.22.15",
-        "@babel/types": "^7.22.15"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.23.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
-      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/generator": "^7.23.0",
-        "@babel/helper-environment-visitor": "^7.22.20",
-        "@babel/helper-function-name": "^7.23.0",
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/parser": "^7.23.0",
-        "@babel/types": "^7.23.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/types": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "to-fast-properties": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@cnakazawa/watch": {
-      "version": "1.0.4",
-      "dev": true,
-      "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/@hapi/address": {
-      "version": "2.1.4",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@hapi/bourne": {
-      "version": "1.3.2",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@hapi/hoek": {
-      "version": "8.5.1",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@hapi/joi": {
-      "version": "15.1.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@hapi/hoek": "^8.3.0"
-      }
-    },
-    "node_modules/@intervolga/optimize-cssnano-plugin": {
-      "version": "1.0.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cssnano": "^4.0.0",
-        "cssnano-preset-default": "^4.0.0",
-        "postcss": "^7.0.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/@jest/console": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/source-map": "^24.9.0",
-        "chalk": "^2.0.1",
-        "slash": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/core": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/console": "^24.7.1",
-        "@jest/reporters": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "ansi-escapes": "^3.0.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.1.15",
-        "jest-changed-files": "^24.9.0",
-        "jest-config": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-resolve-dependencies": "^24.9.0",
-        "jest-runner": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "jest-watcher": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "p-each-series": "^1.0.0",
-        "realpath-native": "^1.1.0",
-        "rimraf": "^2.5.4",
-        "slash": "^2.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/core/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/core/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/core/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/core/node_modules/ansi-escapes": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@jest/core/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@jest/core/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@jest/environment": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/environment/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/environment/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/environment/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/fake-timers": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-mock": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/fake-timers/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/fake-timers/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/fake-timers/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/reporters": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "glob": "^7.1.2",
-        "istanbul-lib-coverage": "^2.0.2",
-        "istanbul-lib-instrument": "^3.0.1",
-        "istanbul-lib-report": "^2.0.4",
-        "istanbul-lib-source-maps": "^3.0.1",
-        "istanbul-reports": "^2.2.6",
-        "jest-haste-map": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.6.0",
-        "node-notifier": "^5.4.2",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.0",
-        "string-length": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/reporters/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/reporters/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/reporters/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/reporters/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@jest/source-map": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^3.0.0",
-        "graceful-fs": "^4.1.15",
-        "source-map": "^0.6.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/source-map/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@jest/test-result": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/console": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/istanbul-lib-coverage": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/test-result/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/test-result/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/test-result/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/test-sequencer": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/test-result": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-runner": "^24.9.0",
-        "jest-runtime": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/transform": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.1.0",
-        "@jest/types": "^24.9.0",
-        "babel-plugin-istanbul": "^5.1.0",
-        "chalk": "^2.0.1",
-        "convert-source-map": "^1.4.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "graceful-fs": "^4.1.15",
-        "jest-haste-map": "^24.9.0",
-        "jest-regex-util": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "pirates": "^4.0.1",
-        "realpath-native": "^1.1.0",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.1",
-        "write-file-atomic": "2.4.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/transform/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@jest/transform/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@jest/transform/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@jest/transform/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@jest/types": {
-      "version": "27.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^16.0.0",
-        "chalk": "^4.0.0"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/@jest/types/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/@jest/types/node_modules/chalk": {
-      "version": "4.1.2",
-      "dev": true,
-      "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/@jest/types/node_modules/color-convert": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/@jest/types/node_modules/color-name": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@jest/types/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@jest/types/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
-      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
-      "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.4.15",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
-      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
-      "dev": true
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
-      "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "node_modules/@mrmlnc/readdir-enhanced": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-me-maybe": "^1.0.1",
-        "glob-to-regexp": "^0.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@rollup/plugin-babel": {
-      "version": "5.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.7.4",
-        "@rollup/pluginutils": "^3.0.8"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "rollup": "^1.20.0||^2.0.0"
-      }
-    },
-    "node_modules/@rollup/plugin-commonjs": {
-      "version": "12.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@rollup/pluginutils": "^3.0.8",
-        "commondir": "^1.0.1",
-        "estree-walker": "^1.0.1",
-        "glob": "^7.1.2",
-        "is-reference": "^1.1.2",
-        "magic-string": "^0.25.2",
-        "resolve": "^1.11.0"
-      },
-      "engines": {
-        "node": ">= 8.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.3.4"
-      }
-    },
-    "node_modules/@rollup/plugin-node-resolve": {
-      "version": "8.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@rollup/pluginutils": "^3.0.8",
-        "@types/resolve": "0.0.8",
-        "builtin-modules": "^3.1.0",
-        "deep-freeze": "^0.0.1",
-        "deepmerge": "^4.2.2",
-        "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.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@rollup/pluginutils": "^3.0.8",
-        "magic-string": "^0.25.5"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0 || ^2.0.0"
-      }
-    },
-    "node_modules/@rollup/pluginutils": {
-      "version": "3.1.0",
-      "dev": true,
-      "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/@sinonjs/commons": {
-      "version": "1.8.3",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "type-detect": "4.0.8"
-      }
-    },
-    "node_modules/@sinonjs/fake-timers": {
-      "version": "6.0.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.7.0"
-      }
-    },
-    "node_modules/@sinonjs/formatio": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1",
-        "@sinonjs/samsam": "^5.0.2"
-      }
-    },
-    "node_modules/@sinonjs/samsam": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.6.0",
-        "lodash.get": "^4.4.2",
-        "type-detect": "^4.0.8"
-      }
-    },
-    "node_modules/@sinonjs/text-encoding": {
-      "version": "0.7.1",
-      "dev": true,
-      "license": "(Unlicense OR Apache-2.0)"
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin": {
-      "version": "1.8.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "error-stack-parser": "^2.0.2",
-        "string-width": "^2.0.0",
-        "strip-ansi": "^5"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@soda/get-current-script": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@tootallnate/once": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@types/babel__core": {
-      "version": "7.1.16",
-      "dev": true,
-      "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.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "node_modules/@types/babel__template": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "node_modules/@types/babel__traverse": {
-      "version": "7.14.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.3.0"
-      }
-    },
-    "node_modules/@types/eslint-visitor-keys": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/estree": {
-      "version": "0.0.39",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/glob": {
-      "version": "7.1.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/istanbul-lib-coverage": {
-      "version": "2.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/istanbul-lib-report": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*"
-      }
-    },
-    "node_modules/@types/istanbul-reports": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@types/jest": {
-      "version": "24.0.19",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/jest-diff": "*"
-      }
-    },
-    "node_modules/@types/jest-diff": {
-      "version": "24.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "jest-diff": "*"
-      }
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.9",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/minimatch": {
-      "version": "3.0.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/node": {
-      "version": "16.9.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/normalize-package-data": {
-      "version": "2.4.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/q": {
-      "version": "1.5.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/resolve": {
-      "version": "0.0.8",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/stack-utils": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/strip-bom": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/strip-json-comments": {
-      "version": "0.0.30",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/webpack-env": {
-      "version": "1.16.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@types/yargs": {
-      "version": "16.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@types/yargs-parser": {
-      "version": "20.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "2.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@typescript-eslint/experimental-utils": "2.26.0",
-        "functional-red-black-tree": "^1.0.1",
-        "regexpp": "^3.0.0",
-        "tsutils": "^3.17.1"
-      },
-      "engines": {
-        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/parser": "^2.0.0",
-        "eslint": "^5.0.0 || ^6.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/experimental-utils": {
-      "version": "2.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.3",
-        "@typescript-eslint/typescript-estree": "2.26.0",
-        "eslint-scope": "^5.0.0",
-        "eslint-utils": "^2.0.0"
-      },
-      "engines": {
-        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "*"
-      }
-    },
-    "node_modules/@typescript-eslint/parser": {
-      "version": "2.26.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "@types/eslint-visitor-keys": "^1.0.0",
-        "@typescript-eslint/experimental-utils": "2.26.0",
-        "@typescript-eslint/typescript-estree": "2.26.0",
-        "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"
-      },
-      "peerDependencies": {
-        "eslint": "^5.0.0 || ^6.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "2.26.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "debug": "^4.1.1",
-        "eslint-visitor-keys": "^1.1.0",
-        "glob": "^7.1.6",
-        "is-glob": "^4.0.1",
-        "lodash": "^4.17.15",
-        "semver": "^6.3.0",
-        "tsutils": "^3.17.1"
-      },
-      "engines": {
-        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@vue/babel-helper-vue-jsx-merge-props": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/babel-helper-vue-transform-on": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/babel-plugin-jsx": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "@vue/babel-helper-vue-transform-on": "^1.0.2",
-        "camelcase": "^6.0.0",
-        "html-tags": "^3.1.0",
-        "svg-tags": "^1.0.0"
-      }
-    },
-    "node_modules/@vue/babel-plugin-transform-vue-jsx": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "html-tags": "^2.0.0",
-        "lodash.kebabcase": "^4.1.1",
-        "svg-tags": "^1.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vue/babel-preset-app": {
-      "version": "4.5.13",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.11.0",
-        "@babel/helper-compilation-targets": "^7.9.6",
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/plugin-proposal-class-properties": "^7.8.3",
-        "@babel/plugin-proposal-decorators": "^7.8.3",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-jsx": "^7.8.3",
-        "@babel/plugin-transform-runtime": "^7.11.0",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.0",
-        "@vue/babel-plugin-jsx": "^1.0.3",
-        "@vue/babel-preset-jsx": "^1.2.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3",
-        "core-js": "^3.6.5",
-        "core-js-compat": "^3.6.5",
-        "semver": "^6.1.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "*",
-        "core-js": "^3",
-        "vue": "^2 || ^3.0.0-0"
-      },
-      "peerDependenciesMeta": {
-        "core-js": {
-          "optional": true
-        },
-        "vue": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/babel-preset-app/node_modules/@babel/core": {
-      "version": "7.15.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.14.5",
-        "@babel/generator": "^7.15.4",
-        "@babel/helper-compilation-targets": "^7.15.4",
-        "@babel/helper-module-transforms": "^7.15.4",
-        "@babel/helpers": "^7.15.4",
-        "@babel/parser": "^7.15.5",
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4",
-        "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/@vue/babel-preset-app/node_modules/@babel/preset-env": {
-      "version": "7.15.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.15.0",
-        "@babel/helper-compilation-targets": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-validator-option": "^7.14.5",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4",
-        "@babel/plugin-proposal-async-generator-functions": "^7.15.4",
-        "@babel/plugin-proposal-class-properties": "^7.14.5",
-        "@babel/plugin-proposal-class-static-block": "^7.15.4",
-        "@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.15.6",
-        "@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.15.4",
-        "@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.15.3",
-        "@babel/plugin-transform-classes": "^7.15.4",
-        "@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.15.4",
-        "@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.15.4",
-        "@babel/plugin-transform-modules-systemjs": "^7.15.4",
-        "@babel/plugin-transform-modules-umd": "^7.14.5",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9",
-        "@babel/plugin-transform-new-target": "^7.14.5",
-        "@babel/plugin-transform-object-super": "^7.14.5",
-        "@babel/plugin-transform-parameters": "^7.15.4",
-        "@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.15.6",
-        "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.16.0",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-preset-app/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@vue/babel-preset-jsx": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
-        "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
-        "@vue/babel-sugar-functional-vue": "^1.2.2",
-        "@vue/babel-sugar-inject-h": "^1.2.2",
-        "@vue/babel-sugar-v-model": "^1.2.3",
-        "@vue/babel-sugar-v-on": "^1.2.3"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-composition-api-inject-h": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-composition-api-render-instance": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-functional-vue": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-inject-h": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model": {
-      "version": "1.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "camelcase": "^5.0.0",
-        "html-tags": "^2.0.0",
-        "svg-tags": "^1.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-on": {
-      "version": "1.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "camelcase": "^5.0.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@vue/cli-overlay": {
-      "version": "4.5.13",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/cli-plugin-babel": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.9.0",
-        "@vue/babel-preset-app": "^4.3.0",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "babel-loader": "^8.1.0",
-        "cache-loader": "^4.1.0",
-        "thread-loader": "^2.1.3",
-        "webpack": "^4.0.0"
-      },
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
-      }
-    },
-    "node_modules/@vue/cli-plugin-eslint": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/cli-shared-utils": "^4.3.0",
-        "eslint-loader": "^2.2.1",
-        "globby": "^9.2.0",
-        "inquirer": "^7.1.0",
-        "webpack": "^4.0.0",
-        "yorkie": "^2.0.0"
-      },
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0",
-        "eslint": ">= 1.6.0"
-      }
-    },
-    "node_modules/@vue/cli-plugin-router": {
-      "version": "4.5.13",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/cli-shared-utils": "^4.5.13"
-      },
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
-      }
-    },
-    "node_modules/@vue/cli-plugin-typescript": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/webpack-env": "^1.15.1",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "cache-loader": "^4.1.0",
-        "fork-ts-checker-webpack-plugin": "^3.1.1",
-        "globby": "^9.2.0",
-        "thread-loader": "^2.1.3",
-        "ts-loader": "^6.2.2",
-        "tslint": "^5.20.1",
-        "webpack": "^4.0.0",
-        "yorkie": "^2.0.0"
-      },
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0",
-        "typescript": ">=2"
-      }
-    },
-    "node_modules/@vue/cli-plugin-unit-jest": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.9.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.9.0",
-        "@types/jest": "^24.0.19",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "babel-core": "^7.0.0-bridge.0",
-        "babel-jest": "^24.9.0",
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
-        "deepmerge": "^4.2.2",
-        "jest": "^24.9.0",
-        "jest-environment-jsdom-fifteen": "^1.0.2",
-        "jest-serializer-vue": "^2.0.2",
-        "jest-transform-stub": "^2.0.0",
-        "jest-watch-typeahead": "^0.4.2",
-        "ts-jest": "^24.2.0",
-        "vue-jest": "^3.0.5"
-      },
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
-      }
-    },
-    "node_modules/@vue/cli-plugin-unit-jest/node_modules/jest-serializer-vue": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pretty": "2.0.0"
-      }
-    },
-    "node_modules/@vue/cli-plugin-vuex": {
-      "version": "4.5.13",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
-      }
-    },
-    "node_modules/@vue/cli-service": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@intervolga/optimize-cssnano-plugin": "^1.0.5",
-        "@soda/friendly-errors-webpack-plugin": "^1.7.1",
-        "@soda/get-current-script": "^1.0.0",
-        "@vue/cli-overlay": "^4.3.0",
-        "@vue/cli-plugin-router": "^4.3.0",
-        "@vue/cli-plugin-vuex": "^4.3.0",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "@vue/component-compiler-utils": "^3.0.2",
-        "@vue/preload-webpack-plugin": "^1.1.0",
-        "@vue/web-component-wrapper": "^1.2.0",
-        "acorn": "^7.1.0",
-        "acorn-walk": "^7.1.1",
-        "address": "^1.1.2",
-        "autoprefixer": "^9.7.5",
-        "browserslist": "^4.11.1",
-        "cache-loader": "^4.1.0",
-        "case-sensitive-paths-webpack-plugin": "^2.3.0",
-        "cli-highlight": "^2.1.4",
-        "clipboardy": "^2.3.0",
-        "cliui": "^6.0.0",
-        "copy-webpack-plugin": "^5.1.1",
-        "css-loader": "^3.4.2",
-        "cssnano": "^4.1.10",
-        "debug": "^4.1.1",
-        "default-gateway": "^5.0.5",
-        "dotenv": "^8.2.0",
-        "dotenv-expand": "^5.1.0",
-        "file-loader": "^4.2.0",
-        "fs-extra": "^7.0.1",
-        "globby": "^9.2.0",
-        "hash-sum": "^2.0.0",
-        "html-webpack-plugin": "^3.2.0",
-        "launch-editor-middleware": "^2.2.1",
-        "lodash.defaultsdeep": "^4.6.1",
-        "lodash.mapvalues": "^4.6.0",
-        "lodash.transform": "^4.6.0",
-        "mini-css-extract-plugin": "^0.9.0",
-        "minimist": "^1.2.5",
-        "pnp-webpack-plugin": "^1.6.4",
-        "portfinder": "^1.0.25",
-        "postcss-loader": "^3.0.0",
-        "ssri": "^7.1.0",
-        "terser-webpack-plugin": "^2.3.5",
-        "thread-loader": "^2.1.3",
-        "url-loader": "^2.2.0",
-        "vue-loader": "^15.9.1",
-        "vue-style-loader": "^4.1.2",
-        "webpack": "^4.0.0",
-        "webpack-bundle-analyzer": "^3.6.1",
-        "webpack-chain": "^6.4.0",
-        "webpack-dev-server": "^3.10.3",
-        "webpack-merge": "^4.2.2"
-      },
-      "bin": {
-        "vue-cli-service": "bin/vue-cli-service.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "peerDependencies": {
-        "vue-template-compiler": "^2.0.0"
-      },
-      "peerDependenciesMeta": {
-        "less-loader": {
-          "optional": true
-        },
-        "pug-plain-loader": {
-          "optional": true
-        },
-        "raw-loader": {
-          "optional": true
-        },
-        "sass-loader": {
-          "optional": true
-        },
-        "stylus-loader": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/acorn": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/acorn-walk": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/cacache": {
-      "version": "13.0.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "chownr": "^1.1.2",
-        "figgy-pudding": "^3.5.1",
-        "fs-minipass": "^2.0.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.2",
-        "infer-owner": "^1.0.4",
-        "lru-cache": "^5.1.1",
-        "minipass": "^3.0.0",
-        "minipass-collect": "^1.0.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "p-map": "^3.0.0",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.7.1",
-        "ssri": "^7.0.0",
-        "unique-filename": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/cliui": {
-      "version": "6.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/color-convert": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/color-name": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/cli-service/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/jest-worker": {
-      "version": "25.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 8.3"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/ssri": {
-      "version": "7.1.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "figgy-pudding": "^3.5.1",
-        "minipass": "^3.1.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/terser-webpack-plugin": {
-      "version": "2.3.8",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cacache": "^13.0.1",
-        "find-cache-dir": "^3.3.1",
-        "jest-worker": "^25.4.0",
-        "p-limit": "^2.3.0",
-        "schema-utils": "^2.6.6",
-        "serialize-javascript": "^4.0.0",
-        "source-map": "^0.6.1",
-        "terser": "^4.6.12",
-        "webpack-sources": "^1.4.3"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/@vue/cli-service/node_modules/wrap-ansi": {
-      "version": "6.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@vue/cli-shared-utils": {
-      "version": "4.5.13",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@hapi/joi": "^15.0.1",
-        "chalk": "^2.4.2",
-        "execa": "^1.0.0",
-        "launch-editor": "^2.2.1",
-        "lru-cache": "^5.1.1",
-        "node-ipc": "^9.1.1",
-        "open": "^6.3.0",
-        "ora": "^3.4.0",
-        "read-pkg": "^5.1.1",
-        "request": "^2.88.2",
-        "semver": "^6.1.0",
-        "strip-ansi": "^6.0.0"
-      }
-    },
-    "node_modules/@vue/cli-shared-utils/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@vue/component-compiler": {
-      "version": "4.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/component-compiler-utils": "^3.0.0",
-        "clean-css": "^4.1.11",
-        "hash-sum": "^1.0.2",
-        "postcss-modules-sync": "^1.0.0",
-        "source-map": "0.6.*"
-      },
-      "optionalDependencies": {
-        "less": "^3.9.0",
-        "pug": "^3.0.1",
-        "sass": "^1.18.0",
-        "stylus": "^0.54.5"
-      },
-      "peerDependencies": {
-        "postcss": ">=6.0",
-        "vue-template-compiler": "*"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "consolidate": "^0.15.1",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.2",
-        "merge-source-map": "^1.1.0",
-        "postcss": "^7.0.36",
-        "postcss-selector-parser": "^6.0.2",
-        "source-map": "~0.6.1",
-        "vue-template-es2015-compiler": "^1.9.0"
-      },
-      "optionalDependencies": {
-        "prettier": "^1.18.2"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vue/component-compiler-utils/node_modules/yallist": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/@vue/component-compiler/node_modules/hash-sum": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@vue/component-compiler/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@vue/eslint-config-typescript": {
-      "version": "5.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "vue-eslint-parser": "^7.0.0"
-      },
-      "peerDependencies": {
-        "@typescript-eslint/eslint-plugin": "^2.7.0",
-        "@typescript-eslint/parser": "^2.7.0",
-        "eslint": "^5.0.0 || ^6.0.0",
-        "eslint-plugin-vue": "^5.2.3 || ^6.0.0"
-      }
-    },
-    "node_modules/@vue/preload-webpack-plugin": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "peerDependencies": {
-        "html-webpack-plugin": ">=2.26.0",
-        "webpack": ">=4.0.0"
-      }
-    },
-    "node_modules/@vue/test-utils": {
-      "version": "1.0.0-beta.31",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "dom-event-types": "^1.0.0",
-        "lodash": "^4.17.15",
-        "pretty": "^2.0.0"
-      },
-      "peerDependencies": {
-        "vue": "2.x",
-        "vue-template-compiler": "^2.x"
-      }
-    },
-    "node_modules/@vue/web-component-wrapper": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-code-frame": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/wast-printer": "1.9.0"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-fsm": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/@webassemblyjs/helper-module-context": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.9.0"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.9.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/wasm-edit": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@xtuc/long": {
-      "version": "4.2.2",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/abab": {
-      "version": "2.0.5",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/accepts": {
-      "version": "1.3.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "6.4.2",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-globals": {
-      "version": "4.3.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^6.0.1",
-        "acorn-walk": "^6.0.1"
-      }
-    },
-    "node_modules/acorn-jsx": {
-      "version": "5.3.2",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/acorn-walk": {
-      "version": "6.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/address": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.12.0"
-      }
-    },
-    "node_modules/agent-base": {
-      "version": "6.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/aggregate-error": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.12.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": ">=5.0.0"
-      }
-    },
-    "node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/alphanum-sort": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ansi-colors": {
-      "version": "3.2.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-escapes": {
-      "version": "4.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^0.21.3"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-escapes/node_modules/type-fest": {
-      "version": "0.21.3",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-html": {
-      "version": "0.0.7",
-      "dev": true,
-      "engines": [
-        "node >= 0.8.0"
-      ],
-      "license": "Apache-2.0",
-      "bin": {
-        "ansi-html": "bin/ansi-html"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/any-promise": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/aproba": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/arch": {
-      "version": "2.2.0",
-      "dev": true,
-      "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/argparse": {
-      "version": "1.0.10",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "node_modules/argv": {
-      "version": "0.0.2",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6.10"
-      }
-    },
-    "node_modules/arr-diff": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-flatten": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-union": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-equal": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/array-flatten": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/array-union": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "array-uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-uniq": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-unique": {
-      "version": "0.3.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/asap": {
-      "version": "2.0.6",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/asn1": {
-      "version": "0.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "node_modules/asn1.js": {
-      "version": "5.4.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/assert": {
-      "version": "1.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      }
-    },
-    "node_modules/assert-never": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/assert-plus": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/assert/node_modules/inherits": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/assert/node_modules/util": {
-      "version": "0.10.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "2.0.1"
-      }
-    },
-    "node_modules/assign-symbols": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/astral-regex": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/async": {
-      "version": "2.6.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "node_modules/async-each": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/async-limiter": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/atob": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "(MIT OR Apache-2.0)",
-      "bin": {
-        "atob": "bin/atob.js"
-      },
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/autoprefixer": {
-      "version": "9.8.6",
-      "dev": true,
-      "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/aws-sign2": {
-      "version": "0.7.0",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/aws4": {
-      "version": "1.11.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/babel-code-frame": {
-      "version": "6.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^1.1.3",
-        "esutils": "^2.0.2",
-        "js-tokens": "^3.0.2"
-      }
-    },
-    "node_modules/babel-code-frame/node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-code-frame/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-code-frame/node_modules/chalk": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-code-frame/node_modules/js-tokens": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/babel-code-frame/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-code-frame/node_modules/supports-color": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/babel-core": {
-      "version": "7.0.0-bridge.0",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/babel__core": "^7.1.0",
-        "babel-plugin-istanbul": "^5.1.0",
-        "babel-preset-jest": "^24.9.0",
-        "chalk": "^2.4.2",
-        "slash": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/babel-jest/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/babel-jest/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/babel-jest/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/babel-loader": {
-      "version": "8.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^1.4.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
-      },
-      "engines": {
-        "node": ">= 8.9"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "webpack": ">=2"
-      }
-    },
-    "node_modules/babel-messages": {
-      "version": "6.23.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "node_modules/babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "node_modules/babel-plugin-istanbul": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "find-up": "^3.0.0",
-        "istanbul-lib-instrument": "^3.3.0",
-        "test-exclude": "^5.2.3"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/babel-plugin-istanbul/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/babel-plugin-istanbul/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/babel-plugin-istanbul/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/babel-plugin-istanbul/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/babel-plugin-jest-hoist": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/babel__traverse": "^7.0.6"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2": {
-      "version": "0.2.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs3": {
-      "version": "0.2.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.2.2"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/babel-plugin-transform-es2015-modules-commonjs": {
-      "version": "6.26.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-plugin-transform-strict-mode": "^6.24.1",
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-types": "^6.26.0"
-      }
-    },
-    "node_modules/babel-plugin-transform-strict-mode": {
-      "version": "6.24.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "node_modules/babel-preset-jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
-        "babel-plugin-jest-hoist": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/babel-runtime": {
-      "version": "6.26.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT"
-    },
-    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
-      "version": "0.11.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/babel-template": {
-      "version": "6.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-runtime": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "node_modules/babel-traverse": {
-      "version": "6.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-code-frame": "^6.26.0",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "debug": "^2.6.8",
-        "globals": "^9.18.0",
-        "invariant": "^2.2.2",
-        "lodash": "^4.17.4"
-      }
-    },
-    "node_modules/babel-traverse/node_modules/debug": {
-      "version": "2.6.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/babel-traverse/node_modules/globals": {
-      "version": "9.18.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-traverse/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/babel-types": {
-      "version": "6.26.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-runtime": "^6.26.0",
-        "esutils": "^2.0.2",
-        "lodash": "^4.17.4",
-        "to-fast-properties": "^1.0.3"
-      }
-    },
-    "node_modules/babel-types/node_modules/to-fast-properties": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-walk": {
-      "version": "3.0.0-canary-5",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "@babel/types": "^7.9.6"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/babylon": {
-      "version": "6.18.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "babylon": "bin/babylon.js"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/base": {
-      "version": "0.11.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "dev": true,
-      "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/base64-js": {
-      "version": "1.5.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "node_modules/bfj": {
-      "version": "6.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "bluebird": "^3.5.5",
-        "check-types": "^8.0.3",
-        "hoopy": "^0.1.4",
-        "tryer": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/big.js": {
-      "version": "5.2.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/bindings": {
-      "version": "1.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "node_modules/bluebird": {
-      "version": "3.7.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/bn.js": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
-      "dev": true
-    },
-    "node_modules/body-parser": {
-      "version": "1.19.0",
-      "dev": true,
-      "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/debug": {
-      "version": "2.6.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/body-parser/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/body-parser/node_modules/qs": {
-      "version": "6.7.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/bonjour": {
-      "version": "3.5.0",
-      "dev": true,
-      "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/bonjour/node_modules/array-flatten": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/boolbase": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "2.3.2",
-      "dev": true,
-      "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/braces/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/brorand": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/browser-process-hrtime": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/browser-resolve": {
-      "version": "1.11.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "resolve": "1.1.7"
-      }
-    },
-    "node_modules/browser-resolve/node_modules/resolve": {
-      "version": "1.1.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/browserify-aes": {
-      "version": "1.2.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "node_modules/browserify-sign": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
-      "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^5.2.1",
-        "browserify-rsa": "^4.1.0",
-        "create-hash": "^1.2.0",
-        "create-hmac": "^1.1.7",
-        "elliptic": "^6.5.4",
-        "inherits": "^2.0.4",
-        "parse-asn1": "^5.1.6",
-        "readable-stream": "^3.6.2",
-        "safe-buffer": "^5.2.1"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/browserify-sign/node_modules/readable-stream": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pako": "~1.0.5"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.17.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001254",
-        "colorette": "^1.3.0",
-        "electron-to-chromium": "^1.3.830",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.75"
-      },
-      "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/bs-logger": {
-      "version": "0.2.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-json-stable-stringify": "2.x"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/bser": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "node-int64": "^0.4.0"
-      }
-    },
-    "node_modules/buffer": {
-      "version": "4.9.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      }
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/buffer-indexof": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/buffer-json": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/buffer-xor": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/builtin-modules": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/builtin-status-codes": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/bytes": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/cacache": {
-      "version": "12.0.4",
-      "dev": true,
-      "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/cache-base": {
-      "version": "1.0.1",
-      "dev": true,
-      "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/cache-loader": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "buffer-json": "^2.0.0",
-        "find-cache-dir": "^3.0.0",
-        "loader-utils": "^1.2.3",
-        "mkdirp": "^0.5.1",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/call-me-maybe": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/caller-callsite": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/caller-callsite/node_modules/callsites": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/caller-path": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "caller-callsite": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/camel-case": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "no-case": "^2.2.0",
-        "upper-case": "^1.1.1"
-      }
-    },
-    "node_modules/camelcase": {
-      "version": "6.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/caniuse-api": {
-      "version": "3.0.0",
-      "dev": true,
-      "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.30001255",
-      "dev": true,
-      "license": "CC-BY-4.0",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/browserslist"
-      }
-    },
-    "node_modules/capture-exit": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "rsvp": "^4.8.4"
-      },
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/case-sensitive-paths-webpack-plugin": {
-      "version": "2.4.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/caseless": {
-      "version": "0.12.0",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/chalk": {
-      "version": "2.4.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/character-parser": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "is-regex": "^1.0.3"
-      }
-    },
-    "node_modules/chardet": {
-      "version": "0.7.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/check-types": {
-      "version": "8.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/chokidar": {
-      "version": "3.5.2",
-      "dev": true,
-      "license": "MIT",
-      "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/chokidar/node_modules/braces": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/chokidar/node_modules/fill-range": {
-      "version": "7.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/chokidar/node_modules/is-number": {
-      "version": "7.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/chokidar/node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/chownr": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/chrome-trace-event": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/ci-info": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cipher-base": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/class-utils": {
-      "version": "0.3.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/clean-css": {
-      "version": "4.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "source-map": "~0.6.0"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/clean-css-cli": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "clean-css": "^4.2.1",
-        "commander": "2.x",
-        "glob": "7.x"
-      },
-      "bin": {
-        "cleancss": "bin/cleancss"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/clean-css/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/clean-stack": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cli-cursor": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "restore-cursor": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cli-highlight": {
-      "version": "2.1.11",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "chalk": "^4.0.0",
-        "highlight.js": "^10.7.1",
-        "mz": "^2.4.0",
-        "parse5": "^5.1.1",
-        "parse5-htmlparser2-tree-adapter": "^6.0.0",
-        "yargs": "^16.0.0"
-      },
-      "bin": {
-        "highlight": "bin/highlight"
-      },
-      "engines": {
-        "node": ">=8.0.0",
-        "npm": ">=5.0.0"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/chalk": {
-      "version": "4.1.2",
-      "dev": true,
-      "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/cli-highlight/node_modules/cliui": {
-      "version": "7.0.4",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/color-convert": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/color-name": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cli-highlight/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/parse5": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cli-highlight/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/wrap-ansi": {
-      "version": "7.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/y18n": {
-      "version": "5.0.8",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/yargs": {
-      "version": "16.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cliui": "^7.0.2",
-        "escalade": "^3.1.1",
-        "get-caller-file": "^2.0.5",
-        "require-directory": "^2.1.1",
-        "string-width": "^4.2.0",
-        "y18n": "^5.0.5",
-        "yargs-parser": "^20.2.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/cli-highlight/node_modules/yargs-parser": {
-      "version": "20.2.9",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/cli-spinners": {
-      "version": "2.6.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cli-width": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/clipboardy": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "arch": "^2.1.1",
-        "execa": "^1.0.0",
-        "is-wsl": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/clipboardy/node_modules/is-wsl": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-docker": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cliui": {
-      "version": "5.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^3.1.0",
-        "strip-ansi": "^5.2.0",
-        "wrap-ansi": "^5.1.0"
-      }
-    },
-    "node_modules/cliui/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cliui/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cliui/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cliui/node_modules/string-width": {
-      "version": "3.1.0",
-      "dev": true,
-      "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/cliui/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/clone": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/co": {
-      "version": "4.6.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "iojs": ">= 1.0.0",
-        "node": ">= 0.12.0"
-      }
-    },
-    "node_modules/coa": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/codecov": {
-      "version": "3.7.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "argv": "0.0.2",
-        "ignore-walk": "3.0.3",
-        "js-yaml": "3.13.1",
-        "teeny-request": "6.0.1",
-        "urlgrey": "0.4.4"
-      },
-      "bin": {
-        "codecov": "bin/codecov"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/codecov/node_modules/js-yaml": {
-      "version": "3.13.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/collection-visit": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/color": {
-      "version": "3.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^1.9.3",
-        "color-string": "^1.6.0"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "1.9.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "1.1.3"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/color-string": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "node_modules/colorette": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/combined-stream": {
-      "version": "1.0.8",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/commander": {
-      "version": "2.20.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/commondir": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/component-emitter": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": ">= 1.43.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compression": {
-      "version": "1.7.4",
-      "dev": true,
-      "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/bytes": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/compression/node_modules/debug": {
-      "version": "2.6.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/compression/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/concat-stream": {
-      "version": "1.6.2",
-      "dev": true,
-      "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/concurrently": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "date-fns": "^2.0.1",
-        "lodash": "^4.17.15",
-        "read-pkg": "^4.0.1",
-        "rxjs": "^6.5.2",
-        "spawn-command": "^0.0.2-1",
-        "supports-color": "^6.1.0",
-        "tree-kill": "^1.2.2",
-        "yargs": "^13.3.0"
-      },
-      "bin": {
-        "concurrently": "bin/concurrently.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/concurrently/node_modules/parse-json": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/concurrently/node_modules/pify": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/concurrently/node_modules/read-pkg": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "normalize-package-data": "^2.3.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/concurrently/node_modules/supports-color": {
-      "version": "6.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/condense-newlines": {
-      "version": "0.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "is-whitespace": "^0.3.0",
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/condense-newlines/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/condense-newlines/node_modules/kind-of": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/config-chain": {
-      "version": "1.1.13",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ini": "^1.3.4",
-        "proto-list": "~1.2.1"
-      }
-    },
-    "node_modules/connect-history-api-fallback": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/console-browserify": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "node_modules/consolidate": {
-      "version": "0.15.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "bluebird": "^3.1.1"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/constantinople": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "@babel/parser": "^7.6.0",
-        "@babel/types": "^7.6.1"
-      }
-    },
-    "node_modules/constants-browserify": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/content-disposition": {
-      "version": "0.5.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "5.1.2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/content-type": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/convert-source-map": {
-      "version": "1.8.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "~5.1.1"
-      }
-    },
-    "node_modules/cookie": {
-      "version": "0.4.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/copy-anything": {
-      "version": "2.0.3",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "is-what": "^3.12.0"
-      }
-    },
-    "node_modules/copy-concurrently": {
-      "version": "1.0.5",
-      "dev": true,
-      "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-descriptor": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin": {
-      "version": "5.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "webpack-log": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/globby": {
-      "version": "7.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/ignore": {
-      "version": "3.3.10",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/copy-webpack-plugin/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/slash": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/core-js": {
-      "version": "3.6.5",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-compat": {
-      "version": "3.17.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.17.0",
-        "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",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cosmiconfig": {
-      "version": "5.2.1",
-      "dev": true,
-      "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/cosmiconfig/node_modules/parse-json": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/create-ecdh": {
-      "version": "4.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      }
-    },
-    "node_modules/create-ecdh/node_modules/bn.js": {
-      "version": "4.12.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/create-hash": {
-      "version": "1.2.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-env": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cross-spawn": "^7.0.1"
-      },
-      "bin": {
-        "cross-env": "src/bin/cross-env.js",
-        "cross-env-shell": "src/bin/cross-env-shell.js"
-      },
-      "engines": {
-        "node": ">=10.14",
-        "npm": ">=6",
-        "yarn": ">=1"
-      }
-    },
-    "node_modules/cross-env/node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/cross-env/node_modules/path-key": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cross-env/node_modules/shebang-command": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cross-env/node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cross-env/node_modules/which": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/cross-spawn": {
-      "version": "6.0.5",
-      "dev": true,
-      "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/crypto-browserify": {
-      "version": "3.12.0",
-      "dev": true,
-      "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/css": {
-      "version": "2.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      }
-    },
-    "node_modules/css-color-names": {
-      "version": "0.0.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/css-declaration-sorter": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      },
-      "engines": {
-        "node": ">4"
-      }
-    },
-    "node_modules/css-loader": {
-      "version": "3.6.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "camelcase": "^5.3.1",
-        "cssesc": "^3.0.0",
-        "icss-utils": "^4.1.1",
-        "loader-utils": "^1.2.3",
-        "normalize-path": "^3.0.0",
-        "postcss": "^7.0.32",
-        "postcss-modules-extract-imports": "^2.0.0",
-        "postcss-modules-local-by-default": "^3.0.2",
-        "postcss-modules-scope": "^2.2.0",
-        "postcss-modules-values": "^3.0.0",
-        "postcss-value-parser": "^4.1.0",
-        "schema-utils": "^2.7.0",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/css-loader/node_modules/camelcase": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/css-loader/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/css-parse": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "css": "^2.0.0"
-      }
-    },
-    "node_modules/css-select": {
-      "version": "2.1.0",
-      "dev": true,
-      "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/css-select-base-adapter": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/css-selector-tokenizer": {
-      "version": "0.7.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "fastparse": "^1.1.2"
-      }
-    },
-    "node_modules/css-tree": {
-      "version": "1.0.0-alpha.37",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/css-tree/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/css-what": {
-      "version": "3.4.2",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/css/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/cssesc": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "cssesc": "bin/cssesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cssnano": {
-      "version": "4.1.11",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-get-match": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/csso": {
-      "version": "4.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "css-tree": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/css-tree": {
-      "version": "1.1.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "CC0-1.0"
-    },
-    "node_modules/csso/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/cssom": {
-      "version": "0.3.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/cssstyle": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cssom": "0.3.x"
-      }
-    },
-    "node_modules/cyclist": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/dashdash": {
-      "version": "1.14.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/data-urls": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "abab": "^2.0.0",
-        "whatwg-mimetype": "^2.2.0",
-        "whatwg-url": "^7.0.0"
-      }
-    },
-    "node_modules/data-urls/node_modules/whatwg-url": {
-      "version": "7.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "node_modules/date-fns": {
-      "version": "2.23.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.11"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/date-fns"
-      }
-    },
-    "node_modules/de-indent": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/deasync": {
-      "version": "0.1.23",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "node-addon-api": "^1.7.1"
-      },
-      "engines": {
-        "node": ">=0.11.0"
-      }
-    },
-    "node_modules/debug": {
-      "version": "4.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/decamelize": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/decode-uri-component": {
-      "version": "0.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/deep-equal": {
-      "version": "1.1.1",
-      "dev": true,
-      "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-freeze": {
-      "version": "0.0.1",
-      "dev": true,
-      "license": "public domain"
-    },
-    "node_modules/deep-is": {
-      "version": "0.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/deepmerge": {
-      "version": "4.2.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway": {
-      "version": "5.0.5",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "execa": "^3.3.0"
-      },
-      "engines": {
-        "node": "^8.12.0 || >=9.7.0"
-      }
-    },
-    "node_modules/default-gateway/node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/execa": {
-      "version": "3.4.0",
-      "dev": true,
-      "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",
-        "p-finally": "^2.0.0",
-        "signal-exit": "^3.0.2",
-        "strip-final-newline": "^2.0.0"
-      },
-      "engines": {
-        "node": "^8.12.0 || >=9.7.0"
-      }
-    },
-    "node_modules/default-gateway/node_modules/get-stream": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/default-gateway/node_modules/is-stream": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/default-gateway/node_modules/mimic-fn": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-gateway/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/onetime": {
-      "version": "5.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/default-gateway/node_modules/p-finally": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/path-key": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/shebang-command": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/which": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/defaults": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "clone": "^1.0.2"
-      }
-    },
-    "node_modules/define-properties": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "object-keys": "^1.0.12"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/define-property": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "dev": true,
-      "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/del": {
-      "version": "4.1.1",
-      "dev": true,
-      "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/globby": {
-      "version": "6.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del/node_modules/p-map": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/depd": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/des.js": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/destroy": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/detect-newline": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/detect-node": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/diff": {
-      "version": "4.0.2",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/diff-sequences": {
-      "version": "27.0.6",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/diffie-hellman": {
-      "version": "5.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/dir-glob": {
-      "version": "2.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-type": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/dns-equal": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/dns-packet": {
-      "version": "1.3.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/dns-txt": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "buffer-indexof": "^1.0.0"
-      }
-    },
-    "node_modules/doctrine": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "esutils": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/doctypes": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/dom-converter": {
-      "version": "0.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "utila": "~0.4"
-      }
-    },
-    "node_modules/dom-event-types": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/dom-serializer": {
-      "version": "0.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/dom-serializer/node_modules/domelementtype": {
-      "version": "2.2.0",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/domain-browser": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4",
-        "npm": ">=1.2"
-      }
-    },
-    "node_modules/domelementtype": {
-      "version": "1.3.1",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/domexception": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "node_modules/domhandler": {
-      "version": "4.2.2",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "domelementtype": "^2.2.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-      }
-    },
-    "node_modules/domhandler/node_modules/domelementtype": {
-      "version": "2.2.0",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/domutils": {
-      "version": "1.7.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "node_modules/dot-prop": {
-      "version": "5.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/dotenv": {
-      "version": "8.6.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/dotenv-expand": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/duplexer": {
-      "version": "0.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/duplexify": {
-      "version": "3.7.1",
-      "dev": true,
-      "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/easy-stack": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/ecc-jsbn": {
-      "version": "0.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "node_modules/editorconfig": {
-      "version": "0.15.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "commander": "^2.19.0",
-        "lru-cache": "^4.1.5",
-        "semver": "^5.6.0",
-        "sigmund": "^1.0.1"
-      },
-      "bin": {
-        "editorconfig": "bin/editorconfig"
-      }
-    },
-    "node_modules/editorconfig/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/editorconfig/node_modules/yallist": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/ee-first": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ejs": {
-      "version": "2.7.4",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.3.833",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/elliptic": {
-      "version": "6.5.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/emojis-list": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/end-of-stream": {
-      "version": "1.4.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "once": "^1.4.0"
-      }
-    },
-    "node_modules/enhanced-resolve": {
-      "version": "4.5.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/entities": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/errno": {
-      "version": "0.1.8",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "prr": "~1.0.1"
-      },
-      "bin": {
-        "errno": "cli.js"
-      }
-    },
-    "node_modules/error-ex": {
-      "version": "1.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "node_modules/error-stack-parser": {
-      "version": "2.0.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "stackframe": "^1.1.1"
-      }
-    },
-    "node_modules/es-abstract": {
-      "version": "1.18.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.1.1",
-        "get-symbol-description": "^1.0.0",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.2",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.4",
-        "is-negative-zero": "^2.0.1",
-        "is-regex": "^1.1.4",
-        "is-string": "^1.0.7",
-        "object-inspect": "^1.11.0",
-        "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",
-      "dev": true,
-      "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/escalade": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/escape-html": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/escodegen": {
-      "version": "1.14.3",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esprima": "^4.0.1",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1"
-      },
-      "bin": {
-        "escodegen": "bin/escodegen.js",
-        "esgenerate": "bin/esgenerate.js"
-      },
-      "engines": {
-        "node": ">=4.0"
-      },
-      "optionalDependencies": {
-        "source-map": "~0.6.1"
-      }
-    },
-    "node_modules/escodegen/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/eslint": {
-      "version": "6.7.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.0.0",
-        "ajv": "^6.10.0",
-        "chalk": "^2.1.0",
-        "cross-spawn": "^6.0.5",
-        "debug": "^4.0.1",
-        "doctrine": "^3.0.0",
-        "eslint-scope": "^5.0.0",
-        "eslint-utils": "^1.4.3",
-        "eslint-visitor-keys": "^1.1.0",
-        "espree": "^6.1.2",
-        "esquery": "^1.0.1",
-        "esutils": "^2.0.2",
-        "file-entry-cache": "^5.0.1",
-        "functional-red-black-tree": "^1.0.1",
-        "glob-parent": "^5.0.0",
-        "globals": "^12.1.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "inquirer": "^7.0.0",
-        "is-glob": "^4.0.0",
-        "js-yaml": "^3.13.1",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.3.0",
-        "lodash": "^4.17.14",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.8.3",
-        "progress": "^2.0.0",
-        "regexpp": "^2.0.1",
-        "semver": "^6.1.2",
-        "strip-ansi": "^5.2.0",
-        "strip-json-comments": "^3.0.1",
-        "table": "^5.2.3",
-        "text-table": "^0.2.0",
-        "v8-compile-cache": "^2.0.3"
-      },
-      "bin": {
-        "eslint": "bin/eslint.js"
-      },
-      "engines": {
-        "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/eslint-loader": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loader-fs-cache": "^1.0.0",
-        "loader-utils": "^1.0.2",
-        "object-assign": "^4.0.1",
-        "object-hash": "^1.1.4",
-        "rimraf": "^2.6.1"
-      },
-      "peerDependencies": {
-        "eslint": ">=1.6.0 <7.0.0",
-        "webpack": ">=2.0.0 <5.0.0"
-      }
-    },
-    "node_modules/eslint-plugin-vue": {
-      "version": "6.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "natural-compare": "^1.4.0",
-        "semver": "^5.6.0",
-        "vue-eslint-parser": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.10"
-      },
-      "peerDependencies": {
-        "eslint": "^5.0.0 || ^6.0.0"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/eslint-utils": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "eslint-visitor-keys": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/mysticatea"
-      }
-    },
-    "node_modules/eslint-visitor-keys": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/eslint/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/eslint/node_modules/eslint-utils": {
-      "version": "1.4.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "eslint-visitor-keys": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/eslint/node_modules/globals": {
-      "version": "12.4.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^0.8.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint/node_modules/import-fresh": {
-      "version": "3.3.0",
-      "dev": true,
-      "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/eslint/node_modules/regexpp": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.5.0"
-      }
-    },
-    "node_modules/eslint/node_modules/resolve-from": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/eslint/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/eslint/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/eslint/node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint/node_modules/type-fest": {
-      "version": "0.8.1",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/espree": {
-      "version": "6.2.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "acorn": "^7.1.1",
-        "acorn-jsx": "^5.2.0",
-        "eslint-visitor-keys": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/espree/node_modules/acorn": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/esprima": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/esquery": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "estraverse": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/esquery/node_modules/estraverse": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esrecurse/node_modules/estraverse": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estree-walker": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/esutils": {
-      "version": "2.0.3",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/event-pubsub": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "Unlicense",
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/events": {
-      "version": "3.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.x"
-      }
-    },
-    "node_modules/eventsource": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "original": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/evp_bytestokey": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "node_modules/exec-sh": {
-      "version": "0.3.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/execa": {
-      "version": "1.0.0",
-      "dev": true,
-      "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/exit": {
-      "version": "0.1.2",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/expand-brackets": {
-      "version": "2.1.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/define-property": {
-      "version": "0.2.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/expect": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-styles": "^3.2.0",
-        "jest-get-type": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-regex-util": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/expect/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/expect/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/expect/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/expect/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/express": {
-      "version": "4.17.1",
-      "dev": true,
-      "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/debug": {
-      "version": "2.6.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/express/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/express/node_modules/qs": {
-      "version": "6.7.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extend-shallow/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/external-editor": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chardet": "^0.7.0",
-        "iconv-lite": "^0.4.24",
-        "tmp": "^0.0.33"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/extglob": {
-      "version": "2.0.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "dev": true,
-      "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/extract-from-css": {
-      "version": "0.4.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "css": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0",
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/extsprintf": {
-      "version": "1.3.0",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "license": "MIT"
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-glob": {
-      "version": "2.2.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@mrmlnc/readdir-enhanced": "^2.2.1",
-        "@nodelib/fs.stat": "^1.1.2",
-        "glob-parent": "^3.1.0",
-        "is-glob": "^4.0.0",
-        "merge2": "^1.2.3",
-        "micromatch": "^3.1.10"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fast-levenshtein": {
-      "version": "2.0.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/fastparse": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/faye-websocket": {
-      "version": "0.11.4",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/fb-watchman": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "bser": "2.1.1"
-      }
-    },
-    "node_modules/figgy-pudding": {
-      "version": "3.5.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/figures": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/file-entry-cache": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "flat-cache": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/file-loader": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.5.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0"
-      }
-    },
-    "node_modules/file-uri-to-path": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/filesize": {
-      "version": "3.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "4.0.0",
-      "dev": true,
-      "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/fill-range/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.1.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/finalhandler/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/find-babel-config": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "json5": "^0.5.1",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/find-babel-config/node_modules/json5": {
-      "version": "0.5.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/find-babel-config/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/find-cache-dir": {
-      "version": "3.3.2",
-      "dev": true,
-      "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/find-up": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/flat-cache": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "flatted": "^2.0.0",
-        "rimraf": "2.6.3",
-        "write": "1.0.3"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/flat-cache/node_modules/rimraf": {
-      "version": "2.6.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/flatted": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/flush-write-stream": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.14.8",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "license": "MIT",
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/for-each": {
-      "version": "0.3.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "node_modules/for-in": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/forever-agent": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-code-frame": "^6.22.0",
-        "chalk": "^2.4.1",
-        "chokidar": "^3.3.0",
-        "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/form-data": {
-      "version": "2.3.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 0.12"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fragment-cache": {
-      "version": "0.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "map-cache": "^0.2.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/from2": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "node_modules/fs-extra": {
-      "version": "7.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
-    "node_modules/fs-minipass": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/full-icu": {
-      "version": "1.3.1",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "bin": {
-        "node-full-icu-path": "node-icu-data.js"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/functional-red-black-tree": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/generic-names": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^0.2.16"
-      }
-    },
-    "node_modules/generic-names/node_modules/big.js": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/generic-names/node_modules/emojis-list": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/generic-names/node_modules/json5": {
-      "version": "0.5.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/generic-names/node_modules/loader-utils": {
-      "version": "0.2.17",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "big.js": "^3.1.3",
-        "emojis-list": "^2.0.0",
-        "json5": "^0.5.0",
-        "object-assign": "^4.0.1"
-      }
-    },
-    "node_modules/gensync": {
-      "version": "1.0.0-beta.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/get-caller-file": {
-      "version": "2.0.5",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.1.1",
-      "dev": true,
-      "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-stream": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/get-symbol-description": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-value": {
-      "version": "2.0.6",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/getpass": {
-      "version": "0.1.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.1.7",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/glob-to-regexp": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "BSD"
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby": {
-      "version": "9.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/glob": "^7.1.1",
-        "array-union": "^1.0.2",
-        "dir-glob": "^2.2.2",
-        "fast-glob": "^2.2.6",
-        "glob": "^7.1.3",
-        "ignore": "^4.0.3",
-        "pify": "^4.0.1",
-        "slash": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.8",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/growly": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/gzip-size": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "duplexer": "^0.1.1",
-        "pify": "^4.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/handle-thing": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/har-schema": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/har-validator": {
-      "version": "5.1.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-ansi": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-ansi/node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-bigints": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-flag": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-symbols": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-value": {
-      "version": "1.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values/node_modules/kind-of": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/hash-base": {
-      "version": "3.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-sum": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/hash.js": {
-      "version": "1.1.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
-      }
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/hex-color-regex": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/highlight.js": {
-      "version": "10.7.3",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/hmac-drbg": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
-    },
-    "node_modules/hoopy": {
-      "version": "0.1.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/hosted-git-info": {
-      "version": "2.8.9",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/hpack.js": {
-      "version": "2.1.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/hsla-regex": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/html-encoding-sniffer": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "whatwg-encoding": "^1.0.1"
-      }
-    },
-    "node_modules/html-entities": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/html-escaper": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/html-minifier": {
-      "version": "3.5.21",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "camel-case": "3.0.x",
-        "clean-css": "4.2.x",
-        "commander": "2.17.x",
-        "he": "1.2.x",
-        "param-case": "2.1.x",
-        "relateurl": "0.2.x",
-        "uglify-js": "3.4.x"
-      },
-      "bin": {
-        "html-minifier": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/html-minifier/node_modules/commander": {
-      "version": "2.17.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/html-tags": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/html-webpack-plugin": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "html-minifier": "^3.2.3",
-        "loader-utils": "^0.2.16",
-        "lodash": "^4.17.3",
-        "pretty-error": "^2.0.2",
-        "tapable": "^1.0.0",
-        "toposort": "^1.0.0",
-        "util.promisify": "1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9"
-      },
-      "peerDependencies": {
-        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/big.js": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/emojis-list": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/json5": {
-      "version": "0.5.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/loader-utils": {
-      "version": "0.2.17",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "big.js": "^3.1.3",
-        "emojis-list": "^2.0.0",
-        "json5": "^0.5.0",
-        "object-assign": "^4.0.1"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/util.promisify": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "define-properties": "^1.1.2",
-        "object.getownpropertydescriptors": "^2.0.3"
-      }
-    },
-    "node_modules/htmlparser2": {
-      "version": "6.1.0",
-      "dev": true,
-      "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/htmlparser2/node_modules/dom-serializer": {
-      "version": "1.3.2",
-      "dev": true,
-      "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/htmlparser2/node_modules/domelementtype": {
-      "version": "2.2.0",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/htmlparser2/node_modules/domutils": {
-      "version": "2.8.0",
-      "dev": true,
-      "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/http-deceiver": {
-      "version": "1.2.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/http-errors": {
-      "version": "1.7.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/http-proxy": {
-      "version": "1.18.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/http-proxy-middleware": {
-      "version": "0.19.1",
-      "dev": true,
-      "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-signature": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      },
-      "engines": {
-        "node": ">=0.8",
-        "npm": ">=1.3.7"
-      }
-    },
-    "node_modules/https-browserify": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/https-proxy-agent": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "agent-base": "5",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/https-proxy-agent/node_modules/agent-base": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/human-signals": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=8.12.0"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/icss-replace-symbols": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/icss-utils": {
-      "version": "4.1.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "postcss": "^7.0.14"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ignore": {
-      "version": "4.0.6",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/ignore-walk": {
-      "version": "3.0.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minimatch": "^3.0.4"
-      }
-    },
-    "node_modules/image-size": {
-      "version": "0.5.5",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "image-size": "bin/image-size.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/import-cwd": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "import-from": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-from": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local": {
-      "version": "2.0.0",
-      "dev": true,
-      "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/import-local/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/import-local/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/indent-string": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/indexes-of": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/infer-owner": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/ini": {
-      "version": "1.3.8",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/inquirer": {
-      "version": "7.3.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.1.0",
-        "cli-cursor": "^3.1.0",
-        "cli-width": "^3.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^3.0.0",
-        "lodash": "^4.17.19",
-        "mute-stream": "0.0.8",
-        "run-async": "^2.4.0",
-        "rxjs": "^6.6.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0",
-        "through": "^2.3.6"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/inquirer/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/inquirer/node_modules/chalk": {
-      "version": "4.1.2",
-      "dev": true,
-      "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/inquirer/node_modules/cli-cursor": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "restore-cursor": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inquirer/node_modules/color-convert": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/inquirer/node_modules/color-name": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/inquirer/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inquirer/node_modules/mimic-fn": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/inquirer/node_modules/onetime": {
-      "version": "5.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/inquirer/node_modules/restore-cursor": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "onetime": "^5.1.0",
-        "signal-exit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inquirer/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/internal-ip": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/internal-ip/node_modules/default-gateway": {
-      "version": "4.2.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/internal-slot": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/invariant": {
-      "version": "2.2.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "node_modules/ip": {
-      "version": "1.1.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ip-regex": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ipaddr.js": {
-      "version": "1.9.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/is-absolute-url": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor": {
-      "version": "0.1.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-arguments": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-arrayish": {
-      "version": "0.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/is-bigint": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-bigints": "^1.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-boolean-object": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-buffer": {
-      "version": "1.1.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/is-callable": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-ci": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ci-info": "^1.5.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/is-color-stop": {
-      "version": "1.1.0",
-      "dev": true,
-      "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.6.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-data-descriptor": {
-      "version": "0.1.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-data-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-date-object": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-descriptor": {
-      "version": "0.1.6",
-      "dev": true,
-      "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/is-descriptor/node_modules/kind-of": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-directory": {
-      "version": "0.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-docker": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-expression": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "acorn": "^7.1.1",
-        "object-assign": "^4.1.1"
-      }
-    },
-    "node_modules/is-expression/node_modules/acorn": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/is-extendable": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-generator-fn": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-module": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/is-negative-zero": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-number-object": {
-      "version": "1.0.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-number/node_modules/kind-of": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-obj": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-path-cwd": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-in-cwd": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-path-inside": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-is-inside": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-plain-obj": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-plain-object": {
-      "version": "2.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-promise": {
-      "version": "2.2.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/is-reference": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/is-regex": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-resolvable": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/is-stream": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-string": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-symbol": {
-      "version": "1.0.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/is-what": {
-      "version": "3.14.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/is-whitespace": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-windows": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-wsl": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/isarray": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/isstream": {
-      "version": "0.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-instrument": {
-      "version": "3.3.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@babel/generator": "^7.4.0",
-        "@babel/parser": "^7.4.3",
-        "@babel/template": "^7.4.0",
-        "@babel/traverse": "^7.4.3",
-        "@babel/types": "^7.4.0",
-        "istanbul-lib-coverage": "^2.0.5",
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-instrument/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/istanbul-lib-report": {
-      "version": "2.0.8",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-report/node_modules/make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-report/node_modules/supports-color": {
-      "version": "6.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps": {
-      "version": "3.0.6",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "rimraf": "^2.6.3",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/istanbul-reports": {
-      "version": "2.2.7",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "html-escaper": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/javascript-stringify": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "import-local": "^2.0.0",
-        "jest-cli": "^24.9.0"
-      },
-      "bin": {
-        "jest": "bin/jest.js"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-changed-files": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "execa": "^1.0.0",
-        "throat": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-config": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.1.0",
-        "@jest/test-sequencer": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "babel-jest": "^24.9.0",
-        "chalk": "^2.0.1",
-        "glob": "^7.1.1",
-        "jest-environment-jsdom": "^24.9.0",
-        "jest-environment-node": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "jest-jasmine2": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "pretty-format": "^24.9.0",
-        "realpath-native": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-config/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-config/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-config/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-config/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-config/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-config/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-config/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-diff": {
-      "version": "27.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^4.0.0",
-        "diff-sequences": "^27.0.6",
-        "jest-get-type": "^27.0.6",
-        "pretty-format": "^27.1.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-diff/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/jest-diff/node_modules/chalk": {
-      "version": "4.1.2",
-      "dev": true,
-      "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/jest-diff/node_modules/color-convert": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/jest-diff/node_modules/color-name": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-diff/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-diff/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-docblock": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "detect-newline": "^2.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-each": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "jest-get-type": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-each/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-each/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-each/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-each/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-each/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-each/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-each/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-environment-jsdom": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/environment": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jsdom": "^11.5.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/environment": "^24.3.0",
-        "@jest/fake-timers": "^24.3.0",
-        "@jest/types": "^24.3.0",
-        "jest-mock": "^24.0.0",
-        "jest-util": "^24.0.0",
-        "jsdom": "^15.2.1"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/cssom": {
-      "version": "0.4.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/cssstyle": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cssom": "~0.3.6"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/cssstyle/node_modules/cssom": {
-      "version": "0.3.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/jsdom": {
-      "version": "15.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "abab": "^2.0.0",
-        "acorn": "^7.1.0",
-        "acorn-globals": "^4.3.2",
-        "array-equal": "^1.0.0",
-        "cssom": "^0.4.1",
-        "cssstyle": "^2.0.0",
-        "data-urls": "^1.1.0",
-        "domexception": "^1.0.1",
-        "escodegen": "^1.11.1",
-        "html-encoding-sniffer": "^1.0.2",
-        "nwsapi": "^2.2.0",
-        "parse5": "5.1.0",
-        "pn": "^1.1.0",
-        "request": "^2.88.0",
-        "request-promise-native": "^1.0.7",
-        "saxes": "^3.1.9",
-        "symbol-tree": "^3.2.2",
-        "tough-cookie": "^3.0.1",
-        "w3c-hr-time": "^1.0.1",
-        "w3c-xmlserializer": "^1.1.2",
-        "webidl-conversions": "^4.0.2",
-        "whatwg-encoding": "^1.0.5",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^7.0.0",
-        "ws": "^7.0.0",
-        "xml-name-validator": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "peerDependencies": {
-        "canvas": "^2.5.0"
-      },
-      "peerDependenciesMeta": {
-        "canvas": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/parse5": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/tough-cookie": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "ip-regex": "^2.1.0",
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/whatwg-url": {
-      "version": "7.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "node_modules/jest-environment-jsdom-fifteen/node_modules/ws": {
-      "version": "7.5.5",
-      "dev": true,
-      "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/jest-environment-jsdom/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-environment-jsdom/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-environment-jsdom/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-environment-node": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/environment": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-util": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-environment-node/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-environment-node/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-environment-node/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-get-type": {
-      "version": "27.0.6",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/jest-haste-map": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "anymatch": "^2.0.0",
-        "fb-watchman": "^2.0.0",
-        "graceful-fs": "^4.1.15",
-        "invariant": "^2.2.4",
-        "jest-serializer": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "sane": "^4.0.3",
-        "walker": "^1.0.7"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "optionalDependencies": {
-        "fsevents": "^1.2.7"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/anymatch": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/fsevents": {
-      "version": "1.2.13",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/jest-haste-map/node_modules/normalize-path": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "remove-trailing-separator": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jest-jasmine2": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.1.0",
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "co": "^4.6.0",
-        "expect": "^24.9.0",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "pretty-format": "^24.9.0",
-        "throat": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-jasmine2/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-leak-detector": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-leak-detector/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-matcher-utils": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.0.1",
-        "jest-diff": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/diff-sequences": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/jest-diff": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.0.1",
-        "diff-sequences": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-matcher-utils/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-message-util": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.0.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/stack-utils": "^1.0.1",
-        "chalk": "^2.0.1",
-        "micromatch": "^3.1.10",
-        "slash": "^2.0.0",
-        "stack-utils": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-message-util/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-message-util/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-message-util/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-mock": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-mock/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-mock/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-mock/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-pnp-resolver": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      },
-      "peerDependencies": {
-        "jest-resolve": "*"
-      },
-      "peerDependenciesMeta": {
-        "jest-resolve": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/jest-regex-util": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-resolve": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "browser-resolve": "^1.11.3",
-        "chalk": "^2.0.1",
-        "jest-pnp-resolver": "^1.2.1",
-        "realpath-native": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-resolve-dependencies": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-snapshot": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-resolve-dependencies/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-resolve-dependencies/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-resolve/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-resolve/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-resolve/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-runner": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.4.2",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.1.15",
-        "jest-config": "^24.9.0",
-        "jest-docblock": "^24.3.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-jasmine2": "^24.9.0",
-        "jest-leak-detector": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.6.0",
-        "source-map-support": "^0.5.6",
-        "throat": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-runner/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-runner/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-runner/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-runtime": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.9.0",
-        "@jest/source-map": "^24.3.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/yargs": "^13.0.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "glob": "^7.1.3",
-        "graceful-fs": "^4.1.15",
-        "jest-config": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "realpath-native": "^1.1.0",
-        "slash": "^2.0.0",
-        "strip-bom": "^3.0.0",
-        "yargs": "^13.3.0"
-      },
-      "bin": {
-        "jest-runtime": "bin/jest-runtime.js"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-runtime/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-runtime/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-runtime/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-serializer": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-serializer-vue": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pretty": "2.0.0"
-      }
-    },
-    "node_modules/jest-snapshot": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.0.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "expect": "^24.9.0",
-        "jest-diff": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "mkdirp": "^0.5.1",
-        "natural-compare": "^1.4.0",
-        "pretty-format": "^24.9.0",
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/diff-sequences": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/jest-diff": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.0.1",
-        "diff-sequences": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-snapshot/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-snapshot/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/jest-transform-stub": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-util": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/console": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/source-map": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "callsites": "^3.0.0",
-        "chalk": "^2.0.1",
-        "graceful-fs": "^4.1.15",
-        "is-ci": "^2.0.0",
-        "mkdirp": "^0.5.1",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-util/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-util/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-util/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-util/node_modules/ci-info": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-util/node_modules/is-ci": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ci-info": "^2.0.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/jest-util/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jest-validate": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^2.0.1",
-        "jest-get-type": "^24.9.0",
-        "leven": "^3.1.0",
-        "pretty-format": "^24.9.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-validate/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-validate/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/camelcase": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/jest-get-type": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/pretty-format": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^24.9.0",
-        "ansi-regex": "^4.0.0",
-        "ansi-styles": "^3.2.0",
-        "react-is": "^16.8.4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-validate/node_modules/react-is": {
-      "version": "16.13.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest-watch-typeahead": {
-      "version": "0.4.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^2.4.1",
-        "jest-regex-util": "^24.9.0",
-        "jest-watcher": "^24.3.0",
-        "slash": "^3.0.0",
-        "string-length": "^3.1.0",
-        "strip-ansi": "^5.0.0"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/slash": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/string-length": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "astral-regex": "^1.0.0",
-        "strip-ansi": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/jest-watch-typeahead/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest-watcher": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/yargs": "^13.0.0",
-        "ansi-escapes": "^3.0.0",
-        "chalk": "^2.0.1",
-        "jest-util": "^24.9.0",
-        "string-length": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-watcher/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-watcher/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest-watcher/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest-watcher/node_modules/ansi-escapes": {
-      "version": "3.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/jest-worker": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-worker/node_modules/supports-color": {
-      "version": "6.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jest/node_modules/@jest/types": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^13.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest/node_modules/@types/istanbul-reports": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*",
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/jest/node_modules/@types/yargs": {
-      "version": "13.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/jest/node_modules/ci-info": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jest/node_modules/is-ci": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ci-info": "^2.0.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/jest/node_modules/jest-cli": {
-      "version": "24.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/core": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "import-local": "^2.0.0",
-        "is-ci": "^2.0.0",
-        "jest-config": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "prompts": "^2.0.1",
-        "realpath-native": "^1.1.0",
-        "yargs": "^13.3.0"
-      },
-      "bin": {
-        "jest": "bin/jest.js"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/js-base64": {
-      "version": "2.6.4",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/js-beautify": {
-      "version": "1.14.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "config-chain": "^1.1.12",
-        "editorconfig": "^0.15.3",
-        "glob": "^7.1.3",
-        "nopt": "^5.0.0"
-      },
-      "bin": {
-        "css-beautify": "js/bin/css-beautify.js",
-        "html-beautify": "js/bin/html-beautify.js",
-        "js-beautify": "js/bin/js-beautify.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/js-message": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/js-queue": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "easy-stack": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=1.0.0"
-      }
-    },
-    "node_modules/js-stringify": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/js-yaml": {
-      "version": "3.14.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsbn": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/jsdom": {
-      "version": "11.12.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "abab": "^2.0.0",
-        "acorn": "^5.5.3",
-        "acorn-globals": "^4.1.0",
-        "array-equal": "^1.0.0",
-        "cssom": ">= 0.3.2 < 0.4.0",
-        "cssstyle": "^1.0.0",
-        "data-urls": "^1.0.0",
-        "domexception": "^1.0.1",
-        "escodegen": "^1.9.1",
-        "html-encoding-sniffer": "^1.0.2",
-        "left-pad": "^1.3.0",
-        "nwsapi": "^2.0.7",
-        "parse5": "4.0.0",
-        "pn": "^1.1.0",
-        "request": "^2.87.0",
-        "request-promise-native": "^1.0.5",
-        "sax": "^1.2.4",
-        "symbol-tree": "^3.2.2",
-        "tough-cookie": "^2.3.4",
-        "w3c-hr-time": "^1.0.1",
-        "webidl-conversions": "^4.0.2",
-        "whatwg-encoding": "^1.0.3",
-        "whatwg-mimetype": "^2.1.0",
-        "whatwg-url": "^6.4.1",
-        "ws": "^5.2.0",
-        "xml-name-validator": "^3.0.0"
-      }
-    },
-    "node_modules/jsdom/node_modules/acorn": {
-      "version": "5.7.4",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/jsesc": {
-      "version": "2.5.2",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/json-parse-better-errors": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-parse-even-better-errors": {
-      "version": "2.3.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-schema": {
-      "version": "0.2.3",
-      "dev": true
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json-stringify-safe": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/json3": {
-      "version": "3.3.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/json5": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsprim": {
-      "version": "1.4.1",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      }
-    },
-    "node_modules/jstransformer": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "is-promise": "^2.0.0",
-        "promise": "^7.0.1"
-      }
-    },
-    "node_modules/just-extend": {
-      "version": "4.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/killable": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/kleur": {
-      "version": "3.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/launch-editor": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.3.0",
-        "shell-quote": "^1.6.1"
-      }
-    },
-    "node_modules/launch-editor-middleware": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "launch-editor": "^2.2.1"
-      }
-    },
-    "node_modules/left-pad": {
-      "version": "1.3.0",
-      "dev": true,
-      "license": "WTFPL"
-    },
-    "node_modules/less": {
-      "version": "3.13.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "copy-anything": "^2.0.1",
-        "tslib": "^1.10.0"
-      },
-      "bin": {
-        "lessc": "bin/lessc"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "optionalDependencies": {
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "native-request": "^1.0.5",
-        "source-map": "~0.6.0"
-      }
-    },
-    "node_modules/less/node_modules/make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/less/node_modules/mime": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/less/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/leven": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/levenary": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "leven": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/levn": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/lines-and-columns": {
-      "version": "1.1.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/load-json-file": {
-      "version": "4.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/loader-fs-cache": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-cache-dir": "^0.1.1",
-        "mkdirp": "^0.5.1"
-      }
-    },
-    "node_modules/loader-fs-cache/node_modules/find-cache-dir": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "mkdirp": "^0.5.1",
-        "pkg-dir": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/loader-fs-cache/node_modules/find-up": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-exists": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/loader-fs-cache/node_modules/path-exists": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pinkie-promise": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/loader-fs-cache/node_modules/pkg-dir": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/loader-runner": {
-      "version": "2.4.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/loader-utils": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/loader-utils/node_modules/json5": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "5.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.debounce": {
-      "version": "4.0.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.defaultsdeep": {
-      "version": "4.6.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.get": {
-      "version": "4.4.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.kebabcase": {
-      "version": "4.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.mapvalues": {
-      "version": "4.6.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.memoize": {
-      "version": "4.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.sortby": {
-      "version": "4.7.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.transform": {
-      "version": "4.6.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lodash.uniq": {
-      "version": "4.5.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/log-symbols": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/loglevel": {
-      "version": "1.7.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lower-case": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/lru-cache": {
-      "version": "5.1.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.25.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "node_modules/make-dir": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/make-dir/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/make-error": {
-      "version": "1.3.6",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/makeerror": {
-      "version": "1.0.11",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "tmpl": "1.0.x"
-      }
-    },
-    "node_modules/map-cache": {
-      "version": "0.2.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/map-visit": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/md5.js": {
-      "version": "1.3.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "CC0-1.0"
-    },
-    "node_modules/media-typer": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/memory-fs": {
-      "version": "0.4.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/merge-source-map": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/merge-source-map/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/merge-stream": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/microevent.ts": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/micromatch": {
-      "version": "3.1.10",
-      "dev": true,
-      "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/miller-rabin": {
-      "version": "4.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/mime": {
-      "version": "2.5.2",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.49.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.32",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.49.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mimic-fn": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mini-css-extract-plugin": {
-      "version": "0.9.0",
-      "dev": true,
-      "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"
-      },
-      "peerDependencies": {
-        "webpack": "^4.4.0"
-      }
-    },
-    "node_modules/mini-css-extract-plugin/node_modules/normalize-url": {
-      "version": "1.9.1",
-      "dev": true,
-      "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/mini-css-extract-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/minimatch": {
-      "version": "3.0.4",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/minipass": {
-      "version": "3.1.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minipass-collect": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minipass-flush": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minipass-pipeline": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minipass/node_modules/yallist": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/mississippi": {
-      "version": "3.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mixin-deep/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mkdirp": {
-      "version": "0.5.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/move-concurrently": {
-      "version": "1.0.1",
-      "dev": true,
-      "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/ms": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/multicast-dns": {
-      "version": "6.2.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/mute-stream": {
-      "version": "0.0.8",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/mz": {
-      "version": "2.7.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "any-promise": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "thenify-all": "^1.0.0"
-      }
-    },
-    "node_modules/nan": {
-      "version": "2.15.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/nanomatch": {
-      "version": "1.2.13",
-      "dev": true,
-      "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-request": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/natural-compare": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/neo-async": {
-      "version": "2.6.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nice-try": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nise": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.7.0",
-        "@sinonjs/fake-timers": "^6.0.0",
-        "@sinonjs/text-encoding": "^0.7.1",
-        "just-extend": "^4.0.2",
-        "path-to-regexp": "^1.7.0"
-      }
-    },
-    "node_modules/nise/node_modules/isarray": {
-      "version": "0.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nise/node_modules/path-to-regexp": {
-      "version": "1.8.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isarray": "0.0.1"
-      }
-    },
-    "node_modules/no-case": {
-      "version": "2.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lower-case": "^1.1.1"
-      }
-    },
-    "node_modules/node-addon-api": {
-      "version": "1.7.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-cache": {
-      "version": "4.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "clone": "2.x",
-        "lodash": "^4.17.15"
-      },
-      "engines": {
-        "node": ">= 0.4.6"
-      }
-    },
-    "node_modules/node-cache/node_modules/clone": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/node-fetch": {
-      "version": "2.6.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "whatwg-url": "^5.0.0"
-      },
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      },
-      "peerDependencies": {
-        "encoding": "^0.1.0"
-      },
-      "peerDependenciesMeta": {
-        "encoding": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/node-fetch/node_modules/tr46": {
-      "version": "0.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-fetch/node_modules/webidl-conversions": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/node-fetch/node_modules/whatwg-url": {
-      "version": "5.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      }
-    },
-    "node_modules/node-forge": {
-      "version": "0.10.0",
-      "dev": true,
-      "license": "(BSD-3-Clause OR GPL-2.0)",
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/node-int64": {
-      "version": "0.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-ipc": {
-      "version": "9.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "event-pubsub": "4.3.0",
-        "js-message": "1.0.7",
-        "js-queue": "2.0.2"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/node-libs-browser": {
-      "version": "2.2.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/node-modules-regexp": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/node-notifier": {
-      "version": "5.4.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "growly": "^1.3.0",
-        "is-wsl": "^1.1.0",
-        "semver": "^5.5.0",
-        "shellwords": "^0.1.1",
-        "which": "^1.3.0"
-      }
-    },
-    "node_modules/node-releases": {
-      "version": "1.1.75",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nopt": {
-      "version": "5.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/normalize-package-data": {
-      "version": "2.5.0",
-      "dev": true,
-      "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-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-range": {
-      "version": "0.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-url": {
-      "version": "3.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/npm-run-path": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/nth-check": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "node_modules/num2fraction": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/nwsapi": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/oauth-sign": {
-      "version": "0.9.0",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-copy": {
-      "version": "0.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-copy/node_modules/kind-of": {
-      "version": "3.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-hash": {
-      "version": "1.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.11.0",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-is": {
-      "version": "1.1.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object-visit": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isobject": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.2",
-      "dev": true,
-      "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.getownpropertydescriptors": {
-      "version": "2.1.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.values": {
-      "version": "1.1.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/on-finished": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/on-headers": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/onetime": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/open": {
-      "version": "6.4.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-wsl": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/opener": {
-      "version": "1.5.2",
-      "dev": true,
-      "license": "(WTFPL OR MIT)",
-      "bin": {
-        "opener": "bin/opener-bin.js"
-      }
-    },
-    "node_modules/opn": {
-      "version": "5.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-wsl": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/optionator": {
-      "version": "0.8.3",
-      "dev": true,
-      "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/ora": {
-      "version": "3.4.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-spinners": "^2.0.0",
-        "log-symbols": "^2.2.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ora/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ora/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/original": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "url-parse": "^1.4.3"
-      }
-    },
-    "node_modules/os-browserify": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/os-tmpdir": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/p-each-series": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-reduce": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-finally": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "2.3.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-map": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "aggregate-error": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-reduce": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-retry": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "retry": "^0.12.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pako": {
-      "version": "1.0.11",
-      "dev": true,
-      "license": "(MIT AND Zlib)"
-    },
-    "node_modules/parallel-transform": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "node_modules/param-case": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "no-case": "^2.2.0"
-      }
-    },
-    "node_modules/parent-module": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/parse-asn1": {
-      "version": "5.1.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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": "4.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/parse5-htmlparser2-tree-adapter": {
-      "version": "6.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "parse5": "^6.0.1"
-      }
-    },
-    "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
-      "version": "6.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/pascalcase": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-browserify": {
-      "version": "0.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/path-dirname": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/path-exists": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-is-inside": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "(WTFPL OR MIT)"
-    },
-    "node_modules/path-key": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/path-type": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-type/node_modules/pify": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pbkdf2": {
-      "version": "3.1.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pify": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pinkie": {
-      "version": "2.0.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pinkie-promise": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pinkie": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pirates": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "node-modules-regexp": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "4.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pn": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/pnp-webpack-plugin": {
-      "version": "1.7.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ts-pnp": "^1.1.6"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/portfinder": {
-      "version": "1.0.28",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/posix-character-classes": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "7.0.36",
-      "dev": true,
-      "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-calc": {
-      "version": "7.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
-      }
-    },
-    "node_modules/postcss-colormin": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-convert-values": {
-      "version": "4.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-discard-comments": {
-      "version": "4.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-empty": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-overridden": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-load-config": {
-      "version": "2.1.2",
-      "dev": true,
-      "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-loader": {
-      "version": "3.0.0",
-      "dev": true,
-      "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/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/postcss-merge-longhand": {
-      "version": "4.0.11",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-merge-rules": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-minify-gradients": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-minify-params": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-minify-selectors": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "postcss": "^7.0.5"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default": {
-      "version": "3.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-modules-sync": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "generic-names": "^1.0.2",
-        "icss-replace-symbols": "^1.0.2",
-        "postcss": "^5.2.5",
-        "postcss-modules-local-by-default": "^1.1.1",
-        "postcss-modules-scope": "^1.0.2",
-        "string-hash": "^1.1.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/chalk": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/chalk/node_modules/supports-color": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/has-flag": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss": {
-      "version": "5.2.18",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^1.1.3",
-        "js-base64": "^2.1.9",
-        "source-map": "^0.5.6",
-        "supports-color": "^3.2.3"
-      },
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "css-selector-tokenizer": "^0.7.0",
-        "postcss": "^6.0.1"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/chalk": {
-      "version": "2.4.2",
-      "dev": true,
-      "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-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/has-flag": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/postcss": {
-      "version": "6.0.23",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.4.1",
-        "source-map": "^0.6.1",
-        "supports-color": "^5.4.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/supports-color": {
-      "version": "5.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "css-selector-tokenizer": "^0.7.0",
-        "postcss": "^6.0.1"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/chalk": {
-      "version": "2.4.2",
-      "dev": true,
-      "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-modules-sync/node_modules/postcss-modules-scope/node_modules/has-flag": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/postcss": {
-      "version": "6.0.23",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.4.1",
-        "source-map": "^0.6.1",
-        "supports-color": "^5.4.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/supports-color": {
-      "version": "5.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-modules-sync/node_modules/supports-color": {
-      "version": "3.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/postcss-modules-values": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "icss-utils": "^4.0.0",
-        "postcss": "^7.0.6"
-      }
-    },
-    "node_modules/postcss-normalize-charset": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-positions": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-string": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-url": {
-      "version": "4.0.1",
-      "dev": true,
-      "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/postcss-value-parser": {
-      "version": "3.3.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-ordered-values": {
-      "version": "4.1.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-reduce-initial": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.0.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-svgo": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss-unique-selectors": {
-      "version": "4.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/postcss/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss/node_modules/supports-color": {
-      "version": "6.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/prelude-ls": {
-      "version": "1.1.2",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/prepend-http": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/prettier": {
-      "version": "1.19.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "prettier": "bin-prettier.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pretty": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "condense-newlines": "^0.2.1",
-        "extend-shallow": "^2.0.1",
-        "js-beautify": "^1.6.12"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pretty-error": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash": "^4.17.20",
-        "renderkid": "^2.0.4"
-      }
-    },
-    "node_modules/pretty-format": {
-      "version": "27.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^27.1.1",
-        "ansi-regex": "^5.0.0",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^17.0.1"
-      },
-      "engines": {
-        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
-      }
-    },
-    "node_modules/pretty-format/node_modules/ansi-styles": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/pretty/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/process": {
-      "version": "0.11.10",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/progress": {
-      "version": "2.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/promise": {
-      "version": "7.3.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "asap": "~2.0.3"
-      }
-    },
-    "node_modules/promise-inflight": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/prompts": {
-      "version": "2.4.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kleur": "^3.0.3",
-        "sisteransi": "^1.0.5"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/proto-list": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/proxy-addr": {
-      "version": "2.0.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/prr": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/pseudomap": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/psl": {
-      "version": "1.8.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/public-encrypt": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/pug": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "pug-code-gen": "^3.0.2",
-        "pug-filters": "^4.0.0",
-        "pug-lexer": "^5.0.1",
-        "pug-linker": "^4.0.0",
-        "pug-load": "^3.0.0",
-        "pug-parser": "^6.0.0",
-        "pug-runtime": "^3.0.1",
-        "pug-strip-comments": "^2.0.0"
-      }
-    },
-    "node_modules/pug-attrs": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "js-stringify": "^1.0.2",
-        "pug-runtime": "^3.0.0"
-      }
-    },
-    "node_modules/pug-code-gen": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "doctypes": "^1.1.0",
-        "js-stringify": "^1.0.2",
-        "pug-attrs": "^3.0.0",
-        "pug-error": "^2.0.0",
-        "pug-runtime": "^3.0.0",
-        "void-elements": "^3.1.0",
-        "with": "^7.0.0"
-      }
-    },
-    "node_modules/pug-error": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/pug-filters": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "constantinople": "^4.0.1",
-        "jstransformer": "1.0.0",
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0",
-        "resolve": "^1.15.1"
-      }
-    },
-    "node_modules/pug-lexer": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "character-parser": "^2.2.0",
-        "is-expression": "^4.0.0",
-        "pug-error": "^2.0.0"
-      }
-    },
-    "node_modules/pug-linker": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "node_modules/pug-load": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "node_modules/pug-parser": {
-      "version": "6.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "pug-error": "^2.0.0",
-        "token-stream": "1.0.0"
-      }
-    },
-    "node_modules/pug-runtime": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/pug-strip-comments": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "pug-error": "^2.0.0"
-      }
-    },
-    "node_modules/pug-walk": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/pump": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/pumpify": {
-      "version": "1.5.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/q": {
-      "version": "1.5.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.6.0",
-        "teleport": ">=0.2.0"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.5.2",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/query-string": {
-      "version": "4.3.4",
-      "dev": true,
-      "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.0",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystring-es3": {
-      "version": "0.2.1",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystringify": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/randomfill": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/range-parser": {
-      "version": "1.2.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.4.0",
-      "dev": true,
-      "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/react-is": {
-      "version": "17.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/read-pkg": {
-      "version": "5.2.0",
-      "dev": true,
-      "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/read-pkg-up": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0",
-        "read-pkg": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/read-pkg": {
-      "version": "3.0.0",
-      "dev": true,
-      "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/readable-stream": {
-      "version": "2.3.7",
-      "dev": true,
-      "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/readdirp": {
-      "version": "3.6.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/realpath-native": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "util.promisify": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerate": {
-      "version": "1.4.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/regenerate-unicode-properties": {
-      "version": "8.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "regenerate": "^1.4.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.13.9",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/regenerator-transform": {
-      "version": "0.14.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "node_modules/regex-not": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.3.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/mysticatea"
-      }
-    },
-    "node_modules/regexpu-core": {
-      "version": "4.7.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/regjsparser": {
-      "version": "0.6.9",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "jsesc": "~0.5.0"
-      },
-      "bin": {
-        "regjsparser": "bin/parser"
-      }
-    },
-    "node_modules/regjsparser/node_modules/jsesc": {
-      "version": "0.5.0",
-      "dev": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      }
-    },
-    "node_modules/relateurl": {
-      "version": "0.2.7",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/remove-trailing-separator": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/renderkid": {
-      "version": "2.0.7",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/renderkid/node_modules/css-select": {
-      "version": "4.1.3",
-      "dev": true,
-      "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/renderkid/node_modules/css-what": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/renderkid/node_modules/dom-serializer": {
-      "version": "1.3.2",
-      "dev": true,
-      "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/renderkid/node_modules/domelementtype": {
-      "version": "2.2.0",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/renderkid/node_modules/domutils": {
-      "version": "2.8.0",
-      "dev": true,
-      "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/renderkid/node_modules/nth-check": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/repeat-element": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/repeat-string": {
-      "version": "1.6.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/request": {
-      "version": "2.88.2",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/request-promise-core": {
-      "version": "1.1.4",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "lodash": "^4.17.19"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      },
-      "peerDependencies": {
-        "request": "^2.34"
-      }
-    },
-    "node_modules/request-promise-native": {
-      "version": "1.0.9",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "request-promise-core": "1.1.4",
-        "stealthy-require": "^1.1.1",
-        "tough-cookie": "^2.3.3"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      },
-      "peerDependencies": {
-        "request": "^2.34"
-      }
-    },
-    "node_modules/require-directory": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/require-main-filename": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/resolve": {
-      "version": "1.20.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-core-module": "^2.2.0",
-        "path-parse": "^1.0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-cwd": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-url": {
-      "version": "0.2.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/restore-cursor": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "onetime": "^2.0.0",
-        "signal-exit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ret": {
-      "version": "0.1.15",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.12.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/rgb-regex": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/rgba-regex": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/rimraf": {
-      "version": "2.7.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/ripemd160": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "2.12.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.1.2"
-      }
-    },
-    "node_modules/rollup-copy-plugin": {
-      "version": "0.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/rollup-plugin-terser": {
-      "version": "6.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.8.3",
-        "jest-worker": "^26.0.0",
-        "serialize-javascript": "^3.0.0",
-        "terser": "^4.7.0"
-      },
-      "peerDependencies": {
-        "rollup": "^2.0.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
-      "version": "26.6.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/rollup-plugin-terser/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/rollup-plugin-vue": {
-      "version": "5.1.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/component-compiler": "^4.2.3",
-        "@vue/component-compiler-utils": "^3.1.2",
-        "debug": "^4.1.1",
-        "hash-sum": "^1.0.2",
-        "magic-string": "^0.25.7",
-        "querystring": "^0.2.0",
-        "rollup-pluginutils": "^2.8.2",
-        "source-map": "0.7.3",
-        "vue-runtime-helpers": "^1.1.2"
-      },
-      "peerDependencies": {
-        "vue-template-compiler": "*"
-      }
-    },
-    "node_modules/rollup-plugin-vue/node_modules/hash-sum": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/rollup-plugin-vue/node_modules/source-map": {
-      "version": "0.7.3",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/rollup-pluginutils": {
-      "version": "2.8.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "estree-walker": "^0.6.1"
-      }
-    },
-    "node_modules/rollup-pluginutils/node_modules/estree-walker": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/rollup/node_modules/fsevents": {
-      "version": "2.1.3",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/rsvp": {
-      "version": "4.8.5",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": "6.* || >= 7.*"
-      }
-    },
-    "node_modules/run-async": {
-      "version": "2.4.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/run-queue": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "node_modules/rxjs": {
-      "version": "6.6.7",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/safe-regex": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ret": "~0.1.10"
-      }
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/sane": {
-      "version": "4.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "node_modules/sane/node_modules/normalize-path": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "remove-trailing-separator": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sass": {
-      "version": "1.27.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chokidar": ">=2.0.0 <4.0.0"
-      },
-      "bin": {
-        "sass": "sass.js"
-      },
-      "engines": {
-        "node": ">=8.9.0"
-      }
-    },
-    "node_modules/sax": {
-      "version": "1.2.4",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/saxes": {
-      "version": "3.1.11",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "xmlchars": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/schema-utils": {
-      "version": "2.7.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/selfsigned": {
-      "version": "1.10.11",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "node-forge": "^0.10.0"
-      }
-    },
-    "node_modules/semver": {
-      "version": "5.7.1",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.17.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/send/node_modules/debug/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/send/node_modules/mime": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/send/node_modules/ms": {
-      "version": "2.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/serialize-javascript": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/serve-index": {
-      "version": "1.9.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/http-errors": {
-      "version": "1.6.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/serve-index/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/serve-index/node_modules/setprototypeof": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/serve-static": {
-      "version": "1.14.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/set-value": {
-      "version": "2.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/setimmediate": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/sha.js": {
-      "version": "2.4.11",
-      "dev": true,
-      "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": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/shell-quote": {
-      "version": "1.7.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/shellwords": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.4",
-      "dev": true,
-      "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/sigmund": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/signal-exit": {
-      "version": "3.0.3",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/simple-swizzle": {
-      "version": "0.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-arrayish": "^0.3.1"
-      }
-    },
-    "node_modules/simple-swizzle/node_modules/is-arrayish": {
-      "version": "0.3.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/sinon": {
-      "version": "9.0.3",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@sinonjs/commons": "^1.7.2",
-        "@sinonjs/fake-timers": "^6.0.1",
-        "@sinonjs/formatio": "^5.0.1",
-        "@sinonjs/samsam": "^5.1.0",
-        "diff": "^4.0.2",
-        "nise": "^4.0.4",
-        "supports-color": "^7.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/sinon"
-      }
-    },
-    "node_modules/sinon/node_modules/has-flag": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/sinon/node_modules/supports-color": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/sisteransi": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/slash": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/slice-ansi": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^3.2.0",
-        "astral-regex": "^1.0.0",
-        "is-fullwidth-code-point": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/snapdragon": {
-      "version": "0.8.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "dev": true,
-      "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/snapdragon-util": {
-      "version": "3.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/debug": {
-      "version": "2.6.9",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/define-property": {
-      "version": "0.2.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/sockjs": {
-      "version": "0.3.21",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^3.4.0",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "node_modules/sockjs-client": {
-      "version": "1.5.2",
-      "dev": true,
-      "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.3"
-      }
-    },
-    "node_modules/sockjs-client/node_modules/debug": {
-      "version": "3.2.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/sort-keys": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-list-map": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/source-map": {
-      "version": "0.5.7",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-resolve": {
-      "version": "0.5.3",
-      "dev": true,
-      "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/source-map-support": {
-      "version": "0.5.20",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/source-map-support/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-url": {
-      "version": "0.4.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/sourcemap-codec": {
-      "version": "1.4.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/spawn-command": {
-      "version": "0.0.2-1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/spdx-correct": {
-      "version": "3.1.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "CC-BY-3.0"
-    },
-    "node_modules/spdx-expression-parse": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-license-ids": {
-      "version": "3.0.10",
-      "dev": true,
-      "license": "CC0-1.0"
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "extend-shallow": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sprintf-js": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/sshpk": {
-      "version": "1.16.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      },
-      "bin": {
-        "sshpk-conv": "bin/sshpk-conv",
-        "sshpk-sign": "bin/sshpk-sign",
-        "sshpk-verify": "bin/sshpk-verify"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ssri": {
-      "version": "6.0.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/stable": {
-      "version": "0.1.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/stack-utils": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stack-utils/node_modules/escape-string-regexp": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stackframe": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/static-extend": {
-      "version": "0.1.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "1.5.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/stealthy-require": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "ISC",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/stream-browserify": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "node_modules/stream-each": {
-      "version": "1.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "node_modules/stream-events": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "stubs": "^3.0.0"
-      }
-    },
-    "node_modules/stream-http": {
-      "version": "2.8.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/strict-uri-encode": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/string_decoder": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/string-hash": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "CC0-1.0"
-    },
-    "node_modules/string-length": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "astral-regex": "^1.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string-length/node_modules/ansi-regex": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string-length/node_modules/strip-ansi": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "4.2.2",
-      "dev": true,
-      "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.prototype.trimend": {
-      "version": "1.0.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-bom": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/strip-eof": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-final-newline": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/strip-indent": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/stubs": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/stylehacks": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stylus": {
-      "version": "0.54.8",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.3.0",
-        "source-map": "^0.7.3"
-      },
-      "bin": {
-        "stylus": "bin/stylus"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/stylus/node_modules/debug": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/stylus/node_modules/mkdirp": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/stylus/node_modules/ms": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/stylus/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "optional": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/stylus/node_modules/source-map": {
-      "version": "0.7.3",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "optional": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "5.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/svg-tags": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "node_modules/svgo": {
-      "version": "1.3.2",
-      "dev": true,
-      "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/util.promisify": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/symbol-tree": {
-      "version": "3.2.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/table": {
-      "version": "5.4.6",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "ajv": "^6.10.2",
-        "lodash": "^4.17.14",
-        "slice-ansi": "^2.1.0",
-        "string-width": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/table/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/table/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/table/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/table/node_modules/string-width": {
-      "version": "3.1.0",
-      "dev": true,
-      "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/table/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tapable": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/teeny-request": {
-      "version": "6.0.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "http-proxy-agent": "^4.0.0",
-        "https-proxy-agent": "^4.0.0",
-        "node-fetch": "^2.2.0",
-        "stream-events": "^1.0.5",
-        "uuid": "^3.3.2"
-      }
-    },
-    "node_modules/terser": {
-      "version": "4.8.1",
-      "dev": true,
-      "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": "1.4.5",
-      "dev": true,
-      "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/terser-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/terser/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/test-exclude": {
-      "version": "5.2.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3",
-        "minimatch": "^3.0.4",
-        "read-pkg-up": "^4.0.0",
-        "require-main-filename": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/thenify": {
-      "version": "3.3.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "any-promise": "^1.0.0"
-      }
-    },
-    "node_modules/thenify-all": {
-      "version": "1.6.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "thenify": ">= 3.1.0 < 4"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/thread-loader": {
-      "version": "2.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loader-runner": "^2.3.1",
-        "loader-utils": "^1.1.0",
-        "neo-async": "^2.6.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0 <7.0.0 || >= 8.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/throat": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/through": {
-      "version": "2.3.8",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/through2": {
-      "version": "2.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/timers-browserify": {
-      "version": "2.0.12",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "setimmediate": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/timsort": {
-      "version": "0.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/tmp": {
-      "version": "0.0.33",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "os-tmpdir": "~1.0.2"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/tmpl": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/to-arraybuffer": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/to-fast-properties": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-object-path": {
-      "version": "0.3.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex": {
-      "version": "3.0.2",
-      "dev": true,
-      "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": "2.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/token-stream": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/toposort": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/tough-cookie": {
-      "version": "2.5.0",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/tr46": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/tree-kill": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "tree-kill": "cli.js"
-      }
-    },
-    "node_modules/tryer": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ts-jest": {
-      "version": "24.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "bs-logger": "0.x",
-        "buffer-from": "1.x",
-        "fast-json-stable-stringify": "2.x",
-        "json5": "2.x",
-        "lodash.memoize": "4.x",
-        "make-error": "1.x",
-        "mkdirp": "0.x",
-        "resolve": "1.x",
-        "semver": "^5.5",
-        "yargs-parser": "10.x"
-      },
-      "bin": {
-        "ts-jest": "cli.js"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "peerDependencies": {
-        "jest": ">=24 <25"
-      }
-    },
-    "node_modules/ts-jest/node_modules/camelcase": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ts-jest/node_modules/yargs-parser": {
-      "version": "10.1.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "camelcase": "^4.1.0"
-      }
-    },
-    "node_modules/ts-loader": {
-      "version": "6.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^2.3.0",
-        "enhanced-resolve": "^4.0.0",
-        "loader-utils": "^1.0.2",
-        "micromatch": "^4.0.0",
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8.6"
-      },
-      "peerDependencies": {
-        "typescript": "*"
-      }
-    },
-    "node_modules/ts-loader/node_modules/braces": {
-      "version": "3.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ts-loader/node_modules/fill-range": {
-      "version": "7.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ts-loader/node_modules/is-number": {
-      "version": "7.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/ts-loader/node_modules/micromatch": {
-      "version": "4.0.4",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "braces": "^3.0.1",
-        "picomatch": "^2.2.3"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/ts-loader/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/ts-loader/node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/ts-pnp": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/tsconfig": {
-      "version": "7.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/strip-bom": "^3.0.0",
-        "@types/strip-json-comments": "0.0.30",
-        "strip-bom": "^3.0.0",
-        "strip-json-comments": "^2.0.0"
-      }
-    },
-    "node_modules/tslib": {
-      "version": "1.14.1",
-      "dev": true,
-      "license": "0BSD"
-    },
-    "node_modules/tslint": {
-      "version": "5.20.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@babel/code-frame": "^7.0.0",
-        "builtin-modules": "^1.1.1",
-        "chalk": "^2.3.0",
-        "commander": "^2.12.1",
-        "diff": "^4.0.1",
-        "glob": "^7.1.1",
-        "js-yaml": "^3.13.1",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "resolve": "^1.3.2",
-        "semver": "^5.3.0",
-        "tslib": "^1.8.0",
-        "tsutils": "^2.29.0"
-      },
-      "bin": {
-        "tslint": "bin/tslint"
-      },
-      "engines": {
-        "node": ">=4.8.0"
-      },
-      "peerDependencies": {
-        "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev"
-      }
-    },
-    "node_modules/tslint/node_modules/builtin-modules": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/tslint/node_modules/tsutils": {
-      "version": "2.29.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "tslib": "^1.8.1"
-      },
-      "peerDependencies": {
-        "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev"
-      }
-    },
-    "node_modules/tsutils": {
-      "version": "3.21.0",
-      "dev": true,
-      "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/tty-browserify": {
-      "version": "0.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/tunnel-agent": {
-      "version": "0.6.0",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/tweetnacl": {
-      "version": "0.14.5",
-      "dev": true,
-      "license": "Unlicense"
-    },
-    "node_modules/type-check": {
-      "version": "0.3.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "prelude-ls": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/type-detect": {
-      "version": "4.0.8",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/type-fest": {
-      "version": "0.6.0",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/type-is": {
-      "version": "1.6.18",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray": {
-      "version": "0.0.6",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/typescript": {
-      "version": "3.8.3",
-      "dev": true,
-      "license": "Apache-2.0",
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/uglify-js": {
-      "version": "3.4.10",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "commander": "~2.19.0",
-        "source-map": "~0.6.1"
-      },
-      "bin": {
-        "uglifyjs": "bin/uglifyjs"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/uglify-js/node_modules/commander": {
-      "version": "2.19.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/uglify-js/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unbox-primitive": {
-      "version": "1.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-ecmascript": {
-      "version": "1.0.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-property-aliases-ecmascript": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/union-value": {
-      "version": "1.0.1",
-      "dev": true,
-      "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/uniq": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/uniqs": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/unique-filename": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "node_modules/universalify": {
-      "version": "0.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/unquote": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/unset-value": {
-      "version": "1.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "isarray": "1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/has-values": {
-      "version": "0.1.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/upath": {
-      "version": "1.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4",
-        "yarn": "*"
-      }
-    },
-    "node_modules/upper-case": {
-      "version": "1.1.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/urix": {
-      "version": "0.1.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/url": {
-      "version": "0.11.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      }
-    },
-    "node_modules/url-loader": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^1.2.3",
-        "mime": "^2.4.4",
-        "schema-utils": "^2.5.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "peerDependencies": {
-        "file-loader": "*",
-        "webpack": "^4.0.0"
-      },
-      "peerDependenciesMeta": {
-        "file-loader": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/url-parse": {
-      "version": "1.5.10",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "node_modules/url/node_modules/punycode": {
-      "version": "1.3.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/urlgrey": {
-      "version": "0.4.4",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/use": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/util": {
-      "version": "0.11.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "2.0.3"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/util.promisify": {
-      "version": "1.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "for-each": "^0.3.3",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/util/node_modules/inherits": {
-      "version": "2.0.3",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/utila": {
-      "version": "0.4.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/utils-merge": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/uuid": {
-      "version": "3.4.0",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "uuid": "bin/uuid"
-      }
-    },
-    "node_modules/v8-compile-cache": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/validate-npm-package-license": {
-      "version": "3.0.4",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "node_modules/vary": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/vendors": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/verror": {
-      "version": "1.10.0",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "node_modules/vm-browserify": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/void-elements": {
-      "version": "3.1.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/vue": {
-      "version": "2.6.11",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vue-class-component": {
-      "version": "7.2.3",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "vue": "^2.0.0"
-      }
-    },
-    "node_modules/vue-eslint-parser": {
-      "version": "7.11.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "debug": "^4.1.1",
-        "eslint-scope": "^5.1.1",
-        "eslint-visitor-keys": "^1.1.0",
-        "espree": "^6.2.1",
-        "esquery": "^1.4.0",
-        "lodash": "^4.17.21",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8.10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/mysticatea"
-      },
-      "peerDependencies": {
-        "eslint": ">=5.0.0"
-      }
-    },
-    "node_modules/vue-eslint-parser/node_modules/semver": {
-      "version": "6.3.0",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/vue-hot-reload-api": {
-      "version": "2.3.4",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vue-jest": {
-      "version": "3.0.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
-        "chalk": "^2.1.0",
-        "deasync": "^0.1.15",
-        "extract-from-css": "^0.4.4",
-        "find-babel-config": "^1.1.0",
-        "js-beautify": "^1.6.14",
-        "node-cache": "^4.1.1",
-        "object-assign": "^4.1.1",
-        "source-map": "^0.5.6",
-        "tsconfig": "^7.0.0",
-        "vue-template-es2015-compiler": "^1.6.0"
-      },
-      "peerDependencies": {
-        "babel-core": "^6.25.0 || ^7.0.0-0",
-        "vue": "^2.x",
-        "vue-template-compiler": "^2.x"
-      }
-    },
-    "node_modules/vue-loader": {
-      "version": "15.9.8",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@vue/component-compiler-utils": "^3.1.0",
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.1.0",
-        "vue-hot-reload-api": "^2.3.0",
-        "vue-style-loader": "^4.1.0"
-      },
-      "peerDependencies": {
-        "css-loader": "*",
-        "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
-      },
-      "peerDependenciesMeta": {
-        "cache-loader": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/vue-loader/node_modules/hash-sum": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vue-property-decorator": {
-      "version": "8.4.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "vue-class-component": "^7.1.0"
-      },
-      "peerDependencies": {
-        "vue": "*"
-      }
-    },
-    "node_modules/vue-runtime-helpers": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vue-style-loader": {
-      "version": "4.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.0.2"
-      }
-    },
-    "node_modules/vue-style-loader/node_modules/hash-sum": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/vue-template-compiler": {
-      "version": "2.6.11",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "de-indent": "^1.0.2",
-        "he": "^1.1.0"
-      }
-    },
-    "node_modules/vue-template-es2015-compiler": {
-      "version": "1.9.1",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/w3c-hr-time": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "browser-process-hrtime": "^1.0.0"
-      }
-    },
-    "node_modules/w3c-xmlserializer": {
-      "version": "1.1.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "domexception": "^1.0.1",
-        "webidl-conversions": "^4.0.2",
-        "xml-name-validator": "^3.0.0"
-      }
-    },
-    "node_modules/walker": {
-      "version": "1.0.7",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "makeerror": "1.0.x"
-      }
-    },
-    "node_modules/watchpack": {
-      "version": "1.7.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "chokidar": "^2.1.8"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/anymatch": {
-      "version": "2.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/chokidar": {
-      "version": "2.1.8",
-      "dev": true,
-      "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/fsevents": {
-      "version": "1.2.13",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/readdirp": {
-      "version": "2.2.1",
-      "dev": true,
-      "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/wbuf": {
-      "version": "1.7.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/wcwidth": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "defaults": "^1.0.3"
-      }
-    },
-    "node_modules/webidl-conversions": {
-      "version": "4.0.2",
-      "dev": true,
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/webpack": {
-      "version": "4.46.0",
-      "dev": true,
-      "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.5.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-bundle-analyzer": {
-      "version": "3.9.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^7.1.1",
-        "acorn-walk": "^7.1.1",
-        "bfj": "^6.1.1",
-        "chalk": "^2.4.1",
-        "commander": "^2.18.0",
-        "ejs": "^2.6.1",
-        "express": "^4.16.3",
-        "filesize": "^3.6.1",
-        "gzip-size": "^5.0.0",
-        "lodash": "^4.17.19",
-        "mkdirp": "^0.5.1",
-        "opener": "^1.5.1",
-        "ws": "^6.0.0"
-      },
-      "bin": {
-        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
-      },
-      "engines": {
-        "node": ">= 6.14.4"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
-      "version": "7.4.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
-      "version": "7.2.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/ws": {
-      "version": "6.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "node_modules/webpack-chain": {
-      "version": "6.5.1",
-      "dev": true,
-      "license": "MPL-2.0",
-      "dependencies": {
-        "deepmerge": "^1.5.2",
-        "javascript-stringify": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-chain/node_modules/deepmerge": {
-      "version": "1.5.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-middleware": {
-      "version": "3.7.3",
-      "dev": true,
-      "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-server": {
-      "version": "3.11.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/anymatch": {
-      "version": "2.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/chokidar": {
-      "version": "2.1.8",
-      "dev": true,
-      "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/fsevents": {
-      "version": "1.2.13",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/glob-parent": {
-      "version": "3.1.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
-      "version": "3.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/readdirp": {
-      "version": "2.2.1",
-      "dev": true,
-      "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/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ws": {
-      "version": "6.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "node_modules/webpack-log": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/webpack-merge": {
-      "version": "4.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash": "^4.17.15"
-      }
-    },
-    "node_modules/webpack-sources": {
-      "version": "1.4.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      }
-    },
-    "node_modules/webpack-sources/node_modules/source-map": {
-      "version": "0.6.1",
-      "dev": true,
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/eslint-scope": {
-      "version": "4.0.3",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/webpack/node_modules/schema-utils": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/websocket-driver": {
-      "version": "0.7.4",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/whatwg-encoding": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "iconv-lite": "0.4.24"
-      }
-    },
-    "node_modules/whatwg-mimetype": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/whatwg-url": {
-      "version": "6.5.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "node_modules/which": {
-      "version": "1.3.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "node_modules/which-boxed-primitive": {
-      "version": "1.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/with": {
-      "version": "7.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "dependencies": {
-        "@babel/parser": "^7.9.6",
-        "@babel/types": "^7.9.6",
-        "assert-never": "^1.2.1",
-        "babel-walk": "3.0.0-canary-5"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/word-wrap": {
-      "version": "1.2.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/worker-farm": {
-      "version": "1.7.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "errno": "~0.1.7"
-      }
-    },
-    "node_modules/worker-rpc": {
-      "version": "0.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "microevent.ts": "~0.1.1"
-      }
-    },
-    "node_modules/wrap-ansi": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^3.2.0",
-        "string-width": "^3.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/string-width": {
-      "version": "3.1.0",
-      "dev": true,
-      "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/wrap-ansi/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/write": {
-      "version": "1.0.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mkdirp": "^0.5.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/write-file-atomic": {
-      "version": "2.4.1",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "graceful-fs": "^4.1.11",
-        "imurmurhash": "^0.1.4",
-        "signal-exit": "^3.0.2"
-      }
-    },
-    "node_modules/ws": {
-      "version": "5.2.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "node_modules/xml-name-validator": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "Apache-2.0"
-    },
-    "node_modules/xmlchars": {
-      "version": "2.2.0",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4"
-      }
-    },
-    "node_modules/y18n": {
-      "version": "4.0.3",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/yallist": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/yargs": {
-      "version": "13.3.2",
-      "dev": true,
-      "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/yargs-parser": {
-      "version": "13.1.2",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    },
-    "node_modules/yargs-parser/node_modules/camelcase": {
-      "version": "5.3.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/yargs/node_modules/find-up": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yargs/node_modules/locate-path": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/p-locate": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yargs/node_modules/path-exists": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yargs/node_modules/string-width": {
-      "version": "3.1.0",
-      "dev": true,
-      "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/yargs/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/yorkie": {
-      "version": "2.0.0",
-      "dev": true,
-      "hasInstallScript": true,
-      "license": "MIT",
-      "dependencies": {
-        "execa": "^0.8.0",
-        "is-ci": "^1.0.10",
-        "normalize-path": "^1.0.0",
-        "strip-indent": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yorkie/node_modules/cross-spawn": {
-      "version": "5.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "lru-cache": "^4.0.1",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "node_modules/yorkie/node_modules/execa": {
-      "version": "0.8.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cross-spawn": "^5.0.1",
-        "get-stream": "^3.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": ">=4"
-      }
-    },
-    "node_modules/yorkie/node_modules/get-stream": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/yorkie/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/yorkie/node_modules/normalize-path": {
-      "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/yorkie/node_modules/yallist": {
-      "version": "2.1.2",
-      "dev": true,
-      "license": "ISC"
-    }
-  },
-  "dependencies": {
-    "@babel/code-frame": {
-      "version": "7.22.13",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
-      "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
-      "dev": true,
-      "requires": {
-        "@babel/highlight": "^7.22.13",
-        "chalk": "^2.4.2"
-      }
-    },
-    "@babel/compat-data": {
-      "version": "7.15.0",
-      "dev": true
-    },
-    "@babel/core": {
-      "version": "7.10.2",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.10.1",
-        "@babel/generator": "^7.10.2",
-        "@babel/helper-module-transforms": "^7.10.1",
-        "@babel/helpers": "^7.10.1",
-        "@babel/parser": "^7.10.2",
-        "@babel/template": "^7.10.1",
-        "@babel/traverse": "^7.10.1",
-        "@babel/types": "^7.10.2",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.1",
-        "json5": "^2.1.2",
-        "lodash": "^4.17.13",
-        "resolve": "^1.3.2",
-        "semver": "^5.4.1",
-        "source-map": "^0.5.0"
-      }
-    },
-    "@babel/generator": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
-      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.23.0",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "@jridgewell/trace-mapping": "^0.3.17",
-        "jsesc": "^2.5.1"
-      }
-    },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-compilation-targets": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.15.0",
-        "@babel/helper-validator-option": "^7.14.5",
-        "browserslist": "^4.16.6",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "@babel/helper-create-class-features-plugin": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/helper-member-expression-to-functions": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.14.5",
-        "regexpu-core": "^4.7.1"
-      }
-    },
-    "@babel/helper-define-polyfill-provider": {
-      "version": "0.2.3",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "@babel/helper-environment-visitor": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
-      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
-      "dev": true
-    },
-    "@babel/helper-explode-assignable-expression": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-function-name": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
-      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
-      "dev": true,
-      "requires": {
-        "@babel/template": "^7.22.15",
-        "@babel/types": "^7.23.0"
-      }
-    },
-    "@babel/helper-hoist-variables": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
-      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-member-expression-to-functions": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-module-imports": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-module-transforms": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.15.4",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-simple-access": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4",
-        "@babel/helper-validator-identifier": "^7.14.9",
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-optimise-call-expression": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-plugin-utils": {
-      "version": "7.14.5",
-      "dev": true
-    },
-    "@babel/helper-remap-async-to-generator": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-wrap-function": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-replace-supers": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-member-expression-to-functions": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-simple-access": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helper-split-export-declaration": {
-      "version": "7.22.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
-      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-string-parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
-      "dev": true
-    },
-    "@babel/helper-validator-identifier": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
-      "dev": true
-    },
-    "@babel/helper-validator-option": {
-      "version": "7.14.5",
-      "dev": true
-    },
-    "@babel/helper-wrap-function": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/helpers": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/template": "^7.15.4",
-        "@babel/traverse": "^7.15.4",
-        "@babel/types": "^7.15.4"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.22.20",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
-      "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@babel/parser": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
-      "dev": true
-    },
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4",
-        "@babel/plugin-proposal-optional-chaining": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-remap-async-to-generator": "^7.15.4",
-        "@babel/plugin-syntax-async-generators": "^7.8.4"
-      }
-    },
-    "@babel/plugin-proposal-class-properties": {
-      "version": "7.14.5",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-decorators": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-decorators": "^7.14.5"
-      }
-    },
-    "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
-      }
-    },
-    "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.15.6",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.15.0",
-        "@babel/helper-compilation-targets": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.15.4"
-      }
-    },
-    "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-create-class-features-plugin": "^7.15.4",
-        "@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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-class-properties": {
-      "version": "7.12.13",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-class-static-block": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-decorators": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-export-namespace-from": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      }
-    },
-    "@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-jsx": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-logical-assignment-operators": {
-      "version": "7.10.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-nullish-coalescing-operator": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-numeric-separator": {
-      "version": "7.10.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-object-rest-spread": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-catch-binding": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-chaining": {
-      "version": "7.8.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-private-property-in-object": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-top-level-await": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-arrow-functions": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-async-to-generator": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-block-scoping": {
-      "version": "7.15.3",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-classes": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.15.4",
-        "@babel/helper-function-name": "^7.15.4",
-        "@babel/helper-optimise-call-expression": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-replace-supers": "^7.15.4",
-        "@babel/helper-split-export-declaration": "^7.15.4",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/plugin-transform-computed-properties": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-destructuring": {
-      "version": "7.14.7",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-dotall-regex": {
-      "version": "7.14.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-for-of": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-function-name": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-function-name": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-literals": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-modules-amd": {
-      "version": "7.14.5",
-      "dev": true,
-      "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.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-simple-access": "^7.15.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-hoist-variables": "^7.15.4",
-        "@babel/helper-module-transforms": "^7.15.4",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-validator-identifier": "^7.14.9",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "@babel/plugin-transform-modules-umd": {
-      "version": "7.14.5",
-      "dev": true,
-      "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.9",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-new-target": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-object-super": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-replace-supers": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-parameters": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-property-literals": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-regenerator": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "regenerator-transform": "^0.14.2"
-      }
-    },
-    "@babel/plugin-transform-reserved-words": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-runtime": {
-      "version": "7.15.0",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "babel-plugin-polyfill-corejs2": "^0.2.2",
-        "babel-plugin-polyfill-corejs3": "^0.2.2",
-        "babel-plugin-polyfill-regenerator": "^0.2.2",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-spread": {
-      "version": "7.14.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-template-literals": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-escapes": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-regex": {
-      "version": "7.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/preset-env": {
-      "version": "7.10.2",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.10.1",
-        "@babel/helper-compilation-targets": "^7.10.2",
-        "@babel/helper-module-imports": "^7.10.1",
-        "@babel/helper-plugin-utils": "^7.10.1",
-        "@babel/plugin-proposal-async-generator-functions": "^7.10.1",
-        "@babel/plugin-proposal-class-properties": "^7.10.1",
-        "@babel/plugin-proposal-dynamic-import": "^7.10.1",
-        "@babel/plugin-proposal-json-strings": "^7.10.1",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1",
-        "@babel/plugin-proposal-numeric-separator": "^7.10.1",
-        "@babel/plugin-proposal-object-rest-spread": "^7.10.1",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.10.1",
-        "@babel/plugin-proposal-optional-chaining": "^7.10.1",
-        "@babel/plugin-proposal-private-methods": "^7.10.1",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.10.1",
-        "@babel/plugin-syntax-async-generators": "^7.8.0",
-        "@babel/plugin-syntax-class-properties": "^7.10.1",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
-        "@babel/plugin-syntax-json-strings": "^7.8.0",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.1",
-        "@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.10.1",
-        "@babel/plugin-transform-arrow-functions": "^7.10.1",
-        "@babel/plugin-transform-async-to-generator": "^7.10.1",
-        "@babel/plugin-transform-block-scoped-functions": "^7.10.1",
-        "@babel/plugin-transform-block-scoping": "^7.10.1",
-        "@babel/plugin-transform-classes": "^7.10.1",
-        "@babel/plugin-transform-computed-properties": "^7.10.1",
-        "@babel/plugin-transform-destructuring": "^7.10.1",
-        "@babel/plugin-transform-dotall-regex": "^7.10.1",
-        "@babel/plugin-transform-duplicate-keys": "^7.10.1",
-        "@babel/plugin-transform-exponentiation-operator": "^7.10.1",
-        "@babel/plugin-transform-for-of": "^7.10.1",
-        "@babel/plugin-transform-function-name": "^7.10.1",
-        "@babel/plugin-transform-literals": "^7.10.1",
-        "@babel/plugin-transform-member-expression-literals": "^7.10.1",
-        "@babel/plugin-transform-modules-amd": "^7.10.1",
-        "@babel/plugin-transform-modules-commonjs": "^7.10.1",
-        "@babel/plugin-transform-modules-systemjs": "^7.10.1",
-        "@babel/plugin-transform-modules-umd": "^7.10.1",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
-        "@babel/plugin-transform-new-target": "^7.10.1",
-        "@babel/plugin-transform-object-super": "^7.10.1",
-        "@babel/plugin-transform-parameters": "^7.10.1",
-        "@babel/plugin-transform-property-literals": "^7.10.1",
-        "@babel/plugin-transform-regenerator": "^7.10.1",
-        "@babel/plugin-transform-reserved-words": "^7.10.1",
-        "@babel/plugin-transform-shorthand-properties": "^7.10.1",
-        "@babel/plugin-transform-spread": "^7.10.1",
-        "@babel/plugin-transform-sticky-regex": "^7.10.1",
-        "@babel/plugin-transform-template-literals": "^7.10.1",
-        "@babel/plugin-transform-typeof-symbol": "^7.10.1",
-        "@babel/plugin-transform-unicode-escapes": "^7.10.1",
-        "@babel/plugin-transform-unicode-regex": "^7.10.1",
-        "@babel/preset-modules": "^0.1.3",
-        "@babel/types": "^7.10.2",
-        "browserslist": "^4.12.0",
-        "core-js-compat": "^3.6.2",
-        "invariant": "^2.2.2",
-        "levenary": "^1.1.1",
-        "semver": "^5.5.0"
-      }
-    },
-    "@babel/preset-modules": {
-      "version": "0.1.4",
-      "dev": true,
-      "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/runtime": {
-      "version": "7.15.4",
-      "dev": true,
-      "requires": {
-        "regenerator-runtime": "^0.13.4"
-      }
-    },
-    "@babel/template": {
-      "version": "7.22.15",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
-      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/parser": "^7.22.15",
-        "@babel/types": "^7.22.15"
-      }
-    },
-    "@babel/traverse": {
-      "version": "7.23.2",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
-      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.22.13",
-        "@babel/generator": "^7.23.0",
-        "@babel/helper-environment-visitor": "^7.22.20",
-        "@babel/helper-function-name": "^7.23.0",
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/parser": "^7.23.0",
-        "@babel/types": "^7.23.0",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/types": {
-      "version": "7.23.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.20",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "@cnakazawa/watch": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "exec-sh": "^0.3.2",
-        "minimist": "^1.2.0"
-      }
-    },
-    "@hapi/address": {
-      "version": "2.1.4",
-      "dev": true
-    },
-    "@hapi/bourne": {
-      "version": "1.3.2",
-      "dev": true
-    },
-    "@hapi/hoek": {
-      "version": "8.5.1",
-      "dev": true
-    },
-    "@hapi/joi": {
-      "version": "15.1.1",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@hapi/hoek": "^8.3.0"
-      }
-    },
-    "@intervolga/optimize-cssnano-plugin": {
-      "version": "1.0.6",
-      "dev": true,
-      "requires": {
-        "cssnano": "^4.0.0",
-        "cssnano-preset-default": "^4.0.0",
-        "postcss": "^7.0.0"
-      }
-    },
-    "@jest/console": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/source-map": "^24.9.0",
-        "chalk": "^2.0.1",
-        "slash": "^2.0.0"
-      }
-    },
-    "@jest/core": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^24.7.1",
-        "@jest/reporters": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "ansi-escapes": "^3.0.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.1.15",
-        "jest-changed-files": "^24.9.0",
-        "jest-config": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-resolve-dependencies": "^24.9.0",
-        "jest-runner": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "jest-watcher": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "p-each-series": "^1.0.0",
-        "realpath-native": "^1.1.0",
-        "rimraf": "^2.5.4",
-        "slash": "^2.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-escapes": {
-          "version": "3.2.0",
-          "dev": true
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "@jest/environment": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "@jest/fake-timers": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-mock": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "@jest/reporters": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "glob": "^7.1.2",
-        "istanbul-lib-coverage": "^2.0.2",
-        "istanbul-lib-instrument": "^3.0.1",
-        "istanbul-lib-report": "^2.0.4",
-        "istanbul-lib-source-maps": "^3.0.1",
-        "istanbul-reports": "^2.2.6",
-        "jest-haste-map": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.6.0",
-        "node-notifier": "^5.4.2",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.0",
-        "string-length": "^2.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "@jest/source-map": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0",
-        "graceful-fs": "^4.1.15",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "@jest/test-result": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/istanbul-lib-coverage": "^2.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "@jest/test-sequencer": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/test-result": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-runner": "^24.9.0",
-        "jest-runtime": "^24.9.0"
-      }
-    },
-    "@jest/transform": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.1.0",
-        "@jest/types": "^24.9.0",
-        "babel-plugin-istanbul": "^5.1.0",
-        "chalk": "^2.0.1",
-        "convert-source-map": "^1.4.0",
-        "fast-json-stable-stringify": "^2.0.0",
-        "graceful-fs": "^4.1.15",
-        "jest-haste-map": "^24.9.0",
-        "jest-regex-util": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "pirates": "^4.0.1",
-        "realpath-native": "^1.1.0",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.1",
-        "write-file-atomic": "2.4.1"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "@jest/types": {
-      "version": "27.1.1",
-      "dev": true,
-      "requires": {
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^16.0.0",
-        "chalk": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "@jridgewell/gen-mapping": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
-      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@jridgewell/resolve-uri": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
-      "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
-      "dev": true
-    },
-    "@jridgewell/set-array": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-      "dev": true
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.4.15",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
-      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
-      "dev": true
-    },
-    "@jridgewell/trace-mapping": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
-      "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "@mrmlnc/readdir-enhanced": {
-      "version": "2.2.1",
-      "dev": true,
-      "requires": {
-        "call-me-maybe": "^1.0.1",
-        "glob-to-regexp": "^0.3.0"
-      }
-    },
-    "@nodelib/fs.stat": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "@rollup/plugin-babel": {
-      "version": "5.0.2",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.7.4",
-        "@rollup/pluginutils": "^3.0.8"
-      }
-    },
-    "@rollup/plugin-commonjs": {
-      "version": "12.0.0",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.0.8",
-        "commondir": "^1.0.1",
-        "estree-walker": "^1.0.1",
-        "glob": "^7.1.2",
-        "is-reference": "^1.1.2",
-        "magic-string": "^0.25.2",
-        "resolve": "^1.11.0"
-      }
-    },
-    "@rollup/plugin-node-resolve": {
-      "version": "8.0.0",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.0.8",
-        "@types/resolve": "0.0.8",
-        "builtin-modules": "^3.1.0",
-        "deep-freeze": "^0.0.1",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.14.2"
-      }
-    },
-    "@rollup/plugin-replace": {
-      "version": "2.3.2",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.0.8",
-        "magic-string": "^0.25.5"
-      }
-    },
-    "@rollup/pluginutils": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "@types/estree": "0.0.39",
-        "estree-walker": "^1.0.1",
-        "picomatch": "^2.2.2"
-      }
-    },
-    "@sinonjs/commons": {
-      "version": "1.8.3",
-      "dev": true,
-      "requires": {
-        "type-detect": "4.0.8"
-      }
-    },
-    "@sinonjs/fake-timers": {
-      "version": "6.0.1",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1.7.0"
-      }
-    },
-    "@sinonjs/formatio": {
-      "version": "5.0.1",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1",
-        "@sinonjs/samsam": "^5.0.2"
-      }
-    },
-    "@sinonjs/samsam": {
-      "version": "5.3.1",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1.6.0",
-        "lodash.get": "^4.4.2",
-        "type-detect": "^4.0.8"
-      }
-    },
-    "@sinonjs/text-encoding": {
-      "version": "0.7.1",
-      "dev": true
-    },
-    "@soda/friendly-errors-webpack-plugin": {
-      "version": "1.8.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "error-stack-parser": "^2.0.2",
-        "string-width": "^2.0.0",
-        "strip-ansi": "^5"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "4.0.0",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^3.0.0"
-              }
-            }
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "4.1.0",
-              "dev": true
-            }
-          }
-        }
-      }
-    },
-    "@soda/get-current-script": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "@tootallnate/once": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "@types/babel__core": {
-      "version": "7.1.16",
-      "dev": true,
-      "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.3",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__template": {
-      "version": "7.4.1",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.1.0",
-        "@babel/types": "^7.0.0"
-      }
-    },
-    "@types/babel__traverse": {
-      "version": "7.14.2",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.3.0"
-      }
-    },
-    "@types/eslint-visitor-keys": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "@types/estree": {
-      "version": "0.0.39",
-      "dev": true
-    },
-    "@types/glob": {
-      "version": "7.1.4",
-      "dev": true,
-      "requires": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/istanbul-lib-coverage": {
-      "version": "2.0.3",
-      "dev": true
-    },
-    "@types/istanbul-lib-report": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "@types/istanbul-lib-coverage": "*"
-      }
-    },
-    "@types/istanbul-reports": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "@types/jest": {
-      "version": "24.0.19",
-      "dev": true,
-      "requires": {
-        "@types/jest-diff": "*"
-      }
-    },
-    "@types/jest-diff": {
-      "version": "24.3.0",
-      "dev": true,
-      "requires": {
-        "jest-diff": "*"
-      }
-    },
-    "@types/json-schema": {
-      "version": "7.0.9",
-      "dev": true
-    },
-    "@types/minimatch": {
-      "version": "3.0.5",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "16.9.1",
-      "dev": true
-    },
-    "@types/normalize-package-data": {
-      "version": "2.4.1",
-      "dev": true
-    },
-    "@types/q": {
-      "version": "1.5.5",
-      "dev": true
-    },
-    "@types/resolve": {
-      "version": "0.0.8",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/stack-utils": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "@types/strip-bom": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "@types/strip-json-comments": {
-      "version": "0.0.30",
-      "dev": true
-    },
-    "@types/webpack-env": {
-      "version": "1.16.2",
-      "dev": true
-    },
-    "@types/yargs": {
-      "version": "16.0.4",
-      "dev": true,
-      "requires": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "@types/yargs-parser": {
-      "version": "20.2.1",
-      "dev": true
-    },
-    "@typescript-eslint/eslint-plugin": {
-      "version": "2.26.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/experimental-utils": "2.26.0",
-        "functional-red-black-tree": "^1.0.1",
-        "regexpp": "^3.0.0",
-        "tsutils": "^3.17.1"
-      }
-    },
-    "@typescript-eslint/experimental-utils": {
-      "version": "2.26.0",
-      "dev": true,
-      "requires": {
-        "@types/json-schema": "^7.0.3",
-        "@typescript-eslint/typescript-estree": "2.26.0",
-        "eslint-scope": "^5.0.0",
-        "eslint-utils": "^2.0.0"
-      }
-    },
-    "@typescript-eslint/parser": {
-      "version": "2.26.0",
-      "dev": true,
-      "requires": {
-        "@types/eslint-visitor-keys": "^1.0.0",
-        "@typescript-eslint/experimental-utils": "2.26.0",
-        "@typescript-eslint/typescript-estree": "2.26.0",
-        "eslint-visitor-keys": "^1.1.0"
-      }
-    },
-    "@typescript-eslint/typescript-estree": {
-      "version": "2.26.0",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "eslint-visitor-keys": "^1.1.0",
-        "glob": "^7.1.6",
-        "is-glob": "^4.0.1",
-        "lodash": "^4.17.15",
-        "semver": "^6.3.0",
-        "tsutils": "^3.17.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-helper-vue-jsx-merge-props": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "@vue/babel-helper-vue-transform-on": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "@vue/babel-plugin-jsx": {
-      "version": "1.0.7",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.0.0",
-        "@babel/template": "^7.0.0",
-        "@babel/traverse": "^7.0.0",
-        "@babel/types": "^7.0.0",
-        "@vue/babel-helper-vue-transform-on": "^1.0.2",
-        "camelcase": "^6.0.0",
-        "html-tags": "^3.1.0",
-        "svg-tags": "^1.0.0"
-      }
-    },
-    "@vue/babel-plugin-transform-vue-jsx": {
-      "version": "1.2.1",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.0.0",
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "html-tags": "^2.0.0",
-        "lodash.kebabcase": "^4.1.1",
-        "svg-tags": "^1.0.0"
-      },
-      "dependencies": {
-        "html-tags": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-preset-app": {
-      "version": "4.5.13",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.11.0",
-        "@babel/helper-compilation-targets": "^7.9.6",
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/plugin-proposal-class-properties": "^7.8.3",
-        "@babel/plugin-proposal-decorators": "^7.8.3",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-jsx": "^7.8.3",
-        "@babel/plugin-transform-runtime": "^7.11.0",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.0",
-        "@vue/babel-plugin-jsx": "^1.0.3",
-        "@vue/babel-preset-jsx": "^1.2.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3",
-        "core-js": "^3.6.5",
-        "core-js-compat": "^3.6.5",
-        "semver": "^6.1.0"
-      },
-      "dependencies": {
-        "@babel/core": {
-          "version": "7.15.5",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.14.5",
-            "@babel/generator": "^7.15.4",
-            "@babel/helper-compilation-targets": "^7.15.4",
-            "@babel/helper-module-transforms": "^7.15.4",
-            "@babel/helpers": "^7.15.4",
-            "@babel/parser": "^7.15.5",
-            "@babel/template": "^7.15.4",
-            "@babel/traverse": "^7.15.4",
-            "@babel/types": "^7.15.4",
-            "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"
-          }
-        },
-        "@babel/preset-env": {
-          "version": "7.15.6",
-          "dev": true,
-          "requires": {
-            "@babel/compat-data": "^7.15.0",
-            "@babel/helper-compilation-targets": "^7.15.4",
-            "@babel/helper-plugin-utils": "^7.14.5",
-            "@babel/helper-validator-option": "^7.14.5",
-            "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4",
-            "@babel/plugin-proposal-async-generator-functions": "^7.15.4",
-            "@babel/plugin-proposal-class-properties": "^7.14.5",
-            "@babel/plugin-proposal-class-static-block": "^7.15.4",
-            "@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.15.6",
-            "@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.15.4",
-            "@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.15.3",
-            "@babel/plugin-transform-classes": "^7.15.4",
-            "@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.15.4",
-            "@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.15.4",
-            "@babel/plugin-transform-modules-systemjs": "^7.15.4",
-            "@babel/plugin-transform-modules-umd": "^7.14.5",
-            "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9",
-            "@babel/plugin-transform-new-target": "^7.14.5",
-            "@babel/plugin-transform-object-super": "^7.14.5",
-            "@babel/plugin-transform-parameters": "^7.15.4",
-            "@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.15.6",
-            "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.16.0",
-            "semver": "^6.3.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-preset-jsx": {
-      "version": "1.2.4",
-      "dev": true,
-      "requires": {
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
-        "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
-        "@vue/babel-sugar-functional-vue": "^1.2.2",
-        "@vue/babel-sugar-inject-h": "^1.2.2",
-        "@vue/babel-sugar-v-model": "^1.2.3",
-        "@vue/babel-sugar-v-on": "^1.2.3"
-      }
-    },
-    "@vue/babel-sugar-composition-api-inject-h": {
-      "version": "1.2.1",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-composition-api-render-instance": {
-      "version": "1.2.4",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-functional-vue": {
-      "version": "1.2.2",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-inject-h": {
-      "version": "1.2.2",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0"
-      }
-    },
-    "@vue/babel-sugar-v-model": {
-      "version": "1.2.3",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "camelcase": "^5.0.0",
-        "html-tags": "^2.0.0",
-        "svg-tags": "^1.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "dev": true
-        },
-        "html-tags": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "@vue/babel-sugar-v-on": {
-      "version": "1.2.3",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-jsx": "^7.2.0",
-        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
-        "camelcase": "^5.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "dev": true
-        }
-      }
-    },
-    "@vue/cli-overlay": {
-      "version": "4.5.13",
-      "dev": true
-    },
-    "@vue/cli-plugin-babel": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.9.0",
-        "@vue/babel-preset-app": "^4.3.0",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "babel-loader": "^8.1.0",
-        "cache-loader": "^4.1.0",
-        "thread-loader": "^2.1.3",
-        "webpack": "^4.0.0"
-      }
-    },
-    "@vue/cli-plugin-eslint": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "@vue/cli-shared-utils": "^4.3.0",
-        "eslint-loader": "^2.2.1",
-        "globby": "^9.2.0",
-        "inquirer": "^7.1.0",
-        "webpack": "^4.0.0",
-        "yorkie": "^2.0.0"
-      }
-    },
-    "@vue/cli-plugin-router": {
-      "version": "4.5.13",
-      "dev": true,
-      "requires": {
-        "@vue/cli-shared-utils": "^4.5.13"
-      }
-    },
-    "@vue/cli-plugin-typescript": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "@types/webpack-env": "^1.15.1",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "cache-loader": "^4.1.0",
-        "fork-ts-checker-webpack-plugin": "^3.1.1",
-        "globby": "^9.2.0",
-        "thread-loader": "^2.1.3",
-        "ts-loader": "^6.2.2",
-        "tslint": "^5.20.1",
-        "webpack": "^4.0.0",
-        "yorkie": "^2.0.0"
-      }
-    },
-    "@vue/cli-plugin-unit-jest": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.9.0",
-        "@babel/plugin-transform-modules-commonjs": "^7.9.0",
-        "@types/jest": "^24.0.19",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "babel-core": "^7.0.0-bridge.0",
-        "babel-jest": "^24.9.0",
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
-        "deepmerge": "^4.2.2",
-        "jest": "^24.9.0",
-        "jest-environment-jsdom-fifteen": "^1.0.2",
-        "jest-serializer-vue": "^2.0.2",
-        "jest-transform-stub": "^2.0.0",
-        "jest-watch-typeahead": "^0.4.2",
-        "ts-jest": "^24.2.0",
-        "vue-jest": "^3.0.5"
-      },
-      "dependencies": {
-        "jest-serializer-vue": {
-          "version": "2.0.2",
-          "dev": true,
-          "requires": {
-            "pretty": "2.0.0"
-          }
-        }
-      }
-    },
-    "@vue/cli-plugin-vuex": {
-      "version": "4.5.13",
-      "dev": true,
-      "requires": {}
-    },
-    "@vue/cli-service": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "@intervolga/optimize-cssnano-plugin": "^1.0.5",
-        "@soda/friendly-errors-webpack-plugin": "^1.7.1",
-        "@soda/get-current-script": "^1.0.0",
-        "@vue/cli-overlay": "^4.3.0",
-        "@vue/cli-plugin-router": "^4.3.0",
-        "@vue/cli-plugin-vuex": "^4.3.0",
-        "@vue/cli-shared-utils": "^4.3.0",
-        "@vue/component-compiler-utils": "^3.0.2",
-        "@vue/preload-webpack-plugin": "^1.1.0",
-        "@vue/web-component-wrapper": "^1.2.0",
-        "acorn": "^7.1.0",
-        "acorn-walk": "^7.1.1",
-        "address": "^1.1.2",
-        "autoprefixer": "^9.7.5",
-        "browserslist": "^4.11.1",
-        "cache-loader": "^4.1.0",
-        "case-sensitive-paths-webpack-plugin": "^2.3.0",
-        "cli-highlight": "^2.1.4",
-        "clipboardy": "^2.3.0",
-        "cliui": "^6.0.0",
-        "copy-webpack-plugin": "^5.1.1",
-        "css-loader": "^3.4.2",
-        "cssnano": "^4.1.10",
-        "debug": "^4.1.1",
-        "default-gateway": "^5.0.5",
-        "dotenv": "^8.2.0",
-        "dotenv-expand": "^5.1.0",
-        "file-loader": "^4.2.0",
-        "fs-extra": "^7.0.1",
-        "globby": "^9.2.0",
-        "hash-sum": "^2.0.0",
-        "html-webpack-plugin": "^3.2.0",
-        "launch-editor-middleware": "^2.2.1",
-        "lodash.defaultsdeep": "^4.6.1",
-        "lodash.mapvalues": "^4.6.0",
-        "lodash.transform": "^4.6.0",
-        "mini-css-extract-plugin": "^0.9.0",
-        "minimist": "^1.2.5",
-        "pnp-webpack-plugin": "^1.6.4",
-        "portfinder": "^1.0.25",
-        "postcss-loader": "^3.0.0",
-        "ssri": "^7.1.0",
-        "terser-webpack-plugin": "^2.3.5",
-        "thread-loader": "^2.1.3",
-        "url-loader": "^2.2.0",
-        "vue-loader": "^15.9.1",
-        "vue-style-loader": "^4.1.2",
-        "webpack": "^4.0.0",
-        "webpack-bundle-analyzer": "^3.6.1",
-        "webpack-chain": "^6.4.0",
-        "webpack-dev-server": "^3.10.3",
-        "webpack-merge": "^4.2.2"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "dev": true
-        },
-        "acorn-walk": {
-          "version": "7.2.0",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "cacache": {
-          "version": "13.0.1",
-          "dev": true,
-          "requires": {
-            "chownr": "^1.1.2",
-            "figgy-pudding": "^3.5.1",
-            "fs-minipass": "^2.0.0",
-            "glob": "^7.1.4",
-            "graceful-fs": "^4.2.2",
-            "infer-owner": "^1.0.4",
-            "lru-cache": "^5.1.1",
-            "minipass": "^3.0.0",
-            "minipass-collect": "^1.0.2",
-            "minipass-flush": "^1.0.5",
-            "minipass-pipeline": "^1.2.2",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "p-map": "^3.0.0",
-            "promise-inflight": "^1.0.1",
-            "rimraf": "^2.7.1",
-            "ssri": "^7.0.0",
-            "unique-filename": "^1.1.1"
-          }
-        },
-        "cliui": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^6.2.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "jest-worker": {
-          "version": "25.5.0",
-          "dev": true,
-          "requires": {
-            "merge-stream": "^2.0.0",
-            "supports-color": "^7.0.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        },
-        "ssri": {
-          "version": "7.1.1",
-          "dev": true,
-          "requires": {
-            "figgy-pudding": "^3.5.1",
-            "minipass": "^3.1.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "terser-webpack-plugin": {
-          "version": "2.3.8",
-          "dev": true,
-          "requires": {
-            "cacache": "^13.0.1",
-            "find-cache-dir": "^3.3.1",
-            "jest-worker": "^25.4.0",
-            "p-limit": "^2.3.0",
-            "schema-utils": "^2.6.6",
-            "serialize-javascript": "^4.0.0",
-            "source-map": "^0.6.1",
-            "terser": "^4.6.12",
-            "webpack-sources": "^1.4.3"
-          }
-        },
-        "wrap-ansi": {
-          "version": "6.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        }
-      }
-    },
-    "@vue/cli-shared-utils": {
-      "version": "4.5.13",
-      "dev": true,
-      "requires": {
-        "@hapi/joi": "^15.0.1",
-        "chalk": "^2.4.2",
-        "execa": "^1.0.0",
-        "launch-editor": "^2.2.1",
-        "lru-cache": "^5.1.1",
-        "node-ipc": "^9.1.1",
-        "open": "^6.3.0",
-        "ora": "^3.4.0",
-        "read-pkg": "^5.1.1",
-        "request": "^2.88.2",
-        "semver": "^6.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "@vue/component-compiler": {
-      "version": "4.2.4",
-      "dev": true,
-      "requires": {
-        "@vue/component-compiler-utils": "^3.0.0",
-        "clean-css": "^4.1.11",
-        "hash-sum": "^1.0.2",
-        "less": "^3.9.0",
-        "postcss-modules-sync": "^1.0.0",
-        "pug": "^3.0.1",
-        "sass": "^1.18.0",
-        "source-map": "0.6.*",
-        "stylus": "^0.54.5"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "@vue/component-compiler-utils": {
-      "version": "3.2.2",
-      "dev": true,
-      "requires": {
-        "consolidate": "^0.15.1",
-        "hash-sum": "^1.0.2",
-        "lru-cache": "^4.1.2",
-        "merge-source-map": "^1.1.0",
-        "postcss": "^7.0.36",
-        "postcss-selector-parser": "^6.0.2",
-        "prettier": "^1.18.2",
-        "source-map": "~0.6.1",
-        "vue-template-es2015-compiler": "^1.9.0"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "dev": true
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    },
-    "@vue/eslint-config-typescript": {
-      "version": "5.0.2",
-      "dev": true,
-      "requires": {
-        "vue-eslint-parser": "^7.0.0"
-      }
-    },
-    "@vue/preload-webpack-plugin": {
-      "version": "1.1.2",
-      "dev": true,
-      "requires": {}
-    },
-    "@vue/test-utils": {
-      "version": "1.0.0-beta.31",
-      "dev": true,
-      "requires": {
-        "dom-event-types": "^1.0.0",
-        "lodash": "^4.17.15",
-        "pretty": "^2.0.0"
-      }
-    },
-    "@vue/web-component-wrapper": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "@webassemblyjs/ast": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "@webassemblyjs/helper-api-error": {
-      "version": "1.9.0",
-      "dev": true
-    },
-    "@webassemblyjs/helper-buffer": {
-      "version": "1.9.0",
-      "dev": true
-    },
-    "@webassemblyjs/helper-code-frame": {
-      "version": "1.9.0",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/wast-printer": "1.9.0"
-      }
-    },
-    "@webassemblyjs/helper-fsm": {
-      "version": "1.9.0",
-      "dev": true
-    },
-    "@webassemblyjs/helper-module-context": {
-      "version": "1.9.0",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0"
-      }
-    },
-    "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.9.0",
-      "dev": true
-    },
-    "@webassemblyjs/helper-wasm-section": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "@webassemblyjs/leb128": {
-      "version": "1.9.0",
-      "dev": true,
-      "requires": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@webassemblyjs/utf8": {
-      "version": "1.9.0",
-      "dev": true
-    },
-    "@webassemblyjs/wasm-edit": {
-      "version": "1.9.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/wast-parser": "1.9.0",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "@xtuc/ieee754": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "@xtuc/long": {
-      "version": "4.2.2",
-      "dev": true
-    },
-    "abab": {
-      "version": "2.0.5",
-      "dev": true
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "accepts": {
-      "version": "1.3.7",
-      "dev": true,
-      "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      }
-    },
-    "acorn": {
-      "version": "6.4.2",
-      "dev": true
-    },
-    "acorn-globals": {
-      "version": "4.3.4",
-      "dev": true,
-      "requires": {
-        "acorn": "^6.0.1",
-        "acorn-walk": "^6.0.1"
-      }
-    },
-    "acorn-jsx": {
-      "version": "5.3.2",
-      "dev": true,
-      "requires": {}
-    },
-    "acorn-walk": {
-      "version": "6.2.0",
-      "dev": true
-    },
-    "address": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "agent-base": {
-      "version": "6.0.2",
-      "dev": true,
-      "requires": {
-        "debug": "4"
-      }
-    },
-    "aggregate-error": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      }
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {}
-    },
-    "ajv-keywords": {
-      "version": "3.5.2",
-      "dev": true,
-      "requires": {}
-    },
-    "alphanum-sort": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "ansi-colors": {
-      "version": "3.2.4",
-      "dev": true
-    },
-    "ansi-escapes": {
-      "version": "4.3.2",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.21.3"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.21.3",
-          "dev": true
-        }
-      }
-    },
-    "ansi-html": {
-      "version": "0.0.7",
-      "dev": true
-    },
-    "ansi-regex": {
-      "version": "5.0.0",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "any-promise": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "anymatch": {
-      "version": "3.1.2",
-      "dev": true,
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "aproba": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "arch": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "dev": true,
-      "requires": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "argv": {
-      "version": "0.0.2",
-      "dev": true
-    },
-    "arr-diff": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "array-equal": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "array-union": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "array-uniq": "^1.0.1"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "dev": true
-    },
-    "asap": {
-      "version": "2.0.6",
-      "dev": true,
-      "optional": true
-    },
-    "asn1": {
-      "version": "0.2.4",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "asn1.js": {
-      "version": "5.4.1",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "assert": {
-      "version": "1.5.0",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.1",
-          "dev": true
-        },
-        "util": {
-          "version": "0.10.3",
-          "dev": true,
-          "requires": {
-            "inherits": "2.0.1"
-          }
-        }
-      }
-    },
-    "assert-never": {
-      "version": "1.2.1",
-      "dev": true,
-      "optional": true
-    },
-    "assert-plus": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "astral-regex": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "async": {
-      "version": "2.6.4",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "async-limiter": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "dev": true
-    },
-    "atob": {
-      "version": "2.1.2",
-      "dev": true
-    },
-    "autoprefixer": {
-      "version": "9.8.6",
-      "dev": true,
-      "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"
-      }
-    },
-    "aws-sign2": {
-      "version": "0.7.0",
-      "dev": true
-    },
-    "aws4": {
-      "version": "1.11.0",
-      "dev": true
-    },
-    "babel-code-frame": {
-      "version": "6.26.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^1.1.3",
-        "esutils": "^2.0.2",
-        "js-tokens": "^3.0.2"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "js-tokens": {
-          "version": "3.0.2",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "babel-core": {
-      "version": "7.0.0-bridge.0",
-      "dev": true,
-      "requires": {}
-    },
-    "babel-jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/babel__core": "^7.1.0",
-        "babel-plugin-istanbul": "^5.1.0",
-        "babel-preset-jest": "^24.9.0",
-        "chalk": "^2.4.2",
-        "slash": "^2.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "babel-loader": {
-      "version": "8.2.2",
-      "dev": true,
-      "requires": {
-        "find-cache-dir": "^3.3.1",
-        "loader-utils": "^1.4.0",
-        "make-dir": "^3.1.0",
-        "schema-utils": "^2.6.5"
-      }
-    },
-    "babel-messages": {
-      "version": "6.23.0",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "dev": true,
-      "requires": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "babel-plugin-istanbul": {
-      "version": "5.2.0",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "find-up": "^3.0.0",
-        "istanbul-lib-instrument": "^3.3.0",
-        "test-exclude": "^5.2.3"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        }
-      }
-    },
-    "babel-plugin-jest-hoist": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@types/babel__traverse": "^7.0.6"
-      }
-    },
-    "babel-plugin-polyfill-corejs2": {
-      "version": "0.2.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "babel-plugin-polyfill-corejs3": {
-      "version": "0.2.4",
-      "dev": true,
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.2",
-        "core-js-compat": "^3.14.0"
-      }
-    },
-    "babel-plugin-polyfill-regenerator": {
-      "version": "0.2.2",
-      "dev": true,
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.2"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-commonjs": {
-      "version": "6.26.2",
-      "dev": true,
-      "requires": {
-        "babel-plugin-transform-strict-mode": "^6.24.1",
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-types": "^6.26.0"
-      }
-    },
-    "babel-plugin-transform-strict-mode": {
-      "version": "6.24.1",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-preset-jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
-        "babel-plugin-jest-hoist": "^24.9.0"
-      }
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "dev": true,
-      "requires": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "2.6.12",
-          "dev": true
-        },
-        "regenerator-runtime": {
-          "version": "0.11.1",
-          "dev": true
-        }
-      }
-    },
-    "babel-template": {
-      "version": "6.26.0",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-traverse": {
-      "version": "6.26.0",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "^6.26.0",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "debug": "^2.6.8",
-        "globals": "^9.18.0",
-        "invariant": "^2.2.2",
-        "lodash": "^4.17.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "globals": {
-          "version": "9.18.0",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "babel-types": {
-      "version": "6.26.0",
-      "dev": true,
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "esutils": "^2.0.2",
-        "lodash": "^4.17.4",
-        "to-fast-properties": "^1.0.3"
-      },
-      "dependencies": {
-        "to-fast-properties": {
-          "version": "1.0.3",
-          "dev": true
-        }
-      }
-    },
-    "babel-walk": {
-      "version": "3.0.0-canary-5",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "@babel/types": "^7.9.6"
-      }
-    },
-    "babylon": {
-      "version": "6.18.0",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "base": {
-      "version": "0.11.2",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "dev": true
-    },
-    "batch": {
-      "version": "0.6.1",
-      "dev": true
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "bfj": {
-      "version": "6.1.2",
-      "dev": true,
-      "requires": {
-        "bluebird": "^3.5.5",
-        "check-types": "^8.0.3",
-        "hoopy": "^0.1.4",
-        "tryer": "^1.0.1"
-      }
-    },
-    "big.js": {
-      "version": "5.2.2",
-      "dev": true
-    },
-    "binary-extensions": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "bindings": {
-      "version": "1.5.0",
-      "dev": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "bluebird": {
-      "version": "3.7.2",
-      "dev": true
-    },
-    "bn.js": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
-      "dev": true
-    },
-    "body-parser": {
-      "version": "1.19.0",
-      "dev": true,
-      "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": {
-        "debug": {
-          "version": "2.6.9",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.7.0",
-          "dev": true
-        }
-      }
-    },
-    "bonjour": {
-      "version": "3.5.0",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    },
-    "boolbase": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "2.3.2",
-      "dev": 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",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "brorand": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "browser-process-hrtime": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "browser-resolve": {
-      "version": "1.11.3",
-      "dev": true,
-      "requires": {
-        "resolve": "1.1.7"
-      },
-      "dependencies": {
-        "resolve": {
-          "version": "1.1.7",
-          "dev": true
-        }
-      }
-    },
-    "browserify-aes": {
-      "version": "1.2.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "browserify-aes": "^1.0.4",
-        "browserify-des": "^1.0.0",
-        "evp_bytestokey": "^1.0.0"
-      }
-    },
-    "browserify-des": {
-      "version": "1.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "browserify-sign": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
-      "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^5.2.1",
-        "browserify-rsa": "^4.1.0",
-        "create-hash": "^1.2.0",
-        "create-hmac": "^1.1.7",
-        "elliptic": "^6.5.4",
-        "inherits": "^2.0.4",
-        "parse-asn1": "^5.1.6",
-        "readable-stream": "^3.6.2",
-        "safe-buffer": "^5.2.1"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.2",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-          "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "dev": true
-        }
-      }
-    },
-    "browserify-zlib": {
-      "version": "0.2.0",
-      "dev": true,
-      "requires": {
-        "pako": "~1.0.5"
-      }
-    },
-    "browserslist": {
-      "version": "4.17.0",
-      "dev": true,
-      "requires": {
-        "caniuse-lite": "^1.0.30001254",
-        "colorette": "^1.3.0",
-        "electron-to-chromium": "^1.3.830",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.75"
-      }
-    },
-    "bs-logger": {
-      "version": "0.2.6",
-      "dev": true,
-      "requires": {
-        "fast-json-stable-stringify": "2.x"
-      }
-    },
-    "bser": {
-      "version": "2.1.1",
-      "dev": true,
-      "requires": {
-        "node-int64": "^0.4.0"
-      }
-    },
-    "buffer": {
-      "version": "4.9.2",
-      "dev": true,
-      "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "buffer-indexof": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "buffer-json": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "buffer-xor": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "builtin-modules": {
-      "version": "3.2.0",
-      "dev": true
-    },
-    "builtin-status-codes": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "bytes": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "cacache": {
-      "version": "12.0.4",
-      "dev": true,
-      "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"
-      }
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "dev": true,
-      "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"
-      }
-    },
-    "cache-loader": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "buffer-json": "^2.0.0",
-        "find-cache-dir": "^3.0.0",
-        "loader-utils": "^1.2.3",
-        "mkdirp": "^0.5.1",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^2.0.0"
-      }
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "call-me-maybe": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "caller-callsite": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "callsites": "^2.0.0"
-      },
-      "dependencies": {
-        "callsites": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "caller-path": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "caller-callsite": "^2.0.0"
-      }
-    },
-    "callsites": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "camel-case": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "no-case": "^2.2.0",
-        "upper-case": "^1.1.1"
-      }
-    },
-    "camelcase": {
-      "version": "6.2.0",
-      "dev": true
-    },
-    "caniuse-api": {
-      "version": "3.0.0",
-      "dev": true,
-      "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.30001255",
-      "dev": true
-    },
-    "capture-exit": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "rsvp": "^4.8.4"
-      }
-    },
-    "case-sensitive-paths-webpack-plugin": {
-      "version": "2.4.0",
-      "dev": true
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "dev": true
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      }
-    },
-    "character-parser": {
-      "version": "2.2.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "is-regex": "^1.0.3"
-      }
-    },
-    "chardet": {
-      "version": "0.7.0",
-      "dev": true
-    },
-    "check-types": {
-      "version": "8.0.3",
-      "dev": true
-    },
-    "chokidar": {
-      "version": "3.5.2",
-      "dev": 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"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "3.0.2",
-          "dev": true,
-          "requires": {
-            "fill-range": "^7.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "7.0.1",
-          "dev": true,
-          "requires": {
-            "to-regex-range": "^5.0.1"
-          }
-        },
-        "is-number": {
-          "version": "7.0.0",
-          "dev": true
-        },
-        "to-regex-range": {
-          "version": "5.0.1",
-          "dev": true,
-          "requires": {
-            "is-number": "^7.0.0"
-          }
-        }
-      }
-    },
-    "chownr": {
-      "version": "1.1.4",
-      "dev": true
-    },
-    "chrome-trace-event": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "ci-info": {
-      "version": "1.6.0",
-      "dev": true
-    },
-    "cipher-base": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "clean-css": {
-      "version": "4.2.3",
-      "dev": true,
-      "requires": {
-        "source-map": "~0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "clean-css-cli": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "clean-css": "^4.2.1",
-        "commander": "2.x",
-        "glob": "7.x"
-      }
-    },
-    "clean-stack": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "cli-cursor": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "restore-cursor": "^2.0.0"
-      }
-    },
-    "cli-highlight": {
-      "version": "2.1.11",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.0.0",
-        "highlight.js": "^10.7.1",
-        "mz": "^2.4.0",
-        "parse5": "^5.1.1",
-        "parse5-htmlparser2-tree-adapter": "^6.0.0",
-        "yargs": "^16.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "cliui": {
-          "version": "7.0.4",
-          "dev": true,
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^7.0.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "parse5": {
-          "version": "5.1.1",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "wrap-ansi": {
-          "version": "7.0.0",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "y18n": {
-          "version": "5.0.8",
-          "dev": true
-        },
-        "yargs": {
-          "version": "16.2.0",
-          "dev": true,
-          "requires": {
-            "cliui": "^7.0.2",
-            "escalade": "^3.1.1",
-            "get-caller-file": "^2.0.5",
-            "require-directory": "^2.1.1",
-            "string-width": "^4.2.0",
-            "y18n": "^5.0.5",
-            "yargs-parser": "^20.2.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "20.2.9",
-          "dev": true
-        }
-      }
-    },
-    "cli-spinners": {
-      "version": "2.6.0",
-      "dev": true
-    },
-    "cli-width": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "clipboardy": {
-      "version": "2.3.0",
-      "dev": true,
-      "requires": {
-        "arch": "^2.1.1",
-        "execa": "^1.0.0",
-        "is-wsl": "^2.1.1"
-      },
-      "dependencies": {
-        "is-wsl": {
-          "version": "2.2.0",
-          "dev": true,
-          "requires": {
-            "is-docker": "^2.0.0"
-          }
-        }
-      }
-    },
-    "cliui": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "string-width": "^3.1.0",
-        "strip-ansi": "^5.2.0",
-        "wrap-ansi": "^5.1.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "clone": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "co": {
-      "version": "4.6.0",
-      "dev": true
-    },
-    "coa": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      }
-    },
-    "codecov": {
-      "version": "3.7.2",
-      "dev": true,
-      "requires": {
-        "argv": "0.0.2",
-        "ignore-walk": "3.0.3",
-        "js-yaml": "3.13.1",
-        "teeny-request": "6.0.1",
-        "urlgrey": "0.4.4"
-      },
-      "dependencies": {
-        "js-yaml": {
-          "version": "3.13.1",
-          "dev": true,
-          "requires": {
-            "argparse": "^1.0.7",
-            "esprima": "^4.0.0"
-          }
-        }
-      }
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "color": {
-      "version": "3.2.1",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.3",
-        "color-string": "^1.6.0"
-      }
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "color-string": {
-      "version": "1.6.0",
-      "dev": true,
-      "requires": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "colorette": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "dev": true,
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.20.3",
-      "dev": true
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "compressible": {
-      "version": "2.0.18",
-      "dev": true,
-      "requires": {
-        "mime-db": ">= 1.43.0 < 2"
-      }
-    },
-    "compression": {
-      "version": "1.7.4",
-      "dev": true,
-      "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": {
-        "bytes": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "dev": true
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "concurrently": {
-      "version": "5.2.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "date-fns": "^2.0.1",
-        "lodash": "^4.17.15",
-        "read-pkg": "^4.0.1",
-        "rxjs": "^6.5.2",
-        "spawn-command": "^0.0.2-1",
-        "supports-color": "^6.1.0",
-        "tree-kill": "^1.2.2",
-        "yargs": "^13.3.0"
-      },
-      "dependencies": {
-        "parse-json": {
-          "version": "4.0.0",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.3.1",
-            "json-parse-better-errors": "^1.0.1"
-          }
-        },
-        "pify": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "4.0.1",
-          "dev": true,
-          "requires": {
-            "normalize-package-data": "^2.3.2",
-            "parse-json": "^4.0.0",
-            "pify": "^3.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "condense-newlines": {
-      "version": "0.2.1",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-whitespace": "^0.3.0",
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "config-chain": {
-      "version": "1.1.13",
-      "dev": true,
-      "requires": {
-        "ini": "^1.3.4",
-        "proto-list": "~1.2.1"
-      }
-    },
-    "connect-history-api-fallback": {
-      "version": "1.6.0",
-      "dev": true
-    },
-    "console-browserify": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "consolidate": {
-      "version": "0.15.1",
-      "dev": true,
-      "requires": {
-        "bluebird": "^3.1.1"
-      }
-    },
-    "constantinople": {
-      "version": "4.0.1",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "@babel/parser": "^7.6.0",
-        "@babel/types": "^7.6.1"
-      }
-    },
-    "constants-browserify": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "content-disposition": {
-      "version": "0.5.3",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "convert-source-map": {
-      "version": "1.8.0",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.1"
-      }
-    },
-    "cookie": {
-      "version": "0.4.0",
-      "dev": true
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "dev": true
-    },
-    "copy-anything": {
-      "version": "2.0.3",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "is-what": "^3.12.0"
-      }
-    },
-    "copy-concurrently": {
-      "version": "1.0.5",
-      "dev": true,
-      "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"
-      }
-    },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "copy-webpack-plugin": {
-      "version": "5.1.2",
-      "dev": true,
-      "requires": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "webpack-log": "^2.0.0"
-      },
-      "dependencies": {
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "globby": {
-          "version": "7.1.1",
-          "dev": true,
-          "requires": {
-            "array-union": "^1.0.1",
-            "dir-glob": "^2.0.0",
-            "glob": "^7.1.2",
-            "ignore": "^3.3.5",
-            "pify": "^3.0.0",
-            "slash": "^1.0.0"
-          },
-          "dependencies": {
-            "pify": {
-              "version": "3.0.0",
-              "dev": true
-            }
-          }
-        },
-        "ignore": {
-          "version": "3.3.10",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "make-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "slash": {
-          "version": "1.0.0",
-          "dev": true
-        }
-      }
-    },
-    "core-js": {
-      "version": "3.6.5",
-      "dev": true
-    },
-    "core-js-compat": {
-      "version": "3.17.3",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.17.0",
-        "semver": "7.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.0.0",
-          "dev": true
-        }
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "cosmiconfig": {
-      "version": "5.2.1",
-      "dev": true,
-      "requires": {
-        "import-fresh": "^2.0.0",
-        "is-directory": "^0.3.1",
-        "js-yaml": "^3.13.1",
-        "parse-json": "^4.0.0"
-      },
-      "dependencies": {
-        "parse-json": {
-          "version": "4.0.0",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.3.1",
-            "json-parse-better-errors": "^1.0.1"
-          }
-        }
-      }
-    },
-    "create-ecdh": {
-      "version": "4.0.4",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "dev": true
-        }
-      }
-    },
-    "create-hash": {
-      "version": "1.2.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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-env": {
-      "version": "7.0.3",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^7.0.1"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "7.0.3",
-          "dev": true,
-          "requires": {
-            "path-key": "^3.1.0",
-            "shebang-command": "^2.0.0",
-            "which": "^2.0.1"
-          }
-        },
-        "path-key": {
-          "version": "3.1.1",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "shebang-regex": "^3.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "cross-spawn": {
-      "version": "6.0.5",
-      "dev": true,
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "crypto-browserify": {
-      "version": "3.12.0",
-      "dev": true,
-      "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"
-      }
-    },
-    "css": {
-      "version": "2.2.4",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "css-color-names": {
-      "version": "0.0.4",
-      "dev": true
-    },
-    "css-declaration-sorter": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      }
-    },
-    "css-loader": {
-      "version": "3.6.0",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.3.1",
-        "cssesc": "^3.0.0",
-        "icss-utils": "^4.1.1",
-        "loader-utils": "^1.2.3",
-        "normalize-path": "^3.0.0",
-        "postcss": "^7.0.32",
-        "postcss-modules-extract-imports": "^2.0.0",
-        "postcss-modules-local-by-default": "^3.0.2",
-        "postcss-modules-scope": "^2.2.0",
-        "postcss-modules-values": "^3.0.0",
-        "postcss-value-parser": "^4.1.0",
-        "schema-utils": "^2.7.0",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "css-parse": {
-      "version": "2.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "css": "^2.0.0"
-      }
-    },
-    "css-select": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "css-select-base-adapter": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "css-selector-tokenizer": {
-      "version": "0.7.3",
-      "dev": true,
-      "requires": {
-        "cssesc": "^3.0.0",
-        "fastparse": "^1.1.2"
-      }
-    },
-    "css-tree": {
-      "version": "1.0.0-alpha.37",
-      "dev": true,
-      "requires": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "css-what": {
-      "version": "3.4.2",
-      "dev": true
-    },
-    "cssesc": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "cssnano": {
-      "version": "4.1.11",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^5.0.0",
-        "cssnano-preset-default": "^4.0.8",
-        "is-resolvable": "^1.0.0",
-        "postcss": "^7.0.0"
-      }
-    },
-    "cssnano-preset-default": {
-      "version": "4.0.8",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "cssnano-util-get-match": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "dev": true
-    },
-    "csso": {
-      "version": "4.2.0",
-      "dev": true,
-      "requires": {
-        "css-tree": "^1.1.2"
-      },
-      "dependencies": {
-        "css-tree": {
-          "version": "1.1.3",
-          "dev": true,
-          "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
-          }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "cssom": {
-      "version": "0.3.8",
-      "dev": true
-    },
-    "cssstyle": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "cssom": "0.3.x"
-      }
-    },
-    "cyclist": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "data-urls": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "abab": "^2.0.0",
-        "whatwg-mimetype": "^2.2.0",
-        "whatwg-url": "^7.0.0"
-      },
-      "dependencies": {
-        "whatwg-url": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "lodash.sortby": "^4.7.0",
-            "tr46": "^1.0.1",
-            "webidl-conversions": "^4.0.2"
-          }
-        }
-      }
-    },
-    "date-fns": {
-      "version": "2.23.0",
-      "dev": true
-    },
-    "de-indent": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "deasync": {
-      "version": "0.1.23",
-      "dev": true,
-      "requires": {
-        "bindings": "^1.5.0",
-        "node-addon-api": "^1.7.1"
-      }
-    },
-    "debug": {
-      "version": "4.3.2",
-      "dev": true,
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "decode-uri-component": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "deep-equal": {
-      "version": "1.1.1",
-      "dev": true,
-      "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-freeze": {
-      "version": "0.0.1",
-      "dev": true
-    },
-    "deep-is": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "deepmerge": {
-      "version": "4.2.2",
-      "dev": true
-    },
-    "default-gateway": {
-      "version": "5.0.5",
-      "dev": true,
-      "requires": {
-        "execa": "^3.3.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "7.0.3",
-          "dev": true,
-          "requires": {
-            "path-key": "^3.1.0",
-            "shebang-command": "^2.0.0",
-            "which": "^2.0.1"
-          }
-        },
-        "execa": {
-          "version": "3.4.0",
-          "dev": true,
-          "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",
-            "p-finally": "^2.0.0",
-            "signal-exit": "^3.0.2",
-            "strip-final-newline": "^2.0.0"
-          }
-        },
-        "get-stream": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        },
-        "is-stream": {
-          "version": "2.0.1",
-          "dev": true
-        },
-        "mimic-fn": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "npm-run-path": {
-          "version": "4.0.1",
-          "dev": true,
-          "requires": {
-            "path-key": "^3.0.0"
-          }
-        },
-        "onetime": {
-          "version": "5.1.2",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^2.1.0"
-          }
-        },
-        "p-finally": {
-          "version": "2.0.1",
-          "dev": true
-        },
-        "path-key": {
-          "version": "3.1.1",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "shebang-regex": "^3.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "defaults": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "clone": "^1.0.2"
-      }
-    },
-    "define-properties": {
-      "version": "1.1.3",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.0.12"
-      }
-    },
-    "define-property": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "del": {
-      "version": "4.1.1",
-      "dev": true,
-      "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": {
-        "globby": {
-          "version": "6.1.0",
-          "dev": true,
-          "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",
-              "dev": true
-            }
-          }
-        },
-        "p-map": {
-          "version": "2.1.0",
-          "dev": true
-        }
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "depd": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "des.js": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "detect-newline": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "detect-node": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "diff": {
-      "version": "4.0.2",
-      "dev": true
-    },
-    "diff-sequences": {
-      "version": "27.0.6",
-      "dev": true
-    },
-    "diffie-hellman": {
-      "version": "5.0.3",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "miller-rabin": "^4.0.0",
-        "randombytes": "^2.0.0"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "dev": true
-        }
-      }
-    },
-    "dir-glob": {
-      "version": "2.2.2",
-      "dev": true,
-      "requires": {
-        "path-type": "^3.0.0"
-      }
-    },
-    "dns-equal": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "dns-packet": {
-      "version": "1.3.4",
-      "dev": true,
-      "requires": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "dns-txt": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "buffer-indexof": "^1.0.0"
-      }
-    },
-    "doctrine": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "doctypes": {
-      "version": "1.1.0",
-      "dev": true,
-      "optional": true
-    },
-    "dom-converter": {
-      "version": "0.2.0",
-      "dev": true,
-      "requires": {
-        "utila": "~0.4"
-      }
-    },
-    "dom-event-types": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "dom-serializer": {
-      "version": "0.2.2",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.2.0",
-          "dev": true
-        }
-      }
-    },
-    "domain-browser": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "domelementtype": {
-      "version": "1.3.1",
-      "dev": true
-    },
-    "domexception": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "domhandler": {
-      "version": "4.2.2",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.2.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.2.0",
-          "dev": true
-        }
-      }
-    },
-    "domutils": {
-      "version": "1.7.0",
-      "dev": true,
-      "requires": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "dot-prop": {
-      "version": "5.3.0",
-      "dev": true,
-      "requires": {
-        "is-obj": "^2.0.0"
-      }
-    },
-    "dotenv": {
-      "version": "8.6.0",
-      "dev": true
-    },
-    "dotenv-expand": {
-      "version": "5.1.0",
-      "dev": true
-    },
-    "duplexer": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "duplexify": {
-      "version": "3.7.1",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "easy-stack": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "dev": true,
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "editorconfig": {
-      "version": "0.15.3",
-      "dev": true,
-      "requires": {
-        "commander": "^2.19.0",
-        "lru-cache": "^4.1.5",
-        "semver": "^5.6.0",
-        "sigmund": "^1.0.1"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "4.1.5",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "ejs": {
-      "version": "2.7.4",
-      "dev": true
-    },
-    "electron-to-chromium": {
-      "version": "1.3.833",
-      "dev": true
-    },
-    "elliptic": {
-      "version": "6.5.4",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "emoji-regex": {
-      "version": "8.0.0",
-      "dev": true
-    },
-    "emojis-list": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "dev": true,
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "enhanced-resolve": {
-      "version": "4.5.0",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.5.0",
-        "tapable": "^1.0.0"
-      },
-      "dependencies": {
-        "memory-fs": {
-          "version": "0.5.0",
-          "dev": true,
-          "requires": {
-            "errno": "^0.1.3",
-            "readable-stream": "^2.0.1"
-          }
-        }
-      }
-    },
-    "entities": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "errno": {
-      "version": "0.1.8",
-      "dev": true,
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
-    "error-ex": {
-      "version": "1.3.2",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "error-stack-parser": {
-      "version": "2.0.6",
-      "dev": true,
-      "requires": {
-        "stackframe": "^1.1.1"
-      }
-    },
-    "es-abstract": {
-      "version": "1.18.6",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.1.1",
-        "get-symbol-description": "^1.0.0",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.2",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.4",
-        "is-negative-zero": "^2.0.1",
-        "is-regex": "^1.1.4",
-        "is-string": "^1.0.7",
-        "object-inspect": "^1.11.0",
-        "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",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "escalade": {
-      "version": "3.1.1",
-      "dev": true
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "dev": true
-    },
-    "escodegen": {
-      "version": "1.14.3",
-      "dev": true,
-      "requires": {
-        "esprima": "^4.0.1",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "eslint": {
-      "version": "6.7.2",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "ajv": "^6.10.0",
-        "chalk": "^2.1.0",
-        "cross-spawn": "^6.0.5",
-        "debug": "^4.0.1",
-        "doctrine": "^3.0.0",
-        "eslint-scope": "^5.0.0",
-        "eslint-utils": "^1.4.3",
-        "eslint-visitor-keys": "^1.1.0",
-        "espree": "^6.1.2",
-        "esquery": "^1.0.1",
-        "esutils": "^2.0.2",
-        "file-entry-cache": "^5.0.1",
-        "functional-red-black-tree": "^1.0.1",
-        "glob-parent": "^5.0.0",
-        "globals": "^12.1.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "inquirer": "^7.0.0",
-        "is-glob": "^4.0.0",
-        "js-yaml": "^3.13.1",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.3.0",
-        "lodash": "^4.17.14",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.8.3",
-        "progress": "^2.0.0",
-        "regexpp": "^2.0.1",
-        "semver": "^6.1.2",
-        "strip-ansi": "^5.2.0",
-        "strip-json-comments": "^3.0.1",
-        "table": "^5.2.3",
-        "text-table": "^0.2.0",
-        "v8-compile-cache": "^2.0.3"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "eslint-utils": {
-          "version": "1.4.3",
-          "dev": true,
-          "requires": {
-            "eslint-visitor-keys": "^1.1.0"
-          }
-        },
-        "globals": {
-          "version": "12.4.0",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.8.1"
-          }
-        },
-        "import-fresh": {
-          "version": "3.3.0",
-          "dev": true,
-          "requires": {
-            "parent-module": "^1.0.0",
-            "resolve-from": "^4.0.0"
-          }
-        },
-        "regexpp": {
-          "version": "2.0.1",
-          "dev": true
-        },
-        "resolve-from": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        },
-        "strip-json-comments": {
-          "version": "3.1.1",
-          "dev": true
-        },
-        "type-fest": {
-          "version": "0.8.1",
-          "dev": true
-        }
-      }
-    },
-    "eslint-loader": {
-      "version": "2.2.1",
-      "dev": true,
-      "requires": {
-        "loader-fs-cache": "^1.0.0",
-        "loader-utils": "^1.0.2",
-        "object-assign": "^4.0.1",
-        "object-hash": "^1.1.4",
-        "rimraf": "^2.6.1"
-      }
-    },
-    "eslint-plugin-vue": {
-      "version": "6.2.2",
-      "dev": true,
-      "requires": {
-        "natural-compare": "^1.4.0",
-        "semver": "^5.6.0",
-        "vue-eslint-parser": "^7.0.0"
-      }
-    },
-    "eslint-scope": {
-      "version": "5.1.1",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "eslint-utils": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^1.1.0"
-      }
-    },
-    "eslint-visitor-keys": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "espree": {
-      "version": "6.2.1",
-      "dev": true,
-      "requires": {
-        "acorn": "^7.1.1",
-        "acorn-jsx": "^5.2.0",
-        "eslint-visitor-keys": "^1.1.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "dev": true
-        }
-      }
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "dev": true
-    },
-    "esquery": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.1.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "dev": true
-        }
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "dev": true
-        }
-      }
-    },
-    "estraverse": {
-      "version": "4.3.0",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "dev": true
-    },
-    "etag": {
-      "version": "1.8.1",
-      "dev": true
-    },
-    "event-pubsub": {
-      "version": "4.3.0",
-      "dev": true
-    },
-    "eventemitter3": {
-      "version": "4.0.7",
-      "dev": true
-    },
-    "events": {
-      "version": "3.3.0",
-      "dev": true
-    },
-    "eventsource": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "original": "^1.0.0"
-      }
-    },
-    "evp_bytestokey": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "exec-sh": {
-      "version": "0.3.6",
-      "dev": true
-    },
-    "execa": {
-      "version": "1.0.0",
-      "dev": true,
-      "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"
-      }
-    },
-    "exit": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "expect": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "ansi-styles": "^3.2.0",
-        "jest-get-type": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-regex-util": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        }
-      }
-    },
-    "express": {
-      "version": "4.17.1",
-      "dev": true,
-      "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": {
-        "debug": {
-          "version": "2.6.9",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.7.0",
-          "dev": true
-        }
-      }
-    },
-    "extend": {
-      "version": "3.0.2",
-      "dev": true
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "dev": true,
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "external-editor": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "chardet": "^0.7.0",
-        "iconv-lite": "^0.4.24",
-        "tmp": "^0.0.33"
-      }
-    },
-    "extglob": {
-      "version": "2.0.4",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "extract-from-css": {
-      "version": "0.4.4",
-      "dev": true,
-      "requires": {
-        "css": "^2.1.0"
-      }
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "dev": true
-    },
-    "fast-glob": {
-      "version": "2.2.7",
-      "dev": true,
-      "requires": {
-        "@mrmlnc/readdir-enhanced": "^2.2.1",
-        "@nodelib/fs.stat": "^1.1.2",
-        "glob-parent": "^3.1.0",
-        "is-glob": "^4.0.0",
-        "merge2": "^1.2.3",
-        "micromatch": "^3.1.10"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        }
-      }
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "dev": true
-    },
-    "fastparse": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "faye-websocket": {
-      "version": "0.11.4",
-      "dev": true,
-      "requires": {
-        "websocket-driver": ">=0.5.1"
-      }
-    },
-    "fb-watchman": {
-      "version": "2.0.1",
-      "dev": true,
-      "requires": {
-        "bser": "2.1.1"
-      }
-    },
-    "figgy-pudding": {
-      "version": "3.5.2",
-      "dev": true
-    },
-    "figures": {
-      "version": "3.2.0",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "file-entry-cache": {
-      "version": "5.0.1",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^2.0.1"
-      }
-    },
-    "file-loader": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.5.0"
-      }
-    },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "filesize": {
-      "version": "3.6.1",
-      "dev": true
-    },
-    "fill-range": {
-      "version": "4.0.0",
-      "dev": 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",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.2",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "find-babel-config": {
-      "version": "1.2.0",
-      "dev": true,
-      "requires": {
-        "json5": "^0.5.1",
-        "path-exists": "^3.0.0"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "0.5.1",
-          "dev": true
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        }
-      }
-    },
-    "find-cache-dir": {
-      "version": "3.3.2",
-      "dev": true,
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      }
-    },
-    "find-up": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "flat-cache": {
-      "version": "2.0.1",
-      "dev": true,
-      "requires": {
-        "flatted": "^2.0.0",
-        "rimraf": "2.6.3",
-        "write": "1.0.3"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.6.3",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
-    "flatted": {
-      "version": "2.0.2",
-      "dev": true
-    },
-    "flush-write-stream": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "follow-redirects": {
-      "version": "1.14.8",
-      "dev": true
-    },
-    "for-each": {
-      "version": "0.3.3",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "dev": true
-    },
-    "fork-ts-checker-webpack-plugin": {
-      "version": "3.1.1",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "^6.22.0",
-        "chalk": "^2.4.1",
-        "chokidar": "^3.3.0",
-        "micromatch": "^3.1.10",
-        "minimatch": "^3.0.4",
-        "semver": "^5.6.0",
-        "tapable": "^1.0.0",
-        "worker-rpc": "^0.1.0"
-      }
-    },
-    "form-data": {
-      "version": "2.3.3",
-      "dev": true,
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "forwarded": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "dev": true,
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "dev": true
-    },
-    "from2": {
-      "version": "2.3.0",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "fs-extra": {
-      "version": "7.0.1",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs-minipass": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "iferr": "^0.1.5",
-        "imurmurhash": "^0.1.4",
-        "readable-stream": "1 || 2"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "dev": true,
-      "optional": true
-    },
-    "full-icu": {
-      "version": "1.3.1",
-      "dev": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "functional-red-black-tree": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "generic-names": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^0.2.16"
-      },
-      "dependencies": {
-        "big.js": {
-          "version": "3.2.0",
-          "dev": true
-        },
-        "emojis-list": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "json5": {
-          "version": "0.5.1",
-          "dev": true
-        },
-        "loader-utils": {
-          "version": "0.2.17",
-          "dev": true,
-          "requires": {
-            "big.js": "^3.1.3",
-            "emojis-list": "^2.0.0",
-            "json5": "^0.5.0",
-            "object-assign": "^4.0.1"
-          }
-        }
-      }
-    },
-    "gensync": {
-      "version": "1.0.0-beta.2",
-      "dev": true
-    },
-    "get-caller-file": {
-      "version": "2.0.5",
-      "dev": true
-    },
-    "get-intrinsic": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
-      }
-    },
-    "get-stream": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "pump": "^3.0.0"
-      }
-    },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "get-value": {
-      "version": "2.0.6",
-      "dev": true
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "glob": {
-      "version": "7.1.7",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "is-glob": "^4.0.1"
-      }
-    },
-    "glob-to-regexp": {
-      "version": "0.3.0",
-      "dev": true
-    },
-    "globals": {
-      "version": "11.12.0",
-      "dev": true
-    },
-    "globby": {
-      "version": "9.2.0",
-      "dev": true,
-      "requires": {
-        "@types/glob": "^7.1.1",
-        "array-union": "^1.0.2",
-        "dir-glob": "^2.2.2",
-        "fast-glob": "^2.2.6",
-        "glob": "^7.1.3",
-        "ignore": "^4.0.3",
-        "pify": "^4.0.1",
-        "slash": "^2.0.0"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.8",
-      "dev": true
-    },
-    "growly": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "gzip-size": {
-      "version": "5.1.1",
-      "dev": true,
-      "requires": {
-        "duplexer": "^0.1.1",
-        "pify": "^4.0.1"
-      }
-    },
-    "handle-thing": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "har-schema": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "5.1.5",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "dev": true
-        }
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "has-symbols": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "has-value": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "has-values": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "4.0.0",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "hash-base": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "dev": true
-        }
-      }
-    },
-    "hash-sum": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "hash.js": {
-      "version": "1.1.7",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
-      }
-    },
-    "he": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "hex-color-regex": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "highlight.js": {
-      "version": "10.7.3",
-      "dev": true
-    },
-    "hmac-drbg": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
-    },
-    "hoopy": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "hosted-git-info": {
-      "version": "2.8.9",
-      "dev": true
-    },
-    "hpack.js": {
-      "version": "2.1.6",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      }
-    },
-    "hsl-regex": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "hsla-regex": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "html-encoding-sniffer": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "whatwg-encoding": "^1.0.1"
-      }
-    },
-    "html-entities": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "html-escaper": {
-      "version": "2.0.2",
-      "dev": true
-    },
-    "html-minifier": {
-      "version": "3.5.21",
-      "dev": true,
-      "requires": {
-        "camel-case": "3.0.x",
-        "clean-css": "4.2.x",
-        "commander": "2.17.x",
-        "he": "1.2.x",
-        "param-case": "2.1.x",
-        "relateurl": "0.2.x",
-        "uglify-js": "3.4.x"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.17.1",
-          "dev": true
-        }
-      }
-    },
-    "html-tags": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "html-webpack-plugin": {
-      "version": "3.2.0",
-      "dev": true,
-      "requires": {
-        "html-minifier": "^3.2.3",
-        "loader-utils": "^0.2.16",
-        "lodash": "^4.17.3",
-        "pretty-error": "^2.0.2",
-        "tapable": "^1.0.0",
-        "toposort": "^1.0.0",
-        "util.promisify": "1.0.0"
-      },
-      "dependencies": {
-        "big.js": {
-          "version": "3.2.0",
-          "dev": true
-        },
-        "emojis-list": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "json5": {
-          "version": "0.5.1",
-          "dev": true
-        },
-        "loader-utils": {
-          "version": "0.2.17",
-          "dev": true,
-          "requires": {
-            "big.js": "^3.1.3",
-            "emojis-list": "^2.0.0",
-            "json5": "^0.5.0",
-            "object-assign": "^4.0.1"
-          }
-        },
-        "util.promisify": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "define-properties": "^1.1.2",
-            "object.getownpropertydescriptors": "^2.0.3"
-          }
-        }
-      }
-    },
-    "htmlparser2": {
-      "version": "6.1.0",
-      "dev": true,
-      "requires": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "dom-serializer": {
-          "version": "1.3.2",
-          "dev": true,
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "domhandler": "^4.2.0",
-            "entities": "^2.0.0"
-          }
-        },
-        "domelementtype": {
-          "version": "2.2.0",
-          "dev": true
-        },
-        "domutils": {
-          "version": "2.8.0",
-          "dev": true,
-          "requires": {
-            "dom-serializer": "^1.0.1",
-            "domelementtype": "^2.2.0",
-            "domhandler": "^4.2.0"
-          }
-        }
-      }
-    },
-    "http-deceiver": {
-      "version": "1.2.7",
-      "dev": true
-    },
-    "http-errors": {
-      "version": "1.7.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "http-parser-js": {
-      "version": "0.5.3",
-      "dev": true
-    },
-    "http-proxy": {
-      "version": "1.18.1",
-      "dev": true,
-      "requires": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "http-proxy-agent": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4"
-      }
-    },
-    "http-proxy-middleware": {
-      "version": "0.19.1",
-      "dev": true,
-      "requires": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
-      }
-    },
-    "http-signature": {
-      "version": "1.2.0",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      }
-    },
-    "https-browserify": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "https-proxy-agent": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "agent-base": "5",
-        "debug": "4"
-      },
-      "dependencies": {
-        "agent-base": {
-          "version": "5.1.1",
-          "dev": true
-        }
-      }
-    },
-    "human-signals": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "dev": true,
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "icss-replace-symbols": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "icss-utils": {
-      "version": "4.1.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.14"
-      }
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "iferr": {
-      "version": "0.1.5",
-      "dev": true
-    },
-    "ignore": {
-      "version": "4.0.6",
-      "dev": true
-    },
-    "ignore-walk": {
-      "version": "3.0.3",
-      "dev": true,
-      "requires": {
-        "minimatch": "^3.0.4"
-      }
-    },
-    "image-size": {
-      "version": "0.5.5",
-      "dev": true,
-      "optional": true
-    },
-    "import-cwd": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "import-from": "^2.1.0"
-      }
-    },
-    "import-fresh": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-from": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-local": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "pkg-dir": "^3.0.0",
-        "resolve-cwd": "^2.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        }
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "indent-string": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "indexes-of": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "infer-owner": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "dev": true
-    },
-    "ini": {
-      "version": "1.3.8",
-      "dev": true
-    },
-    "inquirer": {
-      "version": "7.3.3",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.1.0",
-        "cli-cursor": "^3.1.0",
-        "cli-width": "^3.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^3.0.0",
-        "lodash": "^4.17.19",
-        "mute-stream": "0.0.8",
-        "run-async": "^2.4.0",
-        "rxjs": "^6.6.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0",
-        "through": "^2.3.6"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "cli-cursor": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "restore-cursor": "^3.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "mimic-fn": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "onetime": {
-          "version": "5.1.2",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^2.1.0"
-          }
-        },
-        "restore-cursor": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "onetime": "^5.1.0",
-            "signal-exit": "^3.0.2"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "internal-ip": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      },
-      "dependencies": {
-        "default-gateway": {
-          "version": "4.2.0",
-          "dev": true,
-          "requires": {
-            "execa": "^1.0.0",
-            "ip-regex": "^2.1.0"
-          }
-        }
-      }
-    },
-    "internal-slot": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "invariant": {
-      "version": "2.2.4",
-      "dev": true,
-      "requires": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "ip": {
-      "version": "1.1.5",
-      "dev": true
-    },
-    "ip-regex": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "ipaddr.js": {
-      "version": "1.9.1",
-      "dev": true
-    },
-    "is-absolute-url": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-arguments": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "dev": true
-    },
-    "is-bigint": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "dev": true
-    },
-    "is-callable": {
-      "version": "1.2.4",
-      "dev": true
-    },
-    "is-ci": {
-      "version": "1.2.1",
-      "dev": true,
-      "requires": {
-        "ci-info": "^1.5.0"
-      }
-    },
-    "is-color-stop": {
-      "version": "1.1.0",
-      "dev": true,
-      "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.6.0",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "is-directory": {
-      "version": "0.3.1",
-      "dev": true
-    },
-    "is-docker": {
-      "version": "2.2.1",
-      "dev": true
-    },
-    "is-expression": {
-      "version": "4.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "acorn": "^7.1.1",
-        "object-assign": "^4.1.1"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "dev": true
-    },
-    "is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "is-generator-fn": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-module": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "is-negative-zero": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "is-number": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-number-object": {
-      "version": "1.0.6",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-obj": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "is-path-cwd": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "is-path-in-cwd": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "is-path-inside": "^2.1.0"
-      }
-    },
-    "is-path-inside": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "path-is-inside": "^1.0.2"
-      }
-    },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-promise": {
-      "version": "2.2.2",
-      "dev": true,
-      "optional": true
-    },
-    "is-reference": {
-      "version": "1.2.1",
-      "dev": true,
-      "requires": {
-        "@types/estree": "*"
-      }
-    },
-    "is-regex": {
-      "version": "1.1.4",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-resolvable": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "is-stream": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "is-string": {
-      "version": "1.0.7",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "is-what": {
-      "version": "3.14.1",
-      "dev": true,
-      "optional": true
-    },
-    "is-whitespace": {
-      "version": "0.3.0",
-      "dev": true
-    },
-    "is-windows": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "is-wsl": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "dev": true
-    },
-    "istanbul-lib-instrument": {
-      "version": "3.3.0",
-      "dev": true,
-      "requires": {
-        "@babel/generator": "^7.4.0",
-        "@babel/parser": "^7.4.3",
-        "@babel/template": "^7.4.0",
-        "@babel/traverse": "^7.4.3",
-        "@babel/types": "^7.4.0",
-        "istanbul-lib-coverage": "^2.0.5",
-        "semver": "^6.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "istanbul-lib-report": {
-      "version": "2.0.8",
-      "dev": true,
-      "requires": {
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "istanbul-lib-source-maps": {
-      "version": "3.0.6",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "rimraf": "^2.6.3",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "istanbul-reports": {
-      "version": "2.2.7",
-      "dev": true,
-      "requires": {
-        "html-escaper": "^2.0.0"
-      }
-    },
-    "javascript-stringify": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "jest": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "import-local": "^2.0.0",
-        "jest-cli": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ci-info": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "is-ci": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "ci-info": "^2.0.0"
-          }
-        },
-        "jest-cli": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/core": "^24.9.0",
-            "@jest/test-result": "^24.9.0",
-            "@jest/types": "^24.9.0",
-            "chalk": "^2.0.1",
-            "exit": "^0.1.2",
-            "import-local": "^2.0.0",
-            "is-ci": "^2.0.0",
-            "jest-config": "^24.9.0",
-            "jest-util": "^24.9.0",
-            "jest-validate": "^24.9.0",
-            "prompts": "^2.0.1",
-            "realpath-native": "^1.1.0",
-            "yargs": "^13.3.0"
-          }
-        }
-      }
-    },
-    "jest-changed-files": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "execa": "^1.0.0",
-        "throat": "^4.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-config": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.1.0",
-        "@jest/test-sequencer": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "babel-jest": "^24.9.0",
-        "chalk": "^2.0.1",
-        "glob": "^7.1.1",
-        "jest-environment-jsdom": "^24.9.0",
-        "jest-environment-node": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "jest-jasmine2": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "pretty-format": "^24.9.0",
-        "realpath-native": "^1.1.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-diff": {
-      "version": "27.1.1",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.0.0",
-        "diff-sequences": "^27.0.6",
-        "jest-get-type": "^27.0.6",
-        "pretty-format": "^27.1.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-docblock": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "detect-newline": "^2.1.0"
-      }
-    },
-    "jest-each": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "jest-get-type": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-environment-jsdom": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jsdom": "^11.5.1"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-environment-jsdom-fifteen": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^24.3.0",
-        "@jest/fake-timers": "^24.3.0",
-        "@jest/types": "^24.3.0",
-        "jest-mock": "^24.0.0",
-        "jest-util": "^24.0.0",
-        "jsdom": "^15.2.1"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "acorn": {
-          "version": "7.4.1",
-          "dev": true
-        },
-        "cssom": {
-          "version": "0.4.4",
-          "dev": true
-        },
-        "cssstyle": {
-          "version": "2.3.0",
-          "dev": true,
-          "requires": {
-            "cssom": "~0.3.6"
-          },
-          "dependencies": {
-            "cssom": {
-              "version": "0.3.8",
-              "dev": true
-            }
-          }
-        },
-        "jsdom": {
-          "version": "15.2.1",
-          "dev": true,
-          "requires": {
-            "abab": "^2.0.0",
-            "acorn": "^7.1.0",
-            "acorn-globals": "^4.3.2",
-            "array-equal": "^1.0.0",
-            "cssom": "^0.4.1",
-            "cssstyle": "^2.0.0",
-            "data-urls": "^1.1.0",
-            "domexception": "^1.0.1",
-            "escodegen": "^1.11.1",
-            "html-encoding-sniffer": "^1.0.2",
-            "nwsapi": "^2.2.0",
-            "parse5": "5.1.0",
-            "pn": "^1.1.0",
-            "request": "^2.88.0",
-            "request-promise-native": "^1.0.7",
-            "saxes": "^3.1.9",
-            "symbol-tree": "^3.2.2",
-            "tough-cookie": "^3.0.1",
-            "w3c-hr-time": "^1.0.1",
-            "w3c-xmlserializer": "^1.1.2",
-            "webidl-conversions": "^4.0.2",
-            "whatwg-encoding": "^1.0.5",
-            "whatwg-mimetype": "^2.3.0",
-            "whatwg-url": "^7.0.0",
-            "ws": "^7.0.0",
-            "xml-name-validator": "^3.0.0"
-          }
-        },
-        "parse5": {
-          "version": "5.1.0",
-          "dev": true
-        },
-        "tough-cookie": {
-          "version": "3.0.1",
-          "dev": true,
-          "requires": {
-            "ip-regex": "^2.1.0",
-            "psl": "^1.1.28",
-            "punycode": "^2.1.1"
-          }
-        },
-        "whatwg-url": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "lodash.sortby": "^4.7.0",
-            "tr46": "^1.0.1",
-            "webidl-conversions": "^4.0.2"
-          }
-        },
-        "ws": {
-          "version": "7.5.5",
-          "dev": true,
-          "requires": {}
-        }
-      }
-    },
-    "jest-environment-node": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/environment": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-util": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-get-type": {
-      "version": "27.0.6",
-      "dev": true
-    },
-    "jest-haste-map": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "anymatch": "^2.0.0",
-        "fb-watchman": "^2.0.0",
-        "fsevents": "^1.2.7",
-        "graceful-fs": "^4.1.15",
-        "invariant": "^2.2.4",
-        "jest-serializer": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.9.0",
-        "micromatch": "^3.1.10",
-        "sane": "^4.0.3",
-        "walker": "^1.0.7"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "anymatch": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "normalize-path": {
-          "version": "2.1.1",
-          "dev": true,
-          "requires": {
-            "remove-trailing-separator": "^1.0.1"
-          }
-        }
-      }
-    },
-    "jest-jasmine2": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/traverse": "^7.1.0",
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "co": "^4.6.0",
-        "expect": "^24.9.0",
-        "is-generator-fn": "^2.0.0",
-        "jest-each": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "pretty-format": "^24.9.0",
-        "throat": "^4.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-leak-detector": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-matcher-utils": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.0.1",
-        "jest-diff": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "pretty-format": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "diff-sequences": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "jest-diff": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "chalk": "^2.0.1",
-            "diff-sequences": "^24.9.0",
-            "jest-get-type": "^24.9.0",
-            "pretty-format": "^24.9.0"
-          }
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-message-util": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/stack-utils": "^1.0.1",
-        "chalk": "^2.0.1",
-        "micromatch": "^3.1.10",
-        "slash": "^2.0.0",
-        "stack-utils": "^1.0.1"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-mock": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-pnp-resolver": {
-      "version": "1.2.2",
-      "dev": true,
-      "requires": {}
-    },
-    "jest-regex-util": {
-      "version": "24.9.0",
-      "dev": true
-    },
-    "jest-resolve": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "browser-resolve": "^1.11.3",
-        "chalk": "^2.0.1",
-        "jest-pnp-resolver": "^1.2.1",
-        "realpath-native": "^1.1.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-resolve-dependencies": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-snapshot": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-runner": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.4.2",
-        "exit": "^0.1.2",
-        "graceful-fs": "^4.1.15",
-        "jest-config": "^24.9.0",
-        "jest-docblock": "^24.3.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-jasmine2": "^24.9.0",
-        "jest-leak-detector": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "jest-runtime": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-worker": "^24.6.0",
-        "source-map-support": "^0.5.6",
-        "throat": "^4.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-runtime": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.9.0",
-        "@jest/source-map": "^24.3.0",
-        "@jest/transform": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/yargs": "^13.0.0",
-        "chalk": "^2.0.1",
-        "exit": "^0.1.2",
-        "glob": "^7.1.3",
-        "graceful-fs": "^4.1.15",
-        "jest-config": "^24.9.0",
-        "jest-haste-map": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-mock": "^24.9.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.9.0",
-        "jest-snapshot": "^24.9.0",
-        "jest-util": "^24.9.0",
-        "jest-validate": "^24.9.0",
-        "realpath-native": "^1.1.0",
-        "slash": "^2.0.0",
-        "strip-bom": "^3.0.0",
-        "yargs": "^13.3.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        }
-      }
-    },
-    "jest-serializer": {
-      "version": "24.9.0",
-      "dev": true
-    },
-    "jest-serializer-vue": {
-      "version": "0.3.0",
-      "dev": true,
-      "requires": {
-        "pretty": "2.0.0"
-      }
-    },
-    "jest-snapshot": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@babel/types": "^7.0.0",
-        "@jest/types": "^24.9.0",
-        "chalk": "^2.0.1",
-        "expect": "^24.9.0",
-        "jest-diff": "^24.9.0",
-        "jest-get-type": "^24.9.0",
-        "jest-matcher-utils": "^24.9.0",
-        "jest-message-util": "^24.9.0",
-        "jest-resolve": "^24.9.0",
-        "mkdirp": "^0.5.1",
-        "natural-compare": "^1.4.0",
-        "pretty-format": "^24.9.0",
-        "semver": "^6.2.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "diff-sequences": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "jest-diff": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "chalk": "^2.0.1",
-            "diff-sequences": "^24.9.0",
-            "jest-get-type": "^24.9.0",
-            "pretty-format": "^24.9.0"
-          }
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "jest-transform-stub": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "jest-util": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/console": "^24.9.0",
-        "@jest/fake-timers": "^24.9.0",
-        "@jest/source-map": "^24.9.0",
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "callsites": "^3.0.0",
-        "chalk": "^2.0.1",
-        "graceful-fs": "^4.1.15",
-        "is-ci": "^2.0.0",
-        "mkdirp": "^0.5.1",
-        "slash": "^2.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ci-info": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "is-ci": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "ci-info": "^2.0.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-validate": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^24.9.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^2.0.1",
-        "jest-get-type": "^24.9.0",
-        "leven": "^3.1.0",
-        "pretty-format": "^24.9.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "5.3.1",
-          "dev": true
-        },
-        "jest-get-type": {
-          "version": "24.9.0",
-          "dev": true
-        },
-        "pretty-format": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@jest/types": "^24.9.0",
-            "ansi-regex": "^4.0.0",
-            "ansi-styles": "^3.2.0",
-            "react-is": "^16.8.4"
-          }
-        },
-        "react-is": {
-          "version": "16.13.1",
-          "dev": true
-        }
-      }
-    },
-    "jest-watch-typeahead": {
-      "version": "0.4.2",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^2.4.1",
-        "jest-regex-util": "^24.9.0",
-        "jest-watcher": "^24.3.0",
-        "slash": "^3.0.0",
-        "string-length": "^3.1.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "slash": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "string-length": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "astral-regex": "^1.0.0",
-            "strip-ansi": "^5.2.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "jest-watcher": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "@jest/test-result": "^24.9.0",
-        "@jest/types": "^24.9.0",
-        "@types/yargs": "^13.0.0",
-        "ansi-escapes": "^3.0.0",
-        "chalk": "^2.0.1",
-        "jest-util": "^24.9.0",
-        "string-length": "^2.0.0"
-      },
-      "dependencies": {
-        "@jest/types": {
-          "version": "24.9.0",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "^2.0.0",
-            "@types/istanbul-reports": "^1.1.1",
-            "@types/yargs": "^13.0.0"
-          }
-        },
-        "@types/istanbul-reports": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "@types/istanbul-lib-coverage": "*",
-            "@types/istanbul-lib-report": "*"
-          }
-        },
-        "@types/yargs": {
-          "version": "13.0.12",
-          "dev": true,
-          "requires": {
-            "@types/yargs-parser": "*"
-          }
-        },
-        "ansi-escapes": {
-          "version": "3.2.0",
-          "dev": true
-        }
-      }
-    },
-    "jest-worker": {
-      "version": "24.9.0",
-      "dev": true,
-      "requires": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "6.1.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "js-base64": {
-      "version": "2.6.4",
-      "dev": true
-    },
-    "js-beautify": {
-      "version": "1.14.0",
-      "dev": true,
-      "requires": {
-        "config-chain": "^1.1.12",
-        "editorconfig": "^0.15.3",
-        "glob": "^7.1.3",
-        "nopt": "^5.0.0"
-      }
-    },
-    "js-message": {
-      "version": "1.0.7",
-      "dev": true
-    },
-    "js-queue": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "easy-stack": "^1.0.1"
-      }
-    },
-    "js-stringify": {
-      "version": "1.0.2",
-      "dev": true,
-      "optional": true
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "js-yaml": {
-      "version": "3.14.1",
-      "dev": true,
-      "requires": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      }
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "jsdom": {
-      "version": "11.12.0",
-      "dev": true,
-      "requires": {
-        "abab": "^2.0.0",
-        "acorn": "^5.5.3",
-        "acorn-globals": "^4.1.0",
-        "array-equal": "^1.0.0",
-        "cssom": ">= 0.3.2 < 0.4.0",
-        "cssstyle": "^1.0.0",
-        "data-urls": "^1.0.0",
-        "domexception": "^1.0.1",
-        "escodegen": "^1.9.1",
-        "html-encoding-sniffer": "^1.0.2",
-        "left-pad": "^1.3.0",
-        "nwsapi": "^2.0.7",
-        "parse5": "4.0.0",
-        "pn": "^1.1.0",
-        "request": "^2.87.0",
-        "request-promise-native": "^1.0.5",
-        "sax": "^1.2.4",
-        "symbol-tree": "^3.2.2",
-        "tough-cookie": "^2.3.4",
-        "w3c-hr-time": "^1.0.1",
-        "webidl-conversions": "^4.0.2",
-        "whatwg-encoding": "^1.0.3",
-        "whatwg-mimetype": "^2.1.0",
-        "whatwg-url": "^6.4.1",
-        "ws": "^5.2.0",
-        "xml-name-validator": "^3.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "5.7.4",
-          "dev": true
-        }
-      }
-    },
-    "jsesc": {
-      "version": "2.5.2",
-      "dev": true
-    },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "json-parse-even-better-errors": {
-      "version": "2.3.1",
-      "dev": true
-    },
-    "json-schema": {
-      "version": "0.2.3",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "dev": true
-    },
-    "json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "dev": true
-    },
-    "json3": {
-      "version": "3.3.3",
-      "dev": true
-    },
-    "json5": {
-      "version": "2.2.0",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsprim": {
-      "version": "1.4.1",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      }
-    },
-    "jstransformer": {
-      "version": "1.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "is-promise": "^2.0.0",
-        "promise": "^7.0.1"
-      }
-    },
-    "just-extend": {
-      "version": "4.2.1",
-      "dev": true
-    },
-    "killable": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "kind-of": {
-      "version": "6.0.3",
-      "dev": true
-    },
-    "kleur": {
-      "version": "3.0.3",
-      "dev": true
-    },
-    "launch-editor": {
-      "version": "2.2.1",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.3.0",
-        "shell-quote": "^1.6.1"
-      }
-    },
-    "launch-editor-middleware": {
-      "version": "2.2.1",
-      "dev": true,
-      "requires": {
-        "launch-editor": "^2.2.1"
-      }
-    },
-    "left-pad": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "less": {
-      "version": "3.13.1",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "copy-anything": "^2.0.1",
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "native-request": "^1.0.5",
-        "source-map": "~0.6.0",
-        "tslib": "^1.10.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "mime": {
-          "version": "1.6.0",
-          "dev": true,
-          "optional": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "leven": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "levenary": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "leven": "^3.1.0"
-      }
-    },
-    "levn": {
-      "version": "0.3.0",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      }
-    },
-    "lines-and-columns": {
-      "version": "1.1.6",
-      "dev": true
-    },
-    "load-json-file": {
-      "version": "4.0.0",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.3.1",
-            "json-parse-better-errors": "^1.0.1"
-          }
-        },
-        "pify": {
-          "version": "3.0.0",
-          "dev": true
-        }
-      }
-    },
-    "loader-fs-cache": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "find-cache-dir": "^0.1.1",
-        "mkdirp": "^0.5.1"
-      },
-      "dependencies": {
-        "find-cache-dir": {
-          "version": "0.1.1",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "mkdirp": "^0.5.1",
-            "pkg-dir": "^1.0.0"
-          }
-        },
-        "find-up": {
-          "version": "1.1.2",
-          "dev": true,
-          "requires": {
-            "path-exists": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "pinkie-promise": "^2.0.0"
-          }
-        },
-        "pkg-dir": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "find-up": "^1.0.0"
-          }
-        }
-      }
-    },
-    "loader-runner": {
-      "version": "2.4.0",
-      "dev": true
-    },
-    "loader-utils": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        }
-      }
-    },
-    "locate-path": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "dev": true
-    },
-    "lodash.debounce": {
-      "version": "4.0.8",
-      "dev": true
-    },
-    "lodash.defaultsdeep": {
-      "version": "4.6.1",
-      "dev": true
-    },
-    "lodash.get": {
-      "version": "4.4.2",
-      "dev": true
-    },
-    "lodash.kebabcase": {
-      "version": "4.1.1",
-      "dev": true
-    },
-    "lodash.mapvalues": {
-      "version": "4.6.0",
-      "dev": true
-    },
-    "lodash.memoize": {
-      "version": "4.1.2",
-      "dev": true
-    },
-    "lodash.sortby": {
-      "version": "4.7.0",
-      "dev": true
-    },
-    "lodash.transform": {
-      "version": "4.6.0",
-      "dev": true
-    },
-    "lodash.uniq": {
-      "version": "4.5.0",
-      "dev": true
-    },
-    "log-symbols": {
-      "version": "2.2.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.0.1"
-      }
-    },
-    "loglevel": {
-      "version": "1.7.1",
-      "dev": true
-    },
-    "loose-envify": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "lower-case": {
-      "version": "1.1.4",
-      "dev": true
-    },
-    "lru-cache": {
-      "version": "5.1.1",
-      "dev": true,
-      "requires": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "magic-string": {
-      "version": "0.25.7",
-      "dev": true,
-      "requires": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "make-dir": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "semver": "^6.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "make-error": {
-      "version": "1.3.6",
-      "dev": true
-    },
-    "makeerror": {
-      "version": "1.0.11",
-      "dev": true,
-      "requires": {
-        "tmpl": "1.0.x"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "dev": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "md5.js": {
-      "version": "1.3.5",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "mdn-data": {
-      "version": "2.0.4",
-      "dev": true
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "dev": true
-    },
-    "memory-fs": {
-      "version": "0.4.1",
-      "dev": true,
-      "requires": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "merge-source-map": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "merge2": {
-      "version": "1.4.1",
-      "dev": true
-    },
-    "methods": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "microevent.ts": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "3.1.10",
-      "dev": 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"
-      }
-    },
-    "miller-rabin": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.0.0",
-        "brorand": "^1.0.1"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "dev": true
-        }
-      }
-    },
-    "mime": {
-      "version": "2.5.2",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "1.49.0",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "2.1.32",
-      "dev": true,
-      "requires": {
-        "mime-db": "1.49.0"
-      }
-    },
-    "mimic-fn": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "mini-css-extract-plugin": {
-      "version": "0.9.0",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "normalize-url": "1.9.1",
-        "schema-utils": "^1.0.0",
-        "webpack-sources": "^1.1.0"
-      },
-      "dependencies": {
-        "normalize-url": {
-          "version": "1.9.1",
-          "dev": true,
-          "requires": {
-            "object-assign": "^4.0.1",
-            "prepend-http": "^1.0.0",
-            "query-string": "^4.1.0",
-            "sort-keys": "^1.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "minimalistic-assert": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.6",
-      "dev": true
-    },
-    "minipass": {
-      "version": "3.1.3",
-      "dev": true,
-      "requires": {
-        "yallist": "^4.0.0"
-      },
-      "dependencies": {
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "minipass-collect": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "minipass-flush": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "minipass-pipeline": {
-      "version": "1.2.4",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "mississippi": {
-      "version": "3.0.0",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.5",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "move-concurrently": {
-      "version": "1.0.1",
-      "dev": true,
-      "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"
-      }
-    },
-    "ms": {
-      "version": "2.1.2",
-      "dev": true
-    },
-    "multicast-dns": {
-      "version": "6.2.3",
-      "dev": true,
-      "requires": {
-        "dns-packet": "^1.3.1",
-        "thunky": "^1.0.2"
-      }
-    },
-    "multicast-dns-service-types": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "mute-stream": {
-      "version": "0.0.8",
-      "dev": true
-    },
-    "mz": {
-      "version": "2.7.0",
-      "dev": true,
-      "requires": {
-        "any-promise": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "thenify-all": "^1.0.0"
-      }
-    },
-    "nan": {
-      "version": "2.15.0",
-      "dev": true,
-      "optional": true
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "dev": true,
-      "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-request": {
-      "version": "1.1.0",
-      "dev": true,
-      "optional": true
-    },
-    "natural-compare": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "negotiator": {
-      "version": "0.6.2",
-      "dev": true
-    },
-    "neo-async": {
-      "version": "2.6.2",
-      "dev": true
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "dev": true
-    },
-    "nise": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1.7.0",
-        "@sinonjs/fake-timers": "^6.0.0",
-        "@sinonjs/text-encoding": "^0.7.1",
-        "just-extend": "^4.0.2",
-        "path-to-regexp": "^1.7.0"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "dev": true
-        },
-        "path-to-regexp": {
-          "version": "1.8.0",
-          "dev": true,
-          "requires": {
-            "isarray": "0.0.1"
-          }
-        }
-      }
-    },
-    "no-case": {
-      "version": "2.3.2",
-      "dev": true,
-      "requires": {
-        "lower-case": "^1.1.1"
-      }
-    },
-    "node-addon-api": {
-      "version": "1.7.2",
-      "dev": true
-    },
-    "node-cache": {
-      "version": "4.2.1",
-      "dev": true,
-      "requires": {
-        "clone": "2.x",
-        "lodash": "^4.17.15"
-      },
-      "dependencies": {
-        "clone": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    },
-    "node-fetch": {
-      "version": "2.6.7",
-      "dev": true,
-      "requires": {
-        "whatwg-url": "^5.0.0"
-      },
-      "dependencies": {
-        "tr46": {
-          "version": "0.0.3",
-          "dev": true
-        },
-        "webidl-conversions": {
-          "version": "3.0.1",
-          "dev": true
-        },
-        "whatwg-url": {
-          "version": "5.0.0",
-          "dev": true,
-          "requires": {
-            "tr46": "~0.0.3",
-            "webidl-conversions": "^3.0.0"
-          }
-        }
-      }
-    },
-    "node-forge": {
-      "version": "0.10.0",
-      "dev": true
-    },
-    "node-int64": {
-      "version": "0.4.0",
-      "dev": true
-    },
-    "node-ipc": {
-      "version": "9.2.1",
-      "dev": true,
-      "requires": {
-        "event-pubsub": "4.3.0",
-        "js-message": "1.0.7",
-        "js-queue": "2.0.2"
-      }
-    },
-    "node-libs-browser": {
-      "version": "2.2.1",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "node-modules-regexp": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "node-notifier": {
-      "version": "5.4.5",
-      "dev": true,
-      "requires": {
-        "growly": "^1.3.0",
-        "is-wsl": "^1.1.0",
-        "semver": "^5.5.0",
-        "shellwords": "^0.1.1",
-        "which": "^1.3.0"
-      }
-    },
-    "node-releases": {
-      "version": "1.1.75",
-      "dev": true
-    },
-    "nopt": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "abbrev": "1"
-      }
-    },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "normalize-range": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "normalize-url": {
-      "version": "3.3.0",
-      "dev": true
-    },
-    "npm-run-path": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "path-key": "^2.0.0"
-      }
-    },
-    "nth-check": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "num2fraction": {
-      "version": "1.2.2",
-      "dev": true
-    },
-    "nwsapi": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "dev": true
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "dev": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-hash": {
-      "version": "1.3.1",
-      "dev": true
-    },
-    "object-inspect": {
-      "version": "1.11.0",
-      "dev": true
-    },
-    "object-is": {
-      "version": "1.1.5",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "object-keys": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "object-visit": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.assign": {
-      "version": "4.1.2",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.getownpropertydescriptors": {
-      "version": "2.1.2",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.2"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "object.values": {
-      "version": "1.1.4",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.2"
-      }
-    },
-    "obuf": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "dev": true,
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "on-headers": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "once": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "onetime": {
-      "version": "2.0.1",
-      "dev": true,
-      "requires": {
-        "mimic-fn": "^1.0.0"
-      }
-    },
-    "open": {
-      "version": "6.4.0",
-      "dev": true,
-      "requires": {
-        "is-wsl": "^1.1.0"
-      }
-    },
-    "opener": {
-      "version": "1.5.2",
-      "dev": true
-    },
-    "opn": {
-      "version": "5.5.0",
-      "dev": true,
-      "requires": {
-        "is-wsl": "^1.1.0"
-      }
-    },
-    "optionator": {
-      "version": "0.8.3",
-      "dev": true,
-      "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"
-      }
-    },
-    "ora": {
-      "version": "3.4.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-spinners": "^2.0.0",
-        "log-symbols": "^2.2.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "original": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "url-parse": "^1.4.3"
-      }
-    },
-    "os-browserify": {
-      "version": "0.3.0",
-      "dev": true
-    },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "p-each-series": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "p-reduce": "^1.0.0"
-      }
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "dev": true,
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "p-limit": "^2.2.0"
-      }
-    },
-    "p-map": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "aggregate-error": "^3.0.0"
-      }
-    },
-    "p-reduce": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "p-retry": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "retry": "^0.12.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "pako": {
-      "version": "1.0.11",
-      "dev": true
-    },
-    "parallel-transform": {
-      "version": "1.2.0",
-      "dev": true,
-      "requires": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "param-case": {
-      "version": "2.1.1",
-      "dev": true,
-      "requires": {
-        "no-case": "^2.2.0"
-      }
-    },
-    "parent-module": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0"
-      }
-    },
-    "parse-asn1": {
-      "version": "5.1.6",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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": "4.0.0",
-      "dev": true
-    },
-    "parse5-htmlparser2-tree-adapter": {
-      "version": "6.0.1",
-      "dev": true,
-      "requires": {
-        "parse5": "^6.0.1"
-      },
-      "dependencies": {
-        "parse5": {
-          "version": "6.0.1",
-          "dev": true
-        }
-      }
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "dev": true
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "path-browserify": {
-      "version": "0.0.1",
-      "dev": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "path-is-inside": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.7",
-      "dev": true
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "dev": true
-    },
-    "path-type": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "pify": "^3.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "dev": true
-        }
-      }
-    },
-    "pbkdf2": {
-      "version": "3.1.2",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "picomatch": {
-      "version": "2.3.0",
-      "dev": true
-    },
-    "pify": {
-      "version": "4.0.1",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "dev": true,
-      "requires": {
-        "pinkie": "^2.0.0"
-      }
-    },
-    "pirates": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "node-modules-regexp": "^1.0.0"
-      }
-    },
-    "pkg-dir": {
-      "version": "4.2.0",
-      "dev": true,
-      "requires": {
-        "find-up": "^4.0.0"
-      }
-    },
-    "pn": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "pnp-webpack-plugin": {
-      "version": "1.7.0",
-      "dev": true,
-      "requires": {
-        "ts-pnp": "^1.1.6"
-      }
-    },
-    "portfinder": {
-      "version": "1.0.28",
-      "dev": true,
-      "requires": {
-        "async": "^2.6.2",
-        "debug": "^3.1.1",
-        "mkdirp": "^0.5.5"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "postcss": {
-      "version": "7.0.36",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "postcss-calc": {
-      "version": "7.0.5",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
-      }
-    },
-    "postcss-colormin": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-convert-values": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-discard-comments": {
-      "version": "4.0.2",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "postcss-discard-empty": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "postcss-discard-overridden": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "postcss-load-config": {
-      "version": "2.1.2",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^5.0.0",
-        "import-cwd": "^2.0.0"
-      }
-    },
-    "postcss-loader": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "postcss": "^7.0.0",
-        "postcss-load-config": "^2.0.0",
-        "schema-utils": "^1.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "postcss-merge-longhand": {
-      "version": "4.0.11",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-merge-rules": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "postcss-minify-font-values": {
-      "version": "4.0.2",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-gradients": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-params": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-minify-selectors": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "postcss-modules-extract-imports": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.5"
-      }
-    },
-    "postcss-modules-local-by-default": {
-      "version": "3.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0"
-      }
-    },
-    "postcss-modules-sync": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "generic-names": "^1.0.2",
-        "icss-replace-symbols": "^1.0.2",
-        "postcss": "^5.2.5",
-        "postcss-modules-local-by-default": "^1.1.1",
-        "postcss-modules-scope": "^1.0.2",
-        "string-hash": "^1.1.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          },
-          "dependencies": {
-            "supports-color": {
-              "version": "2.0.0",
-              "dev": true
-            }
-          }
-        },
-        "has-flag": {
-          "version": "1.0.0",
-          "dev": true
-        },
-        "postcss": {
-          "version": "5.2.18",
-          "dev": true,
-          "requires": {
-            "chalk": "^1.1.3",
-            "js-base64": "^2.1.9",
-            "source-map": "^0.5.6",
-            "supports-color": "^3.2.3"
-          }
-        },
-        "postcss-modules-local-by-default": {
-          "version": "1.2.0",
-          "dev": true,
-          "requires": {
-            "css-selector-tokenizer": "^0.7.0",
-            "postcss": "^6.0.1"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "3.2.1",
-              "dev": true,
-              "requires": {
-                "color-convert": "^1.9.0"
-              }
-            },
-            "chalk": {
-              "version": "2.4.2",
-              "dev": true,
-              "requires": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
-              }
-            },
-            "has-flag": {
-              "version": "3.0.0",
-              "dev": true
-            },
-            "postcss": {
-              "version": "6.0.23",
-              "dev": true,
-              "requires": {
-                "chalk": "^2.4.1",
-                "source-map": "^0.6.1",
-                "supports-color": "^5.4.0"
-              }
-            },
-            "source-map": {
-              "version": "0.6.1",
-              "dev": true
-            },
-            "supports-color": {
-              "version": "5.5.0",
-              "dev": true,
-              "requires": {
-                "has-flag": "^3.0.0"
-              }
-            }
-          }
-        },
-        "postcss-modules-scope": {
-          "version": "1.1.0",
-          "dev": true,
-          "requires": {
-            "css-selector-tokenizer": "^0.7.0",
-            "postcss": "^6.0.1"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "3.2.1",
-              "dev": true,
-              "requires": {
-                "color-convert": "^1.9.0"
-              }
-            },
-            "chalk": {
-              "version": "2.4.2",
-              "dev": true,
-              "requires": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
-              }
-            },
-            "has-flag": {
-              "version": "3.0.0",
-              "dev": true
-            },
-            "postcss": {
-              "version": "6.0.23",
-              "dev": true,
-              "requires": {
-                "chalk": "^2.4.1",
-                "source-map": "^0.6.1",
-                "supports-color": "^5.4.0"
-              }
-            },
-            "source-map": {
-              "version": "0.6.1",
-              "dev": true
-            },
-            "supports-color": {
-              "version": "5.5.0",
-              "dev": true,
-              "requires": {
-                "has-flag": "^3.0.0"
-              }
-            }
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "3.2.3",
-          "dev": true,
-          "requires": {
-            "has-flag": "^1.0.0"
-          }
-        }
-      }
-    },
-    "postcss-modules-values": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "icss-utils": "^4.0.0",
-        "postcss": "^7.0.6"
-      }
-    },
-    "postcss-normalize-charset": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-positions": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-string": {
-      "version": "4.0.2",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-url": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "is-absolute-url": "^2.0.0",
-        "normalize-url": "^3.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-ordered-values": {
-      "version": "4.1.2",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-reduce-initial": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "postcss-selector-parser": {
-      "version": "6.0.6",
-      "dev": true,
-      "requires": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      }
-    },
-    "postcss-svgo": {
-      "version": "4.0.3",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "svgo": "^1.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "dev": true
-        }
-      }
-    },
-    "postcss-unique-selectors": {
-      "version": "4.0.1",
-      "dev": true,
-      "requires": {
-        "alphanum-sort": "^1.0.0",
-        "postcss": "^7.0.0",
-        "uniqs": "^2.0.0"
-      }
-    },
-    "postcss-value-parser": {
-      "version": "4.1.0",
-      "dev": true
-    },
-    "prelude-ls": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "prepend-http": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "prettier": {
-      "version": "1.19.1",
-      "dev": true,
-      "optional": true
-    },
-    "pretty": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "condense-newlines": "^0.2.1",
-        "extend-shallow": "^2.0.1",
-        "js-beautify": "^1.6.12"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "pretty-error": {
-      "version": "2.1.2",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.20",
-        "renderkid": "^2.0.4"
-      }
-    },
-    "pretty-format": {
-      "version": "27.1.1",
-      "dev": true,
-      "requires": {
-        "@jest/types": "^27.1.1",
-        "ansi-regex": "^5.0.0",
-        "ansi-styles": "^5.0.0",
-        "react-is": "^17.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "5.2.0",
-          "dev": true
-        }
-      }
-    },
-    "process": {
-      "version": "0.11.10",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "progress": {
-      "version": "2.0.3",
-      "dev": true
-    },
-    "promise": {
-      "version": "7.3.1",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "asap": "~2.0.3"
-      }
-    },
-    "promise-inflight": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "prompts": {
-      "version": "2.4.1",
-      "dev": true,
-      "requires": {
-        "kleur": "^3.0.3",
-        "sisteransi": "^1.0.5"
-      }
-    },
-    "proto-list": {
-      "version": "1.2.4",
-      "dev": true
-    },
-    "proxy-addr": {
-      "version": "2.0.7",
-      "dev": true,
-      "requires": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      }
-    },
-    "prr": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "psl": {
-      "version": "1.8.0",
-      "dev": true
-    },
-    "public-encrypt": {
-      "version": "4.0.3",
-      "dev": true,
-      "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",
-          "dev": true
-        }
-      }
-    },
-    "pug": {
-      "version": "3.0.2",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "pug-code-gen": "^3.0.2",
-        "pug-filters": "^4.0.0",
-        "pug-lexer": "^5.0.1",
-        "pug-linker": "^4.0.0",
-        "pug-load": "^3.0.0",
-        "pug-parser": "^6.0.0",
-        "pug-runtime": "^3.0.1",
-        "pug-strip-comments": "^2.0.0"
-      }
-    },
-    "pug-attrs": {
-      "version": "3.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "js-stringify": "^1.0.2",
-        "pug-runtime": "^3.0.0"
-      }
-    },
-    "pug-code-gen": {
-      "version": "3.0.2",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "doctypes": "^1.1.0",
-        "js-stringify": "^1.0.2",
-        "pug-attrs": "^3.0.0",
-        "pug-error": "^2.0.0",
-        "pug-runtime": "^3.0.0",
-        "void-elements": "^3.1.0",
-        "with": "^7.0.0"
-      }
-    },
-    "pug-error": {
-      "version": "2.0.0",
-      "dev": true,
-      "optional": true
-    },
-    "pug-filters": {
-      "version": "4.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "constantinople": "^4.0.1",
-        "jstransformer": "1.0.0",
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0",
-        "resolve": "^1.15.1"
-      }
-    },
-    "pug-lexer": {
-      "version": "5.0.1",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "character-parser": "^2.2.0",
-        "is-expression": "^4.0.0",
-        "pug-error": "^2.0.0"
-      }
-    },
-    "pug-linker": {
-      "version": "4.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "pug-error": "^2.0.0",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "pug-load": {
-      "version": "3.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "pug-walk": "^2.0.0"
-      }
-    },
-    "pug-parser": {
-      "version": "6.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "pug-error": "^2.0.0",
-        "token-stream": "1.0.0"
-      }
-    },
-    "pug-runtime": {
-      "version": "3.0.1",
-      "dev": true,
-      "optional": true
-    },
-    "pug-strip-comments": {
-      "version": "2.0.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "pug-error": "^2.0.0"
-      }
-    },
-    "pug-walk": {
-      "version": "2.0.0",
-      "dev": true,
-      "optional": true
-    },
-    "pump": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "pumpify": {
-      "version": "1.5.1",
-      "dev": true,
-      "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      },
-      "dependencies": {
-        "pump": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
-        }
-      }
-    },
-    "punycode": {
-      "version": "2.1.1",
-      "dev": true
-    },
-    "q": {
-      "version": "1.5.1",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.5.2",
-      "dev": true
-    },
-    "query-string": {
-      "version": "4.3.4",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
-      }
-    },
-    "querystring": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "querystring-es3": {
-      "version": "0.2.1",
-      "dev": true
-    },
-    "querystringify": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "randombytes": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "randomfill": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "range-parser": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.4.0",
-      "dev": true,
-      "requires": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      }
-    },
-    "react-is": {
-      "version": "17.0.2",
-      "dev": true
-    },
-    "read-pkg": {
-      "version": "5.2.0",
-      "dev": true,
-      "requires": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      }
-    },
-    "read-pkg-up": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "find-up": "^3.0.0",
-        "read-pkg": "^3.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "read-pkg": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "load-json-file": "^4.0.0",
-            "normalize-package-data": "^2.3.2",
-            "path-type": "^3.0.0"
-          }
-        }
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "dev": true,
-      "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"
-      }
-    },
-    "readdirp": {
-      "version": "3.6.0",
-      "dev": true,
-      "requires": {
-        "picomatch": "^2.2.1"
-      }
-    },
-    "realpath-native": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "util.promisify": "^1.0.0"
-      }
-    },
-    "regenerate": {
-      "version": "1.4.2",
-      "dev": true
-    },
-    "regenerate-unicode-properties": {
-      "version": "8.2.0",
-      "dev": true,
-      "requires": {
-        "regenerate": "^1.4.0"
-      }
-    },
-    "regenerator-runtime": {
-      "version": "0.13.9",
-      "dev": true
-    },
-    "regenerator-transform": {
-      "version": "0.14.5",
-      "dev": true,
-      "requires": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "regex-not": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "regexp.prototype.flags": {
-      "version": "1.3.1",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "regexpp": {
-      "version": "3.2.0",
-      "dev": true
-    },
-    "regexpu-core": {
-      "version": "4.7.1",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "regjsparser": {
-      "version": "0.6.9",
-      "dev": true,
-      "requires": {
-        "jsesc": "~0.5.0"
-      },
-      "dependencies": {
-        "jsesc": {
-          "version": "0.5.0",
-          "dev": true
-        }
-      }
-    },
-    "relateurl": {
-      "version": "0.2.7",
-      "dev": true
-    },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "renderkid": {
-      "version": "2.0.7",
-      "dev": true,
-      "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",
-          "dev": true
-        },
-        "css-select": {
-          "version": "4.1.3",
-          "dev": true,
-          "requires": {
-            "boolbase": "^1.0.0",
-            "css-what": "^5.0.0",
-            "domhandler": "^4.2.0",
-            "domutils": "^2.6.0",
-            "nth-check": "^2.0.0"
-          }
-        },
-        "css-what": {
-          "version": "5.0.1",
-          "dev": true
-        },
-        "dom-serializer": {
-          "version": "1.3.2",
-          "dev": true,
-          "requires": {
-            "domelementtype": "^2.0.1",
-            "domhandler": "^4.2.0",
-            "entities": "^2.0.0"
-          }
-        },
-        "domelementtype": {
-          "version": "2.2.0",
-          "dev": true
-        },
-        "domutils": {
-          "version": "2.8.0",
-          "dev": true,
-          "requires": {
-            "dom-serializer": "^1.0.1",
-            "domelementtype": "^2.2.0",
-            "domhandler": "^4.2.0"
-          }
-        },
-        "nth-check": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "boolbase": "^1.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        }
-      }
-    },
-    "repeat-element": {
-      "version": "1.1.4",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "dev": true
-    },
-    "request": {
-      "version": "2.88.2",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "request-promise-core": {
-      "version": "1.1.4",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.19"
-      }
-    },
-    "request-promise-native": {
-      "version": "1.0.9",
-      "dev": true,
-      "requires": {
-        "request-promise-core": "1.1.4",
-        "stealthy-require": "^1.1.1",
-        "tough-cookie": "^2.3.3"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "dev": true
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.20.0",
-      "dev": true,
-      "requires": {
-        "is-core-module": "^2.2.0",
-        "path-parse": "^1.0.6"
-      }
-    },
-    "resolve-cwd": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "resolve-from": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "dev": true
-    },
-    "restore-cursor": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "onetime": "^2.0.0",
-        "signal-exit": "^3.0.2"
-      }
-    },
-    "ret": {
-      "version": "0.1.15",
-      "dev": true
-    },
-    "retry": {
-      "version": "0.12.0",
-      "dev": true
-    },
-    "rgb-regex": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "rgba-regex": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "ripemd160": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
-    },
-    "rollup": {
-      "version": "2.12.0",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.1.2"
-      },
-      "dependencies": {
-        "fsevents": {
-          "version": "2.1.3",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "rollup-copy-plugin": {
-      "version": "0.1.0",
-      "dev": true
-    },
-    "rollup-plugin-terser": {
-      "version": "6.1.0",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.8.3",
-        "jest-worker": "^26.0.0",
-        "serialize-javascript": "^3.0.0",
-        "terser": "^4.7.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "jest-worker": {
-          "version": "26.6.2",
-          "dev": true,
-          "requires": {
-            "@types/node": "*",
-            "merge-stream": "^2.0.0",
-            "supports-color": "^7.0.0"
-          }
-        },
-        "serialize-javascript": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "randombytes": "^2.1.0"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "rollup-plugin-vue": {
-      "version": "5.1.9",
-      "dev": true,
-      "requires": {
-        "@vue/component-compiler": "^4.2.3",
-        "@vue/component-compiler-utils": "^3.1.2",
-        "debug": "^4.1.1",
-        "hash-sum": "^1.0.2",
-        "magic-string": "^0.25.7",
-        "querystring": "^0.2.0",
-        "rollup-pluginutils": "^2.8.2",
-        "source-map": "0.7.3",
-        "vue-runtime-helpers": "^1.1.2"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "dev": true
-        }
-      }
-    },
-    "rollup-pluginutils": {
-      "version": "2.8.2",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^0.6.1"
-      },
-      "dependencies": {
-        "estree-walker": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "rsvp": {
-      "version": "4.8.5",
-      "dev": true
-    },
-    "run-async": {
-      "version": "2.4.1",
-      "dev": true
-    },
-    "run-queue": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "rxjs": {
-      "version": "6.6.7",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.9.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "dev": true
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "dev": true
-    },
-    "sane": {
-      "version": "4.1.0",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          }
-        },
-        "normalize-path": {
-          "version": "2.1.1",
-          "dev": true,
-          "requires": {
-            "remove-trailing-separator": "^1.0.1"
-          }
-        }
-      }
-    },
-    "sass": {
-      "version": "1.27.0",
-      "dev": true,
-      "requires": {
-        "chokidar": ">=2.0.0 <4.0.0"
-      }
-    },
-    "sax": {
-      "version": "1.2.4",
-      "dev": true
-    },
-    "saxes": {
-      "version": "3.1.11",
-      "dev": true,
-      "requires": {
-        "xmlchars": "^2.1.1"
-      }
-    },
-    "schema-utils": {
-      "version": "2.7.1",
-      "dev": true,
-      "requires": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      }
-    },
-    "select-hose": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "selfsigned": {
-      "version": "1.10.11",
-      "dev": true,
-      "requires": {
-        "node-forge": "^0.10.0"
-      }
-    },
-    "semver": {
-      "version": "5.7.1",
-      "dev": true
-    },
-    "send": {
-      "version": "0.17.1",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "dev": true
-            }
-          }
-        },
-        "mime": {
-          "version": "1.6.0",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.1.1",
-          "dev": true
-        }
-      }
-    },
-    "serialize-javascript": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "serve-index": {
-      "version": "1.9.1",
-      "dev": true,
-      "requires": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "dev": true,
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "dev": true
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.14.1",
-      "dev": true,
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      }
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.1",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "setimmediate": {
-      "version": "1.0.5",
-      "dev": true
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "sha.js": {
-      "version": "2.4.11",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "shell-quote": {
-      "version": "1.7.3",
-      "dev": true
-    },
-    "shellwords": {
-      "version": "0.1.1",
-      "dev": true
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "sigmund": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "signal-exit": {
-      "version": "3.0.3",
-      "dev": true
-    },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.3.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.3.2",
-          "dev": true
-        }
-      }
-    },
-    "sinon": {
-      "version": "9.0.3",
-      "dev": true,
-      "requires": {
-        "@sinonjs/commons": "^1.7.2",
-        "@sinonjs/fake-timers": "^6.0.1",
-        "@sinonjs/formatio": "^5.0.1",
-        "@sinonjs/samsam": "^5.1.0",
-        "diff": "^4.0.2",
-        "nise": "^4.0.4",
-        "supports-color": "^7.1.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "sisteransi": {
-      "version": "1.0.5",
-      "dev": true
-    },
-    "slash": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "slice-ansi": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.0",
-        "astral-regex": "^1.0.0",
-        "is-fullwidth-code-point": "^2.0.0"
-      },
-      "dependencies": {
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "dev": true,
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "sockjs": {
-      "version": "0.3.21",
-      "dev": true,
-      "requires": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^3.4.0",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "sockjs-client": {
-      "version": "1.5.2",
-      "dev": true,
-      "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.3"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "sort-keys": {
-      "version": "1.1.2",
-      "dev": true,
-      "requires": {
-        "is-plain-obj": "^1.0.0"
-      }
-    },
-    "source-list-map": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "source-map": {
-      "version": "0.5.7",
-      "dev": true
-    },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "dev": true,
-      "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"
-      }
-    },
-    "source-map-support": {
-      "version": "0.5.20",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.1",
-      "dev": true
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "dev": true
-    },
-    "spawn-command": {
-      "version": "0.0.2-1",
-      "dev": true
-    },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.3.0",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.10",
-      "dev": true
-    },
-    "spdy": {
-      "version": "4.0.2",
-      "dev": true,
-      "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",
-      "dev": true,
-      "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",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
-    "split-string": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "1.16.1",
-      "dev": true,
-      "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      }
-    },
-    "ssri": {
-      "version": "6.0.2",
-      "dev": true,
-      "requires": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "stable": {
-      "version": "0.1.8",
-      "dev": true
-    },
-    "stack-utils": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^2.0.0"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "2.0.0",
-          "dev": true
-        }
-      }
-    },
-    "stackframe": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "static-extend": {
-      "version": "0.1.2",
-      "dev": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "dev": true
-    },
-    "stealthy-require": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "stream-browserify": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "stream-each": {
-      "version": "1.2.3",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "stream-events": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "stubs": "^3.0.0"
-      }
-    },
-    "stream-http": {
-      "version": "2.8.3",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "strict-uri-encode": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "string-hash": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "string-length": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "astral-regex": "^1.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^3.0.0"
-          }
-        }
-      }
-    },
-    "string-width": {
-      "version": "4.2.2",
-      "dev": true,
-      "requires": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "strip-ansi": {
-      "version": "6.0.0",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^5.0.0"
-      }
-    },
-    "strip-bom": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "strip-final-newline": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "strip-indent": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "stubs": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "stylehacks": {
-      "version": "4.0.3",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
-      }
-    },
-    "stylus": {
-      "version": "0.54.8",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.3.0",
-        "source-map": "^0.7.3"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "mkdirp": {
-          "version": "1.0.4",
-          "dev": true,
-          "optional": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "dev": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true,
-          "optional": true
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "supports-color": {
-      "version": "5.5.0",
-      "dev": true,
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "svg-tags": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "svgo": {
-      "version": "1.3.2",
-      "dev": true,
-      "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": {
-        "util.promisify": {
-          "version": "1.0.1",
-          "dev": true,
-          "requires": {
-            "define-properties": "^1.1.3",
-            "es-abstract": "^1.17.2",
-            "has-symbols": "^1.0.1",
-            "object.getownpropertydescriptors": "^2.1.0"
-          }
-        }
-      }
-    },
-    "symbol-tree": {
-      "version": "3.2.4",
-      "dev": true
-    },
-    "table": {
-      "version": "5.4.6",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.10.2",
-        "lodash": "^4.17.14",
-        "slice-ansi": "^2.1.0",
-        "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "tapable": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "teeny-request": {
-      "version": "6.0.1",
-      "dev": true,
-      "requires": {
-        "http-proxy-agent": "^4.0.0",
-        "https-proxy-agent": "^4.0.0",
-        "node-fetch": "^2.2.0",
-        "stream-events": "^1.0.5",
-        "uuid": "^3.3.2"
-      }
-    },
-    "terser": {
-      "version": "4.8.1",
-      "dev": true,
-      "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "terser-webpack-plugin": {
-      "version": "1.4.5",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "make-dir": {
-          "version": "2.1.0",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "test-exclude": {
-      "version": "5.2.3",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3",
-        "minimatch": "^3.0.4",
-        "read-pkg-up": "^4.0.0",
-        "require-main-filename": "^2.0.0"
-      }
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "thenify": {
-      "version": "3.3.1",
-      "dev": true,
-      "requires": {
-        "any-promise": "^1.0.0"
-      }
-    },
-    "thenify-all": {
-      "version": "1.6.0",
-      "dev": true,
-      "requires": {
-        "thenify": ">= 3.1.0 < 4"
-      }
-    },
-    "thread-loader": {
-      "version": "2.1.3",
-      "dev": true,
-      "requires": {
-        "loader-runner": "^2.3.1",
-        "loader-utils": "^1.1.0",
-        "neo-async": "^2.6.0"
-      }
-    },
-    "throat": {
-      "version": "4.1.0",
-      "dev": true
-    },
-    "through": {
-      "version": "2.3.8",
-      "dev": true
-    },
-    "through2": {
-      "version": "2.0.5",
-      "dev": true,
-      "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "thunky": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "timers-browserify": {
-      "version": "2.0.12",
-      "dev": true,
-      "requires": {
-        "setimmediate": "^1.0.4"
-      }
-    },
-    "timsort": {
-      "version": "0.3.0",
-      "dev": true
-    },
-    "tmp": {
-      "version": "0.0.33",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "~1.0.2"
-      }
-    },
-    "tmpl": {
-      "version": "1.0.5",
-      "dev": true
-    },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "to-fast-properties": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "to-object-path": {
-      "version": "0.3.0",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "to-regex": {
-      "version": "3.0.2",
-      "dev": true,
-      "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": "2.1.1",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      }
-    },
-    "toidentifier": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "token-stream": {
-      "version": "1.0.0",
-      "dev": true,
-      "optional": true
-    },
-    "toposort": {
-      "version": "1.0.7",
-      "dev": true
-    },
-    "tough-cookie": {
-      "version": "2.5.0",
-      "dev": true,
-      "requires": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      }
-    },
-    "tr46": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "tree-kill": {
-      "version": "1.2.2",
-      "dev": true
-    },
-    "tryer": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "ts-jest": {
-      "version": "24.3.0",
-      "dev": true,
-      "requires": {
-        "bs-logger": "0.x",
-        "buffer-from": "1.x",
-        "fast-json-stable-stringify": "2.x",
-        "json5": "2.x",
-        "lodash.memoize": "4.x",
-        "make-error": "1.x",
-        "mkdirp": "0.x",
-        "resolve": "1.x",
-        "semver": "^5.5",
-        "yargs-parser": "10.x"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "yargs-parser": {
-          "version": "10.1.0",
-          "dev": true,
-          "requires": {
-            "camelcase": "^4.1.0"
-          }
-        }
-      }
-    },
-    "ts-loader": {
-      "version": "6.2.2",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.3.0",
-        "enhanced-resolve": "^4.0.0",
-        "loader-utils": "^1.0.2",
-        "micromatch": "^4.0.0",
-        "semver": "^6.0.0"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "3.0.2",
-          "dev": true,
-          "requires": {
-            "fill-range": "^7.0.1"
-          }
-        },
-        "fill-range": {
-          "version": "7.0.1",
-          "dev": true,
-          "requires": {
-            "to-regex-range": "^5.0.1"
-          }
-        },
-        "is-number": {
-          "version": "7.0.0",
-          "dev": true
-        },
-        "micromatch": {
-          "version": "4.0.4",
-          "dev": true,
-          "requires": {
-            "braces": "^3.0.1",
-            "picomatch": "^2.2.3"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        },
-        "to-regex-range": {
-          "version": "5.0.1",
-          "dev": true,
-          "requires": {
-            "is-number": "^7.0.0"
-          }
-        }
-      }
-    },
-    "ts-pnp": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "tsconfig": {
-      "version": "7.0.0",
-      "dev": true,
-      "requires": {
-        "@types/strip-bom": "^3.0.0",
-        "@types/strip-json-comments": "0.0.30",
-        "strip-bom": "^3.0.0",
-        "strip-json-comments": "^2.0.0"
-      }
-    },
-    "tslib": {
-      "version": "1.14.1",
-      "dev": true
-    },
-    "tslint": {
-      "version": "5.20.1",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "builtin-modules": "^1.1.1",
-        "chalk": "^2.3.0",
-        "commander": "^2.12.1",
-        "diff": "^4.0.1",
-        "glob": "^7.1.1",
-        "js-yaml": "^3.13.1",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "resolve": "^1.3.2",
-        "semver": "^5.3.0",
-        "tslib": "^1.8.0",
-        "tsutils": "^2.29.0"
-      },
-      "dependencies": {
-        "builtin-modules": {
-          "version": "1.1.1",
-          "dev": true
-        },
-        "tsutils": {
-          "version": "2.29.0",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.8.1"
-          }
-        }
-      }
-    },
-    "tsutils": {
-      "version": "3.21.0",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.8.1"
-      }
-    },
-    "tty-browserify": {
-      "version": "0.0.0",
-      "dev": true
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "dev": true
-    },
-    "type-check": {
-      "version": "0.3.2",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "~1.1.2"
-      }
-    },
-    "type-detect": {
-      "version": "4.0.8",
-      "dev": true
-    },
-    "type-fest": {
-      "version": "0.6.0",
-      "dev": true
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "dev": true,
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "dev": true
-    },
-    "typescript": {
-      "version": "3.8.3",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "3.4.10",
-      "dev": true,
-      "requires": {
-        "commander": "~2.19.0",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.19.0",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "unbox-primitive": {
-      "version": "1.0.1",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "unicode-match-property-ecmascript": {
-      "version": "1.0.4",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "unicode-property-aliases-ecmascript": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "union-value": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "uniq": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "uniqs": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "unique-filename": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "unique-slug": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "unquote": {
-      "version": "1.1.1",
-      "dev": true
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "dev": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "dev": true
-        }
-      }
-    },
-    "upath": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "upper-case": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "urix": {
-      "version": "0.1.0",
-      "dev": true
-    },
-    "url": {
-      "version": "0.11.0",
-      "dev": true,
-      "requires": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "dev": true
-        }
-      }
-    },
-    "url-loader": {
-      "version": "2.3.0",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.2.3",
-        "mime": "^2.4.4",
-        "schema-utils": "^2.5.0"
-      }
-    },
-    "url-parse": {
-      "version": "1.5.10",
-      "dev": true,
-      "requires": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "urlgrey": {
-      "version": "0.4.4",
-      "dev": true
-    },
-    "use": {
-      "version": "3.1.1",
-      "dev": true
-    },
-    "util": {
-      "version": "0.11.1",
-      "dev": true,
-      "requires": {
-        "inherits": "2.0.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "dev": true
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "util.promisify": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "for-each": "^0.3.3",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.1"
-      }
-    },
-    "utila": {
-      "version": "0.4.0",
-      "dev": true
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "dev": true
-    },
-    "v8-compile-cache": {
-      "version": "2.3.0",
-      "dev": true
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "vary": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "vendors": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "verror": {
-      "version": "1.10.0",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "vm-browserify": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "void-elements": {
-      "version": "3.1.0",
-      "dev": true,
-      "optional": true
-    },
-    "vue": {
-      "version": "2.6.11",
-      "dev": true
-    },
-    "vue-class-component": {
-      "version": "7.2.3",
-      "dev": true,
-      "requires": {}
-    },
-    "vue-eslint-parser": {
-      "version": "7.11.0",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "eslint-scope": "^5.1.1",
-        "eslint-visitor-keys": "^1.1.0",
-        "espree": "^6.2.1",
-        "esquery": "^1.4.0",
-        "lodash": "^4.17.21",
-        "semver": "^6.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        }
-      }
-    },
-    "vue-hot-reload-api": {
-      "version": "2.3.4",
-      "dev": true
-    },
-    "vue-jest": {
-      "version": "3.0.7",
-      "dev": true,
-      "requires": {
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
-        "chalk": "^2.1.0",
-        "deasync": "^0.1.15",
-        "extract-from-css": "^0.4.4",
-        "find-babel-config": "^1.1.0",
-        "js-beautify": "^1.6.14",
-        "node-cache": "^4.1.1",
-        "object-assign": "^4.1.1",
-        "source-map": "^0.5.6",
-        "tsconfig": "^7.0.0",
-        "vue-template-es2015-compiler": "^1.6.0"
-      }
-    },
-    "vue-loader": {
-      "version": "15.9.8",
-      "dev": true,
-      "requires": {
-        "@vue/component-compiler-utils": "^3.1.0",
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.1.0",
-        "vue-hot-reload-api": "^2.3.0",
-        "vue-style-loader": "^4.1.0"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "dev": true
-        }
-      }
-    },
-    "vue-property-decorator": {
-      "version": "8.4.1",
-      "dev": true,
-      "requires": {
-        "vue-class-component": "^7.1.0"
-      }
-    },
-    "vue-runtime-helpers": {
-      "version": "1.1.2",
-      "dev": true
-    },
-    "vue-style-loader": {
-      "version": "4.1.3",
-      "dev": true,
-      "requires": {
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.0.2"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "dev": true
-        }
-      }
-    },
-    "vue-template-compiler": {
-      "version": "2.6.11",
-      "dev": true,
-      "requires": {
-        "de-indent": "^1.0.2",
-        "he": "^1.1.0"
-      }
-    },
-    "vue-template-es2015-compiler": {
-      "version": "1.9.1",
-      "dev": true
-    },
-    "w3c-hr-time": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "browser-process-hrtime": "^1.0.0"
-      }
-    },
-    "w3c-xmlserializer": {
-      "version": "1.1.2",
-      "dev": true,
-      "requires": {
-        "domexception": "^1.0.1",
-        "webidl-conversions": "^4.0.2",
-        "xml-name-validator": "^3.0.0"
-      }
-    },
-    "walker": {
-      "version": "1.0.7",
-      "dev": true,
-      "requires": {
-        "makeerror": "1.0.x"
-      }
-    },
-    "watchpack": {
-      "version": "1.7.5",
-      "dev": true,
-      "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",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "chokidar": "^2.1.8"
-      },
-      "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "dev": true,
-          "optional": true
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "dev": true,
-          "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"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        }
-      }
-    },
-    "wbuf": {
-      "version": "1.7.3",
-      "dev": true,
-      "requires": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "wcwidth": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "defaults": "^1.0.3"
-      }
-    },
-    "webidl-conversions": {
-      "version": "4.0.2",
-      "dev": true
-    },
-    "webpack": {
-      "version": "4.46.0",
-      "dev": true,
-      "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.5.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": {
-        "eslint-scope": {
-          "version": "4.0.3",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.1.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
-      }
-    },
-    "webpack-bundle-analyzer": {
-      "version": "3.9.0",
-      "dev": true,
-      "requires": {
-        "acorn": "^7.1.1",
-        "acorn-walk": "^7.1.1",
-        "bfj": "^6.1.1",
-        "chalk": "^2.4.1",
-        "commander": "^2.18.0",
-        "ejs": "^2.6.1",
-        "express": "^4.16.3",
-        "filesize": "^3.6.1",
-        "gzip-size": "^5.0.0",
-        "lodash": "^4.17.19",
-        "mkdirp": "^0.5.1",
-        "opener": "^1.5.1",
-        "ws": "^6.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "7.4.1",
-          "dev": true
-        },
-        "acorn-walk": {
-          "version": "7.2.0",
-          "dev": true
-        },
-        "ws": {
-          "version": "6.2.2",
-          "dev": true,
-          "requires": {
-            "async-limiter": "~1.0.0"
-          }
-        }
-      }
-    },
-    "webpack-chain": {
-      "version": "6.5.1",
-      "dev": true,
-      "requires": {
-        "deepmerge": "^1.5.2",
-        "javascript-stringify": "^2.0.1"
-      },
-      "dependencies": {
-        "deepmerge": {
-          "version": "1.5.2",
-          "dev": true
-        }
-      }
-    },
-    "webpack-dev-middleware": {
-      "version": "3.7.3",
-      "dev": true,
-      "requires": {
-        "memory-fs": "^0.4.1",
-        "mime": "^2.4.4",
-        "mkdirp": "^0.5.1",
-        "range-parser": "^1.2.1",
-        "webpack-log": "^2.0.0"
-      }
-    },
-    "webpack-dev-server": {
-      "version": "3.11.2",
-      "dev": true,
-      "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",
-          "dev": true
-        },
-        "anymatch": {
-          "version": "2.0.0",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "dev": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "dev": true
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "dev": 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"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-absolute-url": {
-          "version": "3.0.3",
-          "dev": true
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "dev": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        },
-        "ws": {
-          "version": "6.2.2",
-          "dev": true,
-          "requires": {
-            "async-limiter": "~1.0.0"
-          }
-        }
-      }
-    },
-    "webpack-log": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "webpack-merge": {
-      "version": "4.2.2",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.15"
-      }
-    },
-    "webpack-sources": {
-      "version": "1.4.3",
-      "dev": true,
-      "requires": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "dev": true
-        }
-      }
-    },
-    "websocket-driver": {
-      "version": "0.7.4",
-      "dev": true,
-      "requires": {
-        "http-parser-js": ">=0.5.1",
-        "safe-buffer": ">=5.1.0",
-        "websocket-extensions": ">=0.1.1"
-      }
-    },
-    "websocket-extensions": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "whatwg-encoding": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "iconv-lite": "0.4.24"
-      }
-    },
-    "whatwg-mimetype": {
-      "version": "2.3.0",
-      "dev": true
-    },
-    "whatwg-url": {
-      "version": "6.5.0",
-      "dev": true,
-      "requires": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^1.0.1",
-        "webidl-conversions": "^4.0.2"
-      }
-    },
-    "which": {
-      "version": "1.3.1",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "dev": true,
-      "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",
-      "dev": true
-    },
-    "with": {
-      "version": "7.0.2",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "@babel/parser": "^7.9.6",
-        "@babel/types": "^7.9.6",
-        "assert-never": "^1.2.1",
-        "babel-walk": "3.0.0-canary-5"
-      }
-    },
-    "word-wrap": {
-      "version": "1.2.3",
-      "dev": true
-    },
-    "worker-farm": {
-      "version": "1.7.0",
-      "dev": true,
-      "requires": {
-        "errno": "~0.1.7"
-      }
-    },
-    "worker-rpc": {
-      "version": "0.1.1",
-      "dev": true,
-      "requires": {
-        "microevent.ts": "~0.1.1"
-      }
-    },
-    "wrap-ansi": {
-      "version": "5.1.0",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.0",
-        "string-width": "^3.0.0",
-        "strip-ansi": "^5.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "write": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "mkdirp": "^0.5.1"
-      }
-    },
-    "write-file-atomic": {
-      "version": "2.4.1",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "imurmurhash": "^0.1.4",
-        "signal-exit": "^3.0.2"
-      }
-    },
-    "ws": {
-      "version": "5.2.3",
-      "dev": true,
-      "requires": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "xml-name-validator": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "xmlchars": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "dev": true
-    },
-    "y18n": {
-      "version": "4.0.3",
-      "dev": true
-    },
-    "yallist": {
-      "version": "3.1.1",
-      "dev": true
-    },
-    "yargs": {
-      "version": "13.3.2",
-      "dev": true,
-      "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"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "dev": true
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "yargs-parser": {
-      "version": "13.1.2",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "dev": true
-        }
-      }
-    },
-    "yorkie": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "execa": "^0.8.0",
-        "is-ci": "^1.0.10",
-        "normalize-path": "^1.0.0",
-        "strip-indent": "^2.0.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "execa": {
-          "version": "0.8.0",
-          "dev": true,
-          "requires": {
-            "cross-spawn": "^5.0.1",
-            "get-stream": "^3.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": "3.0.0",
-          "dev": true
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "normalize-path": {
-          "version": "1.0.0",
-          "dev": true
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    }
-  }
-}
diff --git a/packages/oruga/package.json b/packages/oruga/package.json
deleted file mode 100644
index 21acfa7a4..000000000
--- a/packages/oruga/package.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
-  "name": "@oruga-ui/oruga",
-  "version": "0.7.0",
-  "homepage": "https://oruga.io",
-  "description": "UI components for Vue.js and CSS framework agnostic",
-  "author": "Walter Tommasi <tommsi20@gmail.com>",
-  "license": "MIT",
-  "main": "dist/cjs/index.js",
-  "module": "dist/esm/index.mjs",
-  "unpkg": "dist/oruga.min.js",
-  "typings": "types/index.d.ts",
-  "files": [
-    "dist",
-    "src",
-    "nuxt",
-    "types/*.d.ts"
-  ],
-  "sideEffects": [
-    "*.css",
-    "*.scss"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/oruga-ui/oruga.git"
-  },
-  "bugs": {
-    "url": "https://github.com/oruga-ui/oruga/issues"
-  },
-  "scripts": {
-    "ci": "npm run lint && cross-env NODE_ICU_DATA=node_modules/full-icu node --expose-gc ./node_modules/.bin/jest --logHeapUsage -u",
-    "lint": "eslint --ext .js,.vue src",
-    "lint:fix": "eslint --ext .js,.vue src --fix",
-    "lint:staged": "lint-staged",
-    "unit": "cross-env NODE_ICU_DATA=node_modules/full-icu jest --u",
-    "test": "npm run lint && npm run unit",
-    "test:watch": "npm run unit -- --watchAll",
-    "build:vue": "rollup -c && rollup -c --environment MINIFY",
-    "build:vue:watch": "rollup -c --watch",
-    "build:style": "npm run build:scss && npm run build:scss-vars && npm run build:scss-full",
-    "build:scss-vars": "sass --no-charset src/scss/oruga-full-vars.scss | node ./build/banner.js > dist/oruga-full-vars.css && cleancss -o dist/oruga-full-vars.min.css dist/oruga-full-vars.css",
-    "build:scss-full": "sass --no-charset src/scss/oruga-full.scss | node ./build/banner.js > dist/oruga-full.css && cleancss -o dist/oruga-full.min.css dist/oruga-full.css",
-    "build:scss": "sass --no-charset src/scss/oruga.scss | node ./build/banner.js > dist/oruga.css && cleancss -o dist/oruga.min.css dist/oruga.css",
-    "build:style:watch": "concurrently \"sass src/scss/oruga-full-vars.scss dist/oruga-full-vars.css --watch\" \"sass src/scss/oruga.scss dist/oruga.css --watch\"",
-    "build:lib": "rimraf dist && npm run build:vue && npm run build:style",
-    "build:lib:watch": "npm link && concurrently \"npm run build:vue:watch\" \"npm run build:style:watch\"",
-    "publish:lib": "cp ../../README.md . && npm run build:lib && npm publish"
-  },
-  "keywords": [
-    "oruga",
-    "vue",
-    "vuejs",
-    "components",
-    "ux",
-    "ui",
-    "css",
-    "agnostic",
-    "framework"
-  ],
-  "peerDependencies": {
-    "vue": "^2.6.11"
-  },
-  "devDependencies": {
-    "@babel/core": "7.10.2",
-    "@babel/preset-env": "7.10.2",
-    "@rollup/plugin-babel": "5.0.2",
-    "@rollup/plugin-commonjs": "12.0.0",
-    "@rollup/plugin-node-resolve": "8.0.0",
-    "@rollup/plugin-replace": "2.3.2",
-    "@types/jest": "24.0.19",
-    "@typescript-eslint/eslint-plugin": "2.26.0",
-    "@typescript-eslint/parser": "2.26.0",
-    "@vue/cli-plugin-babel": "4.3.0",
-    "@vue/cli-plugin-eslint": "4.3.0",
-    "@vue/cli-plugin-typescript": "4.3.0",
-    "@vue/cli-plugin-unit-jest": "4.3.0",
-    "@vue/cli-service": "4.3.0",
-    "@vue/eslint-config-typescript": "5.0.2",
-    "@vue/test-utils": "1.0.0-beta.31",
-    "clean-css-cli": "4.3.0",
-    "codecov": "3.7.2",
-    "concurrently": "5.2.0",
-    "core-js": "3.6.5",
-    "cross-env": "7.0.3",
-    "eslint": "6.7.2",
-    "eslint-plugin-vue": "6.2.2",
-    "full-icu": "1.3.1",
-    "jest-serializer-vue": "0.3.0",
-    "rollup": "2.12.0",
-    "rollup-copy-plugin": "0.1.0",
-    "rollup-plugin-terser": "6.1.0",
-    "rollup-plugin-vue": "5.1.9",
-    "sass": "1.27.0",
-    "sinon": "9.0.3",
-    "typescript": "3.8.3",
-    "vue": "2.6.11",
-    "vue-class-component": "7.2.3",
-    "vue-property-decorator": "8.4.1",
-    "vue-template-compiler": "2.6.11"
-  },
-  "dependencies": {}
-}
diff --git a/packages/oruga/rollup.config.js b/packages/oruga/rollup.config.js
deleted file mode 100644
index 73dd94543..000000000
--- a/packages/oruga/rollup.config.js
+++ /dev/null
@@ -1,142 +0,0 @@
-import vue from 'rollup-plugin-vue'
-import node from '@rollup/plugin-node-resolve'
-import cjs from '@rollup/plugin-commonjs'
-import babel from '@rollup/plugin-babel'
-import { terser } from 'rollup-plugin-terser'
-
-import fs from 'fs'
-import path from 'path'
-
-import pack from './package.json'
-
-const bannerText = require('./build/bannertext')
-
-const bannerTxt = bannerText.generate(pack.version)
-
-const baseFolder = './src/components/'
-
-const components = fs
-    .readdirSync(baseFolder)
-    .filter((f) =>
-        fs.statSync(path.join(baseFolder, f)).isDirectory()
-    )
-
-const entries = {
-    'index': './src/index.js',
-    'helpers': './src/utils/helpers.js',
-    'config': './src/utils/config.js',
-    ...components.reduce((obj, name) => {
-        obj[name] = (baseFolder + name)
-        return obj
-    }, {})
-}
-
-const babelOptions = {
-    babelHelpers: 'bundled'
-}
-
-const vuePluginConfig = {
-    template: {
-        isProduction: true,
-        compilerOptions: {
-            whitespace: 'condense'
-        }
-    }
-}
-
-const capitalize = (s) => {
-    if (typeof s !== 'string') return ''
-    return s.charAt(0).toUpperCase() + s.slice(1)
-}
-
-export default () => {
-    let config = [
-        {
-            input: entries,
-            external: ['vue'],
-            output: {
-                format: 'esm',
-                dir: `dist/esm`,
-                entryFileNames: '[name].mjs',
-                chunkFileNames: '[name]-[hash].mjs',
-            },
-            plugins: [
-                node({
-                    extensions: ['.vue', '.js']
-                }),
-                vue(vuePluginConfig),
-                babel(babelOptions),
-                cjs()
-            ]
-        },
-        {
-            input: entries,
-            external: ['vue'],
-            output: {
-                format: 'cjs',
-                dir: 'dist/cjs',
-                exports: 'named'
-            },
-            plugins: [
-                node({
-                    extensions: ['.vue', '.js']
-                }),
-                vue(vuePluginConfig),
-                babel(babelOptions),
-                cjs()
-            ]
-        },
-        {
-            input: 'src/index.js',
-            external: ['vue'],
-            output: {
-                format: 'umd',
-                name: capitalize('oruga'),
-                file: 'dist/oruga.js',
-                exports: 'named',
-                banner: bannerTxt,
-                globals: {
-                    vue: 'Vue'
-                }
-            },
-            plugins: [
-                node({
-                    extensions: ['.vue', '.js']
-                }),
-                vue(vuePluginConfig),
-                babel(babelOptions),
-                cjs()
-            ]
-        },
-        {
-            input: 'src/index.js',
-            external: ['vue'],
-            output: {
-                format: 'esm',
-                file: 'dist/oruga.mjs',
-                banner: bannerTxt
-            },
-            plugins: [
-                node({
-                    extensions: ['.vue', '.js']
-                }),
-                vue(vuePluginConfig),
-                babel(babelOptions),
-                cjs()
-            ]
-        }
-    ]
-
-    if (process.env.MINIFY === 'true') {
-        config = config.filter((c) => !!c.output.file)
-        config.forEach((c) => {
-            c.output.file = c.output.file.replace(/\.m?js/g, r => `.min${r}`)
-            c.plugins.push(terser({
-                output: {
-                    comments: '/^!/'
-                }
-            }))
-        })
-    }
-    return config
-}
diff --git a/packages/oruga/src/components/autocomplete/Autocomplete.spec.js b/packages/oruga/src/components/autocomplete/Autocomplete.spec.js
deleted file mode 100644
index e4779cf16..000000000
--- a/packages/oruga/src/components/autocomplete/Autocomplete.spec.js
+++ /dev/null
@@ -1,292 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OAutocomplete from '@components/autocomplete/Autocomplete'
-
-const findStringsStartingWith = (array, value) =>
-    array.filter((x) => x.startsWith(value))
-
-const DATA_LIST = [
-    'Angular',
-    'Angular 2',
-    'Aurelia',
-    'Backbone',
-    'Ember',
-    'jQuery',
-    'Meteor',
-    'Node.js',
-    'Polymer',
-    'React',
-    'RxJS',
-    'Vue.js'
-]
-const dropdownMenu = '.o-acp__menu'
-let wrapper, $input, $dropdown, stubs
-
-describe('OAutocomplete', () => {
-    beforeEach(() => {
-        stubs = {'o-icon': true}
-        wrapper = mount(OAutocomplete, {stubs})
-
-        $input = wrapper.find('input')
-        $dropdown = wrapper.find(dropdownMenu)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('has a dropdown menu hidden by default', () => {
-        expect(wrapper.contains(dropdownMenu)).toBeTruthy()
-        expect($dropdown.isVisible()).toBeFalsy()
-    })
-
-    it('can emit input, focus and blur events', async () => {
-        const VALUE_TYPED = 'test'
-        wrapper.setProps({ data: DATA_LIST })
-
-        $input.trigger('focus')
-        expect(wrapper.emitted()['focus']).toBeTruthy()
-        $input.setValue(VALUE_TYPED)
-
-        await wrapper.vm.$nextTick()
-
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(VALUE_TYPED)
-
-        $input.trigger('blur')
-        expect(wrapper.emitted()['blur']).toBeTruthy()
-    })
-
-    it('can autocomplete with keydown', async () => {
-        const VALUE_TYPED = 'Ang'
-        wrapper.setProps({ data: DATA_LIST })
-
-        $input.trigger('focus')
-        $input.setValue(VALUE_TYPED)
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        const itemsInDropdown = findStringsStartingWith(DATA_LIST, VALUE_TYPED)
-
-        $input.trigger('keydown', {'key': 'Down'})
-        $input.trigger('keydown', {'key': 'Enter'})
-        await wrapper.vm.$nextTick()
-
-        expect($input.element.value).toBe(itemsInDropdown[0])
-        expect(wrapper.vm.isActive).toBeFalsy()
-    })
-
-    it('close dropdown on esc', async () => {
-        jest.useFakeTimers()
-        wrapper.setProps({ data: DATA_LIST })
-
-        wrapper.vm.isActive = true
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        $input.trigger('keydown', {'key': 'Escape'})
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        wrapper.vm.calcDropdownInViewportVertical = jest.fn(
-            () => wrapper.vm.calcDropdownInViewportVertical
-        )
-        jest.runAllTimers()
-        expect(wrapper.vm.calcDropdownInViewportVertical).toHaveBeenCalled()
-        jest.useRealTimers()
-    })
-
-    it('close dropdown on click outside', async () => {
-        wrapper.setProps({ data: DATA_LIST })
-
-        wrapper.vm.isActive = true
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        window.document.body.click()
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.isActive).toBeFalsy()
-    })
-
-    it('open dropdown on down key click', async () => {
-        wrapper.setProps({ data: DATA_LIST })
-
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        $input.trigger('focus')
-        $input.trigger('keydown', {'key': 'Down'})
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('manages tab pressed as expected', async () => {
-        // hovered is null
-        $input.trigger('keydown', {'key': 'Tab'})
-        await wrapper.vm.$nextTick()
-        expect($dropdown.isVisible()).toBeFalsy()
-
-        // The first element will be hovered
-        wrapper.setProps({
-            openOnFocus: true,
-            keepFirst: true
-        })
-        wrapper.setProps({
-            data: DATA_LIST
-        })
-        // Set props in 2 steps to trigger Watch with keepFirst true so the 1st element is hovered
-
-        $input.trigger('focus')
-        await wrapper.vm.$nextTick()
-
-        $input.trigger('keydown', {'key': 'Tab'})
-        await wrapper.vm.$nextTick()
-        expect($input.element.value).toBe(DATA_LIST[0])
-    })
-
-    it('can openOnFocus and keepFirst', async () => {
-        wrapper.setProps({
-            openOnFocus: true,
-            keepFirst: true
-        })
-        wrapper.setProps({
-            data: DATA_LIST
-        }) // Set props in 2 steps to trigger the Watch for data having keepFirst true
-
-        expect($dropdown.isVisible()).toBeFalsy()
-
-        $input.trigger('focus')
-        await wrapper.vm.$nextTick()
-
-        expect($dropdown.isVisible()).toBeTruthy()
-
-        expect(wrapper.vm.hovered).toBe(DATA_LIST[0])
-    })
-
-    it('reset events before destroy', () => {
-        document.removeEventListener = jest.fn()
-        window.removeEventListener = jest.fn()
-
-        wrapper.destroy()
-
-        expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function))
-        expect(window.removeEventListener).toBeCalledWith('resize', expect.any(Function))
-    })
-
-    it('clear button does not exist when the search input is empty', async () => {
-        wrapper.setData({newValue: ''})
-        wrapper.setProps({ clearable: true })
-        await wrapper.vm.$nextTick()
-
-        const subject = wrapper.find('o-icon-stub').exists()
-        expect(subject).toBeFalsy()
-    })
-
-    it('clear button exists when the search input is not empty and clearable property is true', async () => {
-        wrapper.setData({ newValue: 'Jquery' })
-        wrapper.setProps({ clearable: true })
-        await wrapper.vm.$nextTick()
-
-        const subject = wrapper.find('o-icon-stub').exists()
-        expect(subject).toBeTruthy()
-    })
-
-    it('clears search input text when clear button gets clicked', async () => {
-        wrapper.setData({newValue: 'Jquery'})
-        wrapper.setProps({ clearable: true })
-        await wrapper.vm.$nextTick()
-
-        wrapper.find('o-icon-stub').trigger('click')
-        const subject = wrapper.vm.newValue
-        expect(subject).toEqual('')
-    })
-
-    it('clear button does not appear when clearable property is not set to true', () => {
-        wrapper.setData({newValue: 'Jquery'})
-        const subject = wrapper.find('o-icon-stub').exists()
-
-        expect(subject).toBeFalsy()
-    })
-
-    it('can emit select-header by keyboard and click', async () => {
-        const VALUE_TYPED = 'test'
-        const wrapper = mount(OAutocomplete, {
-            propsData: {
-                checkInfiniteScroll: true,
-                selectableHeader: true,
-                selectableFooter: true
-            },
-            slots: {
-                header: '<h1>SLOT HEADER</h1>',
-                footer: '<h1>SLOT FOOTER</h1>'
-            },
-            stubs
-        })
-        const $input = wrapper.find('input')
-
-        $input.trigger('focus')
-        $input.setValue(VALUE_TYPED)
-        await wrapper.vm.$nextTick()
-
-        $input.trigger('keydown', {'key': 'Down'})
-        $input.trigger('keydown', {'key': 'Enter'})
-        await wrapper.vm.$nextTick()
-
-        const $header = wrapper.find('.o-acp__item-header')
-        $header.trigger('click')
-        await wrapper.vm.$nextTick()
-
-        const emitted = wrapper.emitted()
-
-        expect(emitted['select-header']).toBeTruthy()
-        expect(emitted['select-header']).toHaveLength(2)
-    })
-
-    it('can emit select-footer by keyboard and click', async () => {
-        const VALUE_TYPED = 'test'
-        const wrapper = mount(OAutocomplete, {
-            propsData: {
-                checkInfiniteScroll: true,
-                selectableHeader: true,
-                selectableFooter: true
-            },
-            slots: {
-                header: '<h1>SLOT HEADER</h1>',
-                footer: '<h1>SLOT FOOTER</h1>'
-            },
-            stubs
-        })
-        const $input = wrapper.find('input')
-
-        $input.trigger('focus')
-        $input.setValue(VALUE_TYPED)
-        await wrapper.vm.$nextTick()
-
-        $input.trigger('keydown', {'key': 'Down'})
-        $input.trigger('keydown', {'key': 'Down'})
-        $input.trigger('keydown', {'key': 'Enter'})
-        $input.trigger('blur')
-        await wrapper.vm.$nextTick()
-
-        const $footer = wrapper.find('.o-acp__item-footer')
-        $footer.trigger('click')
-        await wrapper.vm.$nextTick()
-
-        const emitted = wrapper.emitted()
-
-        expect(emitted['select-footer']).toBeTruthy()
-        expect(emitted['select-footer']).toHaveLength(2)
-    }),
-
-    it('has configurable menu and item tags', () => {
-        wrapper.setProps({menuTag: 'ul', itemTag: 'li'})
-        wrapper.find('ul.o-acp__menu').exists()
-        wrapper.find('li.o-acp__item').exists()
-    })
-})
diff --git a/packages/oruga/src/components/autocomplete/Autocomplete.vue b/packages/oruga/src/components/autocomplete/Autocomplete.vue
deleted file mode 100644
index cf403df88..000000000
--- a/packages/oruga/src/components/autocomplete/Autocomplete.vue
+++ /dev/null
@@ -1,835 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <o-input
-            v-model="newValue"
-            ref="input"
-            :type="type"
-            v-bind="inputBind"
-            :size="size"
-            :rounded="rounded"
-            :icon="icon"
-            :icon-right="newIconRight"
-            :icon-right-clickable="newIconRightClickable"
-            :icon-pack="iconPack"
-            :maxlength="maxlength"
-            :autocomplete="newAutocomplete"
-            :use-html5-validation="false"
-            :aria-autocomplete="ariaAutocomplete"
-            :expanded="expanded"
-            @input="onInput"
-            @focus="focused"
-            @blur="onBlur"
-            @invalid="onInvalid"
-            @keydown.native="keydown"
-            @keydown.native.up.prevent="keyArrows('up')"
-            @keydown.native.down.prevent="keyArrows('down')"
-            @icon-right-click="rightIconClick"
-            @icon-click="(event) => $emit('icon-click', event)"
-        />
-
-        <transition :name="animation">
-            <div
-                :is="menuTag"
-                :class="menuClasses"
-                v-show="isActive && (!isEmpty || $slots.empty || $slots.header || $slots.footer)"
-                :style="menuStyle"
-                ref="dropdown">
-                <div
-                    v-if="$slots.header"
-                    :is="itemTag"
-                    ref="header"
-                    role="button"
-                    tabindex="0"
-                    @click="selectHeaderOrFoterByClick($event, 'header')"
-                    :class="itemHeaderClasses">
-                    <slot name="header"/>
-                </div>
-                <template v-for="(element, groupindex) in computedData">
-                    <div
-                        v-if="element.group"
-                        :key="groupindex + 'group'"
-                        :is="itemTag"
-                        :class="itemGroupClasses">
-                        <slot
-                            v-if="$scopedSlots.group"
-                            name="group"
-                            :group="element.group"
-                            :index="groupindex" />
-                        <span v-else>
-                            {{ element.group }}
-                        </span>
-                    </div>
-                    <div
-                        v-for="(option, index) in element.items"
-                        :is="itemTag"
-                        :key="groupindex + ':' + index"
-                        :class="itemOptionClasses(option)"
-                        @click.stop="setSelected(option, !keepOpen, $event)"
-                        ref="items"
-                    >
-                        <slot
-                            v-if="$scopedSlots.default"
-                            :option="option"
-                            :index="index" />
-                        <span v-else>
-                            {{ getValue(option) }}
-                        </span>
-                    </div>
-                </template>
-                <div
-                    v-if="isEmpty && $slots.empty"
-                    :is="itemTag"
-                    :class="itemEmptyClasses">
-                    <slot name="empty" />
-                </div>
-                <div
-                    v-if="$slots.footer"
-                    :is="itemTag"
-                    ref="footer"
-                    role="button"
-                    tabindex="0"
-                    @click="selectHeaderOrFoterByClick($event, 'footer')"
-                    :class="itemFooterClasses">
-                    <slot name="footer"/>
-                </div>
-            </div>
-        </transition>
-    </div>
-</template>
-
-<script>
-import Input from '../input/Input'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import FormElementMixin from '../../utils/FormElementMixin'
-import { getValueByPath, removeElement, createAbsoluteElement, toCssDimension, debounce } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * Extended input that provide suggestions while the user types
- * @displayName Autocomplete
- * @example ./examples/Autocomplete.md
- * @style _autocomplete.scss
- */
-export default {
-    name: 'OAutocomplete',
-    configField: 'autocomplete',
-    components: {
-        [Input.name]: Input
-    },
-    mixins: [BaseComponentMixin, FormElementMixin],
-    inheritAttrs: false,
-    props: {
-        /** @model */
-        value: [Number, String],
-        /** Options / suggestions */
-        data: {
-            type: Array,
-            default: () => []
-        },
-        /**
-         * Vertical size of input, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /** Property of the object (if data is array of objects) to use as display text, and to keep track of selected option */
-        field: {
-            type: String,
-            default: 'value'
-        },
-        /** The first option will always be pre-selected (easier to just hit enter or tab) */
-        keepFirst: Boolean,
-        /** Clear input text on select */
-        clearOnSelect: Boolean,
-        /** Open dropdown list on focus */
-        openOnFocus: Boolean,
-        /** Function to format an option to a string for display in the input as alternative to field prop) */
-        customFormatter: Function,
-        /** Makes the component check if list reached scroll end and emit infinite-scroll event. */
-        checkInfiniteScroll: Boolean,
-        /** Keep open dropdown list after select */
-        keepOpen: Boolean,
-        /** Add a button/icon to clear the inputed text */
-        clearable: Boolean,
-        /**
-         * Icon name to be added on the clear button
-         */
-        clearIcon: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'autocomplete.clearIcon', 'close-circle')
-            }
-        },
-        /** Max height of dropdown content */
-        maxHeight: [String, Number],
-        /**
-         * Position of dropdown
-         * @values auto, top, bottom
-         */
-        menuPosition: {
-            type: String,
-            default: 'auto'
-        },
-        /** Transition name to apply on dropdown list */
-        animation: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'autocomplete.animation', 'fade')
-            }
-        },
-        /** Property of the object (if <code>data</code> is array of objects) to use as display text of group */
-        groupField: String,
-        /** Property of the object (if <code>data</code> is array of objects) to use as key to get items array of each group, optional */
-        groupOptions: String,
-        /** Number of milliseconds to delay before to emit typing event */
-        debounceTyping: Number,
-        /** Icon name to be added on the right side */
-        iconRight: String,
-        /** Clickable icon right if exists */
-        iconRightClickable: Boolean,
-        /** Append autocomplete content to body */
-        appendToBody: Boolean,
-        /** Array of keys (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) which will add a tag when typing (default tab and enter) */
-        confirmKeys: {
-            type: Array,
-            default: () => ['Tab', 'Enter']
-        },
-        /** Input type */
-        type: {
-            type: String,
-            default: 'text'
-        },
-        /**
-         * Menu tag name
-         */
-        menuTag: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'autocomplete.menuTag', 'div')
-            }
-        },
-        /**
-         * Menu item tag name
-         */
-        itemTag: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'autocomplete.itemTag', 'div')
-            }
-        },
-        /** Trigger the select event for the first pre-selected option when clicking outside and <code>keep-first</code> is enabled */
-        selectOnClickOutside: Boolean,
-        /** Allows the header in the autocomplete to be selectable */
-        selectableHeader: Boolean,
-        /** Allows the footer in the autocomplete to be selectable */
-        selectableFooter: Boolean,
-        rootClass: [String, Function, Array],
-        menuClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        menuPositionClass: [String, Function, Array],
-        itemClass: [String, Function, Array],
-        itemHoverClass: [String, Function, Array],
-        itemGroupTitleClass: [String, Function, Array],
-        itemEmptyClass: [String, Function, Array],
-        itemHeaderClass: [String, Function, Array],
-        itemFooterClass: [String, Function, Array],
-        inputClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'autocomplete.inputClasses', {})
-            }
-        }
-    },
-    data() {
-        return {
-            selected: null,
-            hovered: null,
-            headerHovered: null,
-            footerHovered: null,
-            isActive: false,
-            newValue: this.value,
-            ariaAutocomplete: this.keepFirst ? 'both' : 'list',
-            newAutocomplete: this.autocomplete || 'off',
-            isListInViewportVertically: true,
-            hasFocus: false,
-            width: undefined,
-            bodyEl: undefined, // Used to append to body
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-acp'),
-                { [this.computedClass('expandedClass', 'o-acp--expanded')]: this.expanded }
-            ]
-        },
-        menuClasses() {
-            return [
-                this.computedClass('menuClass', 'o-acp__menu'),
-                { [this.computedClass('menuPositionClass', 'o-acp__menu--', this.newDropdownPosition)]: !this.appendToBody },
-            ]
-        },
-        itemClasses() {
-            return [
-                this.computedClass('itemClass', 'o-acp__item')
-            ]
-        },
-        itemEmptyClasses() {
-            return [
-                ...this.itemClasses,
-                this.computedClass('itemEmptyClass', 'o-acp__item--empty')
-            ]
-        },
-        itemGroupClasses() {
-            return [
-                ...this.itemClasses,
-                this.computedClass('itemGroupTitleClass', 'o-acp__item-group-title')
-            ]
-        },
-        itemHeaderClasses() {
-            return [
-                ...this.itemClasses,
-                this.computedClass('itemHeaderClass', 'o-acp__item-header'),
-                { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: this.headerHovered }
-            ]
-        },
-        itemFooterClasses() {
-            return [
-                ...this.itemClasses,
-                this.computedClass('itemFooterClass', 'o-acp__item-footer'),
-                { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: this.footerHovered }
-            ]
-        },
-        inputBind() {
-            return {
-                ...this.$attrs,
-                ...this.inputClasses
-            }
-        },
-        computedData() {
-            if (this.groupField) {
-                if (this.groupOptions) {
-                    const newData = []
-                    this.data.forEach((option) => {
-                        const group = getValueByPath(option, this.groupField)
-                        const items = getValueByPath(option, this.groupOptions)
-                        newData.push({ group, items })
-                    })
-                    return newData
-                } else {
-                    const tmp = {}
-                    this.data.forEach((option) => {
-                        const group = getValueByPath(option, this.groupField)
-                        if (!tmp[group]) tmp[group] = []
-                        tmp[group].push(option)
-                    })
-                    const newData = []
-                    Object.keys(this.data).forEach((group) => {
-                        newData.push({ group, items: this.data[group] })
-                    })
-                    return newData
-                }
-            }
-            return [{ items: this.data }]
-        },
-        isEmpty() {
-            if (!this.computedData) return true
-            return !this.computedData.some((element) => element.items && element.items.length)
-        },
-        /**
-         * White-listed items to not close when clicked.
-         * Add input, dropdown and all children.
-         */
-        whiteList() {
-            const whiteList = []
-            whiteList.push(this.$refs.input.$el.querySelector('input'))
-            whiteList.push(this.$refs.dropdown)
-            // Add all children from dropdown
-            if (this.$refs.dropdown !== undefined) {
-                const children = this.$refs.dropdown.querySelectorAll('*')
-                for (const child of children) {
-                    whiteList.push(child)
-                }
-            }
-            return whiteList
-        },
-
-        newDropdownPosition() {
-            if (this.menuPosition === 'top' || (this.menuPosition === 'auto' && !this.isListInViewportVertically)) {
-              return 'top'
-            }
-            return 'bottom'
-        },
-
-        newIconRight() {
-            if (this.clearable && this.newValue && this.clearIcon) {
-                return this.clearIcon
-            }
-            return this.iconRight
-        },
-
-        newIconRightClickable() {
-            if (this.clearable) {
-                return true
-            }
-            return this.iconRightClickable
-        },
-
-        menuStyle() {
-            return {
-                maxHeight: toCssDimension(this.maxHeight),
-                width: toCssDimension(this.width),
-            }
-        },
-
-        $elementRef() {
-            return 'input'
-        }
-    },
-    watch: {
-        /**
-         * When v-model is changed:
-         *   1. Update internal value.
-         *   2. If it's invalid, validate again.
-         */
-        value(value) {
-            this.newValue = value
-        },
-
-        /**
-         * When dropdown is toggled, check the visibility to know when
-         * to open upwards.
-         */
-        isActive(active) {
-            if (this.menuPosition === 'auto') {
-                if (active) {
-                    this.calcDropdownInViewportVertical()
-                } else {
-                    // Timeout to wait for the animation to finish before recalculating
-                    setTimeout(() => {
-                        this.calcDropdownInViewportVertical()
-                    }, 100)
-                }
-            }
-        },
-
-        /**
-         * When updating input's value
-         *   1. Emit changes
-         *   2. If value isn't the same as selected, set null
-         *   3. Close dropdown if value is clear or else open it
-         */
-        newValue(value) {
-            this.$emit('input', value)
-            // Check if selected is invalid
-            const currentValue = this.getValue(this.selected)
-            if (currentValue && currentValue !== value) {
-                this.setSelected(null, false)
-            }
-            // Close dropdown if input is clear or else open it
-            if (this.hasFocus && (!this.openOnFocus || value)) {
-                this.isActive = !!value
-            }
-        },
-
-        /**
-         * Select first option if "keep-first
-         */
-        data() {
-            // Keep first option always pre-selected
-            if (this.keepFirst) {
-                this.$nextTick(() => {
-                    if (this.isActive) {
-                        this.selectFirstOption(this.computedData)
-                    } else {
-                        this.setHovered(null)
-                    }
-                })
-            } else {
-                if (this.hovered) {
-                    // reset hovered if list doesn't contain it
-                    const hoveredValue = this.getValue(this.hovered)
-                    const data = this.computedData.map((d) => d.items).reduce((a, b) => ([...a, ...b]), [])
-                    if (!data.some(d => this.getValue(d) === hoveredValue)) {
-                        this.setHovered(null)
-                    }
-                }
-            }
-        },
-
-        debounceTyping: {
-            handler(value) {
-                this.debouncedEmitTyping = debounce(this.emitTyping, value)
-            },
-            immediate: true
-        }
-    },
-    methods: {
-        itemOptionClasses(option) {
-            return [
-                ...this.itemClasses,
-                { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: option === this.hovered }
-            ]
-        },
-
-        /**
-         * Set which option is currently hovered.
-         */
-        setHovered(option) {
-            if (option === undefined) return
-
-            this.hovered = option
-        },
-
-        /**
-         * Set which option is currently selected, update v-model,
-         * update input value and close dropdown.
-         */
-        setSelected(option, closeDropdown = true, event = undefined) {
-            if (option === undefined) return
-            this.selected = option
-            /**
-             * @property {Object} selected selected option
-             * @property {Event} event native event
-             */
-            this.$emit('select', this.selected, event)
-            if (this.selected !== null) {
-                if (this.clearOnSelect) {
-                    const input = this.$refs.input
-                    input.newValue = ''
-                    input.$refs.input.value = ''
-                } else {
-                    this.newValue = this.getValue(this.selected)
-                }
-                this.setHovered(null)
-            }
-            closeDropdown && this.$nextTick(() => { this.isActive = false })
-            this.checkValidity()
-        },
-
-        /**
-         * Select first option
-         */
-        selectFirstOption(computedData) {
-            this.$nextTick(() => {
-                const nonEmptyElements = computedData.filter(
-                    (element) => element.items && element.items.length
-                )
-                if (nonEmptyElements.length) {
-                    const option = nonEmptyElements[0].items[0]
-                    this.setHovered(option)
-                } else {
-                    this.setHovered(null)
-                }
-            })
-        },
-
-        /**
-         * Key listener.
-         * Select the hovered option.
-         */
-        keydown(event) {
-            const { key } = event // cannot destructure preventDefault (https://stackoverflow.com/a/49616808/2774496)
-            // prevent emit submit event
-            if (key === 'Enter') event.preventDefault()
-            // Close dropdown on Tab & no hovered
-            if (key === 'Escape' || key === 'Tab') {
-                this.isActive = false
-            }
-            if (this.confirmKeys.indexOf(key) >= 0) {
-                // If adding by comma, don't add the comma to the input
-                if (key === ',') event.preventDefault()
-                // Close dropdown on select by Tab
-                const closeDropdown = !this.keepOpen || key === 'Tab'
-                if (this.hovered === null) {
-                    // header and footer uses headerHovered && footerHovered. If header or footer
-                    // was selected then fire event otherwise just return so a value isn't selected
-                    this.checkIfHeaderOrFooterSelected(event, null, closeDropdown)
-                    return
-                }
-                this.setSelected(this.hovered, closeDropdown, event)
-            }
-        },
-
-        selectHeaderOrFoterByClick(event, origin) {
-            this.checkIfHeaderOrFooterSelected(event, {origin: origin})
-        },
-
-        /**
-         * Check if header or footer was selected.
-         */
-        checkIfHeaderOrFooterSelected(event, triggerClick, closeDropdown = true) {
-            if (this.selectableHeader && (this.headerHovered || (triggerClick && triggerClick.origin === 'header'))) {
-                this.$emit('select-header', event)
-                this.headerHovered = false
-                if (triggerClick) this.setHovered(null)
-                if (closeDropdown) this.isActive = false
-            }
-            if (this.selectableFooter && (this.footerHovered || (triggerClick && triggerClick.origin === 'footer'))) {
-                this.$emit('select-footer', event)
-                this.footerHovered = false
-                if (triggerClick) this.setHovered(null)
-                if (closeDropdown) this.isActive = false
-            }
-        },
-
-        /**
-         * Close dropdown if clicked outside.
-         */
-        clickedOutside(event) {
-            if (!this.hasFocus && this.whiteList.indexOf(event.target) < 0) {
-                if (this.keepFirst && this.hovered && this.selectOnClickOutside) {
-                    this.setSelected(this.hovered, true)
-                } else {
-                    this.isActive = false
-                }
-            }
-        },
-
-        /**
-         * Return display text for the input.
-         * If object, get value from path, or else just the value.
-         */
-        getValue(option) {
-            if (option === null) return
-
-            if (typeof this.customFormatter !== 'undefined') {
-                return this.customFormatter(option)
-            }
-            return typeof option === 'object'
-                ? getValueByPath(option, this.field)
-                : option
-        },
-
-        /**
-         * Check if the scroll list inside the dropdown
-         * reached it's end.
-         */
-        checkIfReachedTheEndOfScroll() {
-            const list = this.$refs.dropdown
-            const footerHeight = this.$slots.footer ? this.$refs.footer.clientHeight : 0
-            if (list.clientHeight !== list.scrollHeight &&
-                list.scrollTop + list.clientHeight + footerHeight >= list.scrollHeight
-            ) {
-                this.$emit('infinite-scroll')
-            }
-        },
-
-        /**
-         * Calculate if the dropdown is vertically visible when activated,
-         * otherwise it is openened upwards.
-         */
-        calcDropdownInViewportVertical() {
-            this.$nextTick(() => {
-                /**
-                * this.$refs.dropdown may be undefined
-                * when Autocomplete is conditional rendered
-                */
-                if (this.$refs.dropdown === undefined) return
-
-                const rect = this.$refs.dropdown.getBoundingClientRect()
-
-                this.isListInViewportVertically = (
-                    rect.top >= 0 &&
-                    rect.bottom <= (window.innerHeight ||
-                        document.documentElement.clientHeight)
-                )
-                if (this.appendToBody) {
-                    this.updateAppendToBody()
-                }
-            })
-        },
-
-        /**
-         * Arrows keys listener.
-         * If dropdown is active, set hovered option, or else just open.
-         */
-        keyArrows(direction) {
-            const sum = direction === 'down' ? 1 : -1
-            if (this.isActive) {
-                const data = this.computedData.map(
-                    (d) => d.items).reduce((a, b) => ([...a, ...b]), [])
-
-                if (this.$slots.header && this.selectableHeader) {
-                    data.unshift(undefined)
-                }
-                if (this.$slots.footer && this.selectableFooter) {
-                    data.push(undefined)
-                }
-                let index
-                if (this.headerHovered) {
-                    index = 0 + sum
-                } else if (this.footerHovered) {
-                    index = (data.length - 1) + sum
-                } else {
-                    index = data.indexOf(this.hovered) + sum
-                }
-
-                index = index > data.length - 1 ? data.length - 1 : index
-                index = index < 0 ? 0 : index
-
-                this.footerHovered = false
-                this.headerHovered = false
-                this.setHovered(data[index] !== undefined ? data[index] : null)
-                if (this.$slots.footer && this.selectableFooter && index === data.length - 1) {
-                    this.footerHovered = true
-                }
-                if (this.$slots.header && this.selectableHeader && index === 0) {
-                    this.headerHovered = true
-                }
-
-                const list = this.$refs.dropdown
-                let items = this.$refs.items || []
-
-                if (this.$slots.header && this.selectableHeader) {
-                    items = [this.$refs.header, ...items]
-                }
-                if (this.$slots.footer && this.selectableFooter) {
-                    items = [...items, this.$refs.footer]
-                }
-                const element = items[index]
-
-                if (!element) return
-
-                const visMin = list.scrollTop
-                const visMax = list.scrollTop + list.clientHeight - element.clientHeight
-
-                if (element.offsetTop < visMin) {
-                    list.scrollTop = element.offsetTop
-                } else if (element.offsetTop >= visMax) {
-                    list.scrollTop = (
-                        element.offsetTop -
-                        list.clientHeight +
-                        element.clientHeight
-                    )
-                }
-            } else {
-                this.isActive = true
-            }
-        },
-
-        /**
-         * Focus listener.
-         * If value is the same as selected, select all text.
-         */
-        focused(event) {
-            if (this.getValue(this.selected) === this.newValue) {
-                this.$el.querySelector('input').select()
-            }
-            if (this.openOnFocus) {
-                this.isActive = true
-                if (this.keepFirst) {
-                    // If open on focus, update the hovered
-                    this.selectFirstOption(this.computedData)
-                }
-            }
-            this.hasFocus = true
-            this.$emit('focus', event)
-        },
-
-        /**
-        * Blur listener.
-        */
-        onBlur(event) {
-            this.hasFocus = false
-            this.$emit('blur', event)
-        },
-        onInput() {
-            const currentValue = this.getValue(this.selected)
-            if (currentValue && currentValue === this.newValue) return
-            if (this.debounceTyping) {
-                this.debouncedEmitTyping()
-            } else {
-                this.emitTyping()
-            }
-        },
-        emitTyping() {
-            this.$emit('typing', this.newValue)
-            this.checkValidity()
-        },
-        rightIconClick(event) {
-            if (this.clearable) {
-                this.newValue = ''
-                this.setSelected(null, false)
-                if (this.openOnFocus) {
-                    this.$refs.input.$el.focus()
-                }
-            } else {
-                this.$emit('icon-right-click', event)
-            }
-        },
-        checkValidity() {
-            if (this.useHtml5Validation) {
-                this.$nextTick(() => {
-                    this.checkHtml5Validity()
-                })
-            }
-        },
-        updateAppendToBody() {
-            const dropdownMenu = this.$refs.dropdown
-            const trigger = this.$refs.input.$el
-            if (dropdownMenu && trigger) {
-                // update wrapper dropdown
-                const root = this.$data.bodyEl
-                root.classList.forEach((item) => root.classList.remove(...item.split(' ')))
-                this.rootClasses.forEach((item) => {
-                    if (item) {
-                        if (typeof item === 'object') {
-                            Object.keys(item).filter(key => key && item[key]).forEach(
-                                key => root.classList.add(key))
-                        } else {
-                            root.classList.add(...item.split(' '))
-                        }
-                    }
-                })
-                const rect = trigger.getBoundingClientRect()
-                let top = rect.top + window.scrollY
-                const left = rect.left + window.scrollX
-                if (this.newDropdownPosition !== 'top') {
-                    top += trigger.clientHeight
-                } else {
-                    top -= dropdownMenu.clientHeight
-                }
-                dropdownMenu.style.position = 'absolute'
-                dropdownMenu.style.top = `${top}px`
-                dropdownMenu.style.left = `${left}px`
-                dropdownMenu.style.width = `${trigger.clientWidth}px`
-                dropdownMenu.style.maxWidth = `${trigger.clientWidth}px`
-                dropdownMenu.style.zIndex = '9999'
-            }
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('click', this.clickedOutside)
-            if (this.menuPosition === 'auto') window.addEventListener('resize', this.calcDropdownInViewportVertical)
-        }
-    },
-    mounted() {
-        const list = this.$refs.dropdown
-        if (this.checkInfiniteScroll && list) {
-            list.addEventListener('scroll', this.checkIfReachedTheEndOfScroll)
-        }
-        if (this.appendToBody) {
-            this.$data.bodyEl = createAbsoluteElement(list)
-            this.updateAppendToBody()
-        }
-    },
-    beforeUpdate() {
-        this.width = this.$refs.input ? this.$refs.input.$el.clientWidth : undefined
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('click', this.clickedOutside)
-            if (this.menuPosition === 'auto') window.removeEventListener('resize', this.calcDropdownInViewportVertical)
-        }
-        if (this.checkInfiniteScroll && this.$refs.dropdown) {
-            const list = this.$refs.dropdown
-            list.removeEventListener('scroll', this.checkIfReachedTheEndOfScroll)
-        }
-        if (this.appendToBody) {
-            removeElement(this.$data.bodyEl)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/autocomplete/Inspector.vue b/packages/oruga/src/components/autocomplete/Inspector.vue
deleted file mode 100644
index eceed4b48..000000000
--- a/packages/oruga/src/components/autocomplete/Inspector.vue
+++ /dev/null
@@ -1,127 +0,0 @@
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-      <o-autocomplete v-bind="s" group-field="type" group-options="items" placeholder="e.g. Vue.js" :data="filtered" icon="search" clearable @select="option => selected = option">
-        <template slot="empty">No results found</template>
-        <template slot="header">Header slot (optional)</template>
-        <template slot="footer">Footer slot (optional)</template>
-      </o-autocomplete>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            filtered: [
-                {
-                    type: 'Frameworks',
-                    items: ['Vue.js']
-                }
-            ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "menuClass",
-                    description: "Class of the autocomplete menu",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of the autocomplete menu expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "menuPositionClass",
-                    description: "Class of the autocomplete menu position",
-                    properties: ["menu-position"],
-                    suffixes: ["auto", "top", "bottom"],
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the menu items.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemHoverClass",
-                    description: "Class of the menu items on hover.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                        setTimeout(() => {
-                            el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                            el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40,  charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false}));
-                        }, 500);
-                    },
-                },
-                {
-                    class: "itemGroupTitleClass",
-                    description: "Class of the menu items group title.",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemEmptyClass",
-                    description: "Class of the menu empty placeholder item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "|", char : "|", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the menu header item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "itemFooterClass",
-                    description: "Class of the menu footer item",
-                    action: (cmp) => {
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                        el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}));
-                    },
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-            ],
-        };
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap b/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap
deleted file mode 100644
index a540ffe2f..000000000
--- a/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap
+++ /dev/null
@@ -1,17 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OAutocomplete render correctly 1`] = `
-<div class="o-acp">
-    <div class="o-ctrl-input"><input type="text" autocomplete="off" aria-autocomplete="list" class="o-input">
-        <!---->
-        <!---->
-        <!---->
-    </div>
-    <div class="o-acp__menu o-acp__menu--bottom" style="display: none;">
-        <!---->
-        <!---->
-        <!---->
-        <!---->
-    </div>
-</div>
-`;
diff --git a/packages/oruga/src/components/autocomplete/examples/Autocomplete.md b/packages/oruga/src/components/autocomplete/examples/Autocomplete.md
deleted file mode 100644
index a9720bdd7..000000000
--- a/packages/oruga/src/components/autocomplete/examples/Autocomplete.md
+++ /dev/null
@@ -1,331 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <p class="content"><b>Selected:</b> {{ selected }}</p>
-        <o-field label="Find a JS framework">
-            <o-autocomplete
-                rounded
-                expanded
-                v-model="name"
-                :data="filteredDataArray"
-                placeholder="e.g. jQuery"
-                icon="search"
-                clearable
-                @select="option => selected = option">
-                <template slot="empty">No results found</template>
-            </o-autocomplete>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                data: [
-                    'Angular',
-                    'Angular 2',
-                    'Aurelia',
-                    'Backbone',
-                    'Ember',
-                    'jQuery',
-                    'Meteor',
-                    'Node.js',
-                    'Polymer',
-                    'React',
-                    'RxJS',
-                    'Vue.js'
-                ],
-                name: '',
-                selected: null
-            }
-        },
-        computed: {
-            filteredDataArray() {
-                return this.data.filter((option) => {
-                    return option
-                        .toString()
-                        .toLowerCase()
-                        .indexOf(this.name.toLowerCase()) >= 0
-                })
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Object array
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <o-switch v-model="openOnFocus">Open dropdown on focus</o-switch>
-            <o-switch v-model="keepFirst">Keep-first</o-switch>
-        </o-field>
-        <p class="content"><b>Selected:</b> {{ selected }}</p>
-        <o-field label="Find a name">
-            <o-autocomplete
-                v-model="name"
-                placeholder="e.g. Anne"
-                :keep-first="keepFirst"
-                :open-on-focus="openOnFocus"
-                :data="filteredDataObj"
-                field="user.first_name"
-                @select="option => selected = option">
-            </o-autocomplete>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    const data = [{"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"},
-    {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"},
-    {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"},
-    {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"},
-    {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"},
-    {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"},
-    {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"},
-    {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"},
-    {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"},
-    {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"},
-    {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"},
-    {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"},
-    {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"},
-    {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"},
-    {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"},
-    {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"},
-    {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"},
-    {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"},
-    {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"},
-    {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"},
-    {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"},
-    {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"},
-    {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"},
-    {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"},
-    {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"},
-    {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"},
-    {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"},
-    {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"},
-    {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"},
-    {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"},
-    {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"},
-    {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"},
-    {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"},
-    {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"},
-    {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"},
-    {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"},
-    {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"},
-    {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"},
-    {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"},
-    {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"},
-    {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"},
-    {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"},
-    {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"},
-    {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"},
-    {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"},
-    {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"},
-    {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"},
-    {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"},
-    {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"},
-    {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"},
-    {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"},
-    {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"},
-    {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"},
-    {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"},
-    {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"},
-    {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"},
-    {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"},
-    {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"},
-    {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"},
-    {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"}]
-
-    export default {
-        data() {
-            return {
-                data,
-                keepFirst: false,
-                openOnFocus: false,
-                name: '',
-                selected: null
-            }
-        },
-        computed: {
-            filteredDataObj() {
-                return this.data.filter((option) => {
-                    return option.user.first_name
-                        .toString()
-                        .toLowerCase()
-                        .indexOf(this.name.toLowerCase()) >= 0
-                })
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Groups
-
-::: demo
-```html
-<template>
-    <section>
-        <p class="content"><b>Selected:</b> {{ selected }}</p>
-        <o-field label="Find a food">
-            <o-autocomplete
-                v-model="name"
-                group-field="type"
-                group-options="items"
-                open-on-focus
-                :data="filteredDataObj"
-                field="user.first_name"
-                @select="option => (selected = option)"
-            >
-            </o-autocomplete>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            data: [
-                {
-                    type: 'Fruit',
-                    items: ['Apple', 'Banana', 'Watermelon']
-                },
-                {
-                    type: 'Vegetables',
-                    items: ['Carrot', 'Broccoli', 'Cucumber', 'Onion']
-                }
-            ],
-            name: '',
-            selected: null
-        }
-    },
-    computed: {
-        filteredDataObj() {
-            const newData = []
-              this.data.forEach(element => {
-                const items = element.items.filter(item =>
-                    item.toLowerCase().indexOf(this.name.toLowerCase()) >= 0)
-                if (items.length) {
-                    newData.push({ type: element.type, items})
-                }
-            })
-            return newData
-        }
-    }
-}
-</script>
- 98 
-```
-:::
-
-### Infinite Scroll
-
-::: demo
-```html
-<template>
-    <section>
-        <p class="content"><b>Selected:</b> {{ selected }}</p>
-        <o-field label="Find a movie">
-            <o-autocomplete
-                :data="data"
-                placeholder="e.g. Fight Club"
-                field="title"
-                :loading="isFetching"
-                check-infinite-scroll
-                :debounce-typing="500"
-                @typing="getAsyncData"
-                @select="option => selected = option"
-                @infinite-scroll="getMoreAsyncData">
-
-                <template slot-scope="props">
-                    <div class="media">
-                        <div class="media-left">
-                            <img width="32" :src="`https://image.tmdb.org/t/p/w500/${props.option.poster_path}`">
-                        </div>
-                        <div class="media-content">
-                            {{ props.option.title }}
-                            <br>
-                            <small>
-                                Released at {{ props.option.release_date }},
-                                rated <b>{{ props.option.vote_average }}</b>
-                            </small>
-                        </div>
-                    </div>
-                </template>
-                <template slot="footer">
-                    <span v-show="page > totalPages" class="has-text-grey"> Thats it! No more movies found. </span>
-                </template>
-            </o-autocomplete>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                data: [],
-                selected: null,
-                isFetching: false,
-                name: '',
-                page: 1,
-                totalPages: 1
-            }
-        },
-        methods: {
-            getAsyncData(name) {
-                // String update
-                if (this.name !== name) {
-                    this.name = name
-                    this.data = []
-                    this.page = 1
-                    this.totalPages = 1
-                }
-                // String cleared
-                if (!name.length) {
-                    this.data = []
-                    this.page = 1
-                    this.totalPages = 1
-                    return
-                }
-                // Reached last page
-                if (this.page > this.totalPages) {
-                    return
-                }
-                this.isFetching = true
-                fetch(`https://api.themoviedb.org/3/search/movie?api_key=bb6f51bef07465653c3e553d6ab161a8&query=${name}&page=${this.page}`)
-                    .then(response => response.json())
-                    .then((data) => {
-                        data.results.forEach((item) => this.data.push(item))
-                        
-                        this.page++
-                        this.totalPages = data.total_pages
-                    })
-                    .catch((error) => {
-                        throw error
-                    })
-                    .finally(() => {
-                        this.isFetching = false
-                    })
-            },
-            getMoreAsyncData() {
-                this.getAsyncData(this.name)
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/autocomplete/index.js b/packages/oruga/src/components/autocomplete/index.js
deleted file mode 100644
index 210b1efc9..000000000
--- a/packages/oruga/src/components/autocomplete/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Autocomplete from './Autocomplete'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Autocomplete)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Autocomplete as OAutocomplete
-}
diff --git a/packages/oruga/src/components/button/Button.spec.js b/packages/oruga/src/components/button/Button.spec.js
deleted file mode 100644
index 053be8339..000000000
--- a/packages/oruga/src/components/button/Button.spec.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import { shallowMount, mount } from '@vue/test-utils'
-import OButton from '@components/button/Button'
-
-let wrapper
-
-describe('OButton', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OButton)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('emit a click event', () => {
-        const click = jest.fn()
-        wrapper = shallowMount(OButton, {
-            listeners: {
-                'click': click
-            }
-        })
-        wrapper.find('.o-btn').trigger('click')
-        expect(click).toHaveBeenCalledTimes(1)
-    })
-
-    it('should show icon', () => {
-        wrapper = mount(OButton, {
-            propsData: {
-                iconLeft: 'plus'
-            }
-        })
-        expect(wrapper.contains('.o-icon')).toBeTruthy()
-    })
-
-    it('should show icon on the right and on the left', () => {
-        wrapper = mount(OButton, {
-            propsData: {
-                iconLeft: 'plus',
-                iconRight: 'plus'
-            }
-        })
-        expect(wrapper.contains('.o-btn__icon-left')).toBeTruthy()
-        expect(wrapper.contains('.o-btn__icon-right')).toBeTruthy()
-    })
-
-    it('should be medium', async () => {
-        wrapper.setProps({
-            size: 'medium'
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.classes()).toContain('o-btn--medium')
-    })
-
-    it('should be small + icon', () => {
-        wrapper = mount(OButton, {
-            propsData: {
-                size: 'small',
-                iconLeft: 'plus'
-            }
-        })
-        expect(wrapper.classes()).toContain('o-btn--small')
-        expect(wrapper.contains('.o-btn__icon')).toBeTruthy()
-    })
-
-    it('should be large + icon', () => {
-        wrapper = mount(OButton, {
-            propsData: {
-                size: 'large',
-                iconLeft: 'plus'
-            }
-        })
-        expect(wrapper.classes()).toContain('o-btn--large')
-        expect(wrapper.contains('.o-btn__icon')).toBeTruthy()
-    })
-
-    it('should be rounded when prop is set to true', async () => {
-        wrapper.setProps({
-            rounded: true
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.classes()).toContain('o-btn--rounded')
-    })
-
-    it('should set tag to "button" if disabled', () => {
-        wrapper.setProps({
-            tag: 'a'
-        })
-        expect(wrapper.vm.computedTag).toBe('a')
-
-        wrapper = shallowMount(OButton, {
-            attrs: {
-                'disabled': true
-            }
-        })
-        expect(wrapper.vm.computedTag).toBe('button')
-    })
-})
diff --git a/packages/oruga/src/components/button/Button.vue b/packages/oruga/src/components/button/Button.vue
deleted file mode 100644
index e1d993c08..000000000
--- a/packages/oruga/src/components/button/Button.vue
+++ /dev/null
@@ -1,205 +0,0 @@
-<template>
-    <component
-        :is="computedTag"
-        v-bind="$attrs"
-        :type="computedNativeType"
-        :class="rootClasses"
-        :disabled="disabled"
-        v-on="$listeners"
-    >
-        <span :class="elementsWrapperClasses">
-            <o-icon
-                v-if="iconLeft"
-                :pack="iconPack"
-                :icon="iconLeft"
-                :size="size"
-                :both="iconBoth"
-                :class="iconLeftClasses"
-            />
-            <span
-                :class="labelClasses"
-                v-if="label || $slots.default">
-                <slot>{{ label }}</slot>
-            </span>
-            <o-icon
-                v-if="iconRight"
-                :pack="iconPack"
-                :icon="iconRight"
-                :size="size"
-                :both="iconBoth"
-                :class="iconRightClasses"
-            />
-        </span>
-    </component>
-</template>
-
-<script>
-import Icon from '../icon/Icon'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * The classic button, in different colors, sizes, and states
- * @displayName Button
- * @example ./examples/Button.md
- * @style _button.scss
- */
-export default {
-    name: 'OButton',
-    components: {
-        [Icon.name]: Icon
-    },
-    configField: 'button',
-    mixins: [BaseComponentMixin],
-    inheritAttrs: false,
-    props: {
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: String,
-        /**
-         * Size of button, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-         * Button label, optional when default slot
-         */
-        label: String,
-        /**
-         * Icon pack to use
-         * @values mdi, fa, fas and any other custom icon pack
-         */
-        iconPack: String,
-        /**
-         * Icon name to show on the left
-         */
-        iconLeft: String,
-        /**
-         * Icon name to show on the right
-         */
-        iconRight: String,
-        /**
-         * Rounded style
-         */
-        rounded: {
-            type: Boolean,
-            default: () => { return getValueByPath(getOptions(), 'button.rounded', false) }
-        },
-        /**
-         * Loading style
-         */
-         loading: Boolean,
-        /**
-         * Outlined style
-         */
-        outlined: Boolean,
-        /**
-         * Button will be expanded (full-width)
-         */
-        expanded: Boolean,
-        inverted: Boolean,
-        /**
-         * Button type, like native
-         */
-        nativeType: {
-            type: String,
-            default: 'button',
-            validator: (value) => {
-                return [
-                    'button',
-                    'submit',
-                    'reset'
-                ].indexOf(value) >= 0
-            }
-        },
-        /**
-         * Button tag name
-         * @values button, a, input, router-link, nuxt-link (or other nuxt alias)
-         */
-        tag: {
-            type: String,
-            default: 'button'
-        },
-        /**
-         * Button will be disabled
-         */
-        disabled: Boolean,
-        /**  @ignore */
-        iconBoth: Boolean, // This is used internally
-        elementsWrapperClass: [String, Function, Array],
-        rootClass: [String, Function, Array],
-        outlinedClass: [String, Function, Array],
-        loadingClass: [String, Function, Array],
-        invertedClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        roundedClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        iconClass: [String, Function, Array],
-        iconLeftClass: [String, Function, Array],
-        iconRightClass: [String, Function, Array],
-        labelClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-btn'),
-                { [this.computedClass('sizeClass', 'o-btn--', this.size)]: this.size },
-                { [this.computedClass('variantClass', 'o-btn--', this.variant)]: this.variant },
-                { [this.computedClass('outlinedClass', 'o-btn--outlined')]: this.outlined && !this.variant },
-                { [this.computedClass('invertedClass', 'o-btn--inverted')]: this.inverted && !this.variant },
-                { [this.computedClass('outlinedClass', 'o-btn--outlined-', this.variant)]: this.outlined && this.variant },
-                { [this.computedClass('invertedClass', 'o-btn--inverted-', this.variant)]: this.inverted && this.variant },
-                { [this.computedClass('expandedClass', 'o-btn--expanded')]: this.expanded },
-                { [this.computedClass('roundedClass', 'o-btn--rounded')]: this.rounded },
-                { [this.computedClass('disabledClass', 'o-btn--disabled')]: this.disabled },
-                { [this.computedClass('loadingClass', 'o-btn--loading')]: this.loading },
-            ]
-        },
-        labelClasses() {
-            return [
-                this.computedClass('labelClass', 'o-btn__label'),
-            ]
-        },
-        iconClasses() {
-            return [
-                this.computedClass('iconClass', 'o-btn__icon'),
-            ]
-        },
-        iconLeftClasses() {
-            return [
-                ...this.iconClasses,
-                this.computedClass('iconLeftClass', 'o-btn__icon-left')
-            ]
-        },
-        iconRightClasses() {
-            return [
-                ...this.iconClasses,
-                this.computedClass('iconRightClass', 'o-btn__icon-right')
-            ]
-        },
-        elementsWrapperClasses() {
-            return [
-                this.computedClass('elementsWrapperClass', 'o-btn__wrapper'),
-            ]
-        },
-        computedTag() {
-            if (this.disabled !== undefined && this.disabled !== false) {
-                return 'button'
-            }
-            return this.tag
-        },
-        computedNativeType() {
-            if (this.tag === 'button' || this.tag === 'input') {
-                return this.nativeType
-            }
-            return null
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/button/Inspector.vue b/packages/oruga/src/components/button/Inspector.vue
deleted file mode 100644
index ad59faea1..000000000
--- a/packages/oruga/src/components/button/Inspector.vue
+++ /dev/null
@@ -1,130 +0,0 @@
-<template>
-  <div>
-    <doc-wrapper>
-      <template v-slot:default="s">
-      <o-button v-bind="s">Button</o-button>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "outlinedClass",
-                    description: "Class of the button outlined",
-                    properties: ["outlined"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'primary';
-                        cmp.data.outlined = true;
-                    },
-                },
-                {
-                    class: "loadingClass",
-                    description: "Class of the button loading",
-                    properties: ["loading"],
-                    action: (cmp) => {
-                        cmp.data.loading = true;
-                    },
-                },
-                {
-                    class: "invertedClass",
-                    description: "Class of the button when inverted",
-                    properties: ["inverted"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'primary';
-                        cmp.data.inverted = true;
-                    },
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of the button when expanded",
-                    properties: ["expanded"],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "elementsWrapperClass",
-                    description: "Class of the button elements wrapper",
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    },
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the button when rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    },
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class of the button when disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    },
-                },
-                {
-                    class: "labelClass",
-                    description: "Class of the button label"
-                },
-                {
-                    class: "iconClass",
-                    description: "Class of the button icon",
-                    properties: ["iconLeft", "iconRight"],
-                    action: (cmp) => {
-                        cmp.data['icon-left'] = "plus"
-                    },
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the button icon on the left",
-                    properties: ["iconLeft"],
-                    action: (cmp) => {
-                        cmp.data['icon-left'] = "plus"
-                    },
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the button icon on the right",
-                    properties: ["iconRight"],
-                    action: (cmp) => {
-                        cmp.data['icon-right'] = "plus"
-                    },
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the button size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    },
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the button variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-            ],
-        };
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap b/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap
deleted file mode 100644
index 72e062ff4..000000000
--- a/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OButton render correctly 1`] = `<button type="button" class="o-btn"><span class="o-btn__wrapper"><!----> <!----> <!----></span></button>`;
diff --git a/packages/oruga/src/components/button/examples/Button.md b/packages/oruga/src/components/button/examples/Button.md
deleted file mode 100644
index 82a425af8..000000000
--- a/packages/oruga/src/components/button/examples/Button.md
+++ /dev/null
@@ -1,150 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-button @click="clickMe">Click Me</o-button>
-    </section>
-</template>
-
-<script>
-    export default {
-        methods: {
-            clickMe() {
-                alert('Clicked!')
-            }
-        }
-    }
-</script>
-```
-:::
-
-### States and Styles
-
-::: demo
-```html
-<template>
-    <section>
-
-        <div class="buttons">
-            <o-button variant="primary">Primary</o-button>
-            <o-button variant="success">Success</o-button>
-            <o-button variant="danger">Danger</o-button>
-            <o-button variant="warning">Warning</o-button>
-            <o-button variant="info">Info</o-button>
-        </div>
-
-        <div class="buttons">
-            <o-button>Normal</o-button>
-            <o-button disabled>Disabled</o-button>
-            <o-button rounded>Rounded</o-button>
-        </div>
-
-        <div class="buttons">
-            <o-button variant="primary" outlined>Outlined</o-button>
-            <o-button variant="primary" inverted>Inverted</o-button>
-        </div>
-
-    </section>
-</template>
-
-<script>
-    export default {}
-</script>
-```
-:::
-
-### Icons
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button size="small"
-                icon-left="plus">
-                Add
-            </o-button>
-
-            <o-button icon-left="plus">
-                Add
-            </o-button>
-
-            <o-button size="medium"
-                icon-left="plus">
-                Add
-            </o-button>
-
-            <o-button size="large"
-                icon-left="plus">
-                Add
-            </o-button>
-        </div>
-
-        <br>
-
-        <div class="buttons">
-            <o-button variant="danger"
-                icon-left="trash">
-                Delete
-            </o-button>
-
-            <o-button variant="danger"
-                icon-right="trash">
-                Delete
-            </o-button>
-
-            <o-button variant="danger"
-                icon-right="trash" />
-        </div>
-
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Tags
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button>Button</o-button>
-
-            <o-button tag="a"
-                href="https://oruga.io"
-                target="_blank">
-                Anchor
-            </o-button>
-
-            <o-button tag="input"
-                native-type="submit"
-                value="Submit input" />
-
-            <!-- Need vue-router -->
-            <!-- 
-            <o-button tag="router-link"
-                to="/home"
-                variant="info">
-                Docs
-            </o-button>
-            -->
-        </div>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/button/index.js b/packages/oruga/src/components/button/index.js
deleted file mode 100644
index b81e151a0..000000000
--- a/packages/oruga/src/components/button/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Button from './Button'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Button)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Button as OButton
-}
diff --git a/packages/oruga/src/components/carousel/Carousel.spec.js b/packages/oruga/src/components/carousel/Carousel.spec.js
deleted file mode 100644
index 0fd953ba2..000000000
--- a/packages/oruga/src/components/carousel/Carousel.spec.js
+++ /dev/null
@@ -1,248 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OCarousel from '@components/carousel/Carousel'
-import BIcon from '@components/icon/Icon'
-import {default as InjectedChildMixin, Sorted} from '../../utils/InjectedChildMixin'
-
-let wrapper
-
-const mockCarouselItems = {
-    mixins: [InjectedChildMixin('carousel', Sorted)],
-    name: 'OCarouselItem',
-    template: '<div></div>',
-    computed: {
-        isActive() {
-            return this.parent.activeIndex === this.index
-        }
-    }
-}
-
-describe('OCarousel', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OCarousel, {
-            sync: false,
-            Component: BIcon,
-            propsData: {
-                autoplay: false,
-                repeat: false
-            },
-            stubs: {'o-carousel-item': mockCarouselItems},
-            slots: {
-                default: [
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>'
-                ]
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('OCarousel')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('reacts when value changes', async () => {
-        let value = 1
-        wrapper.setProps({ value })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(value)
-
-        value = 3
-        wrapper.setProps({ value })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        value = 0
-        wrapper.setProps({ value })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(value)
-    })
-
-    it('reacts when autoplay changes', async () => {
-        wrapper.vm.startTimer = jest.fn(wrapper.vm.startTimer)
-        wrapper.vm.pauseTimer = jest.fn(wrapper.vm.pauseTimer)
-        wrapper.vm.next = jest.fn(wrapper.vm.next)
-
-        let autoplay = true
-        wrapper.setProps({ autoplay })
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.autoplay).toBe(autoplay)
-        expect(wrapper.vm.startTimer).toHaveBeenCalled()
-
-        autoplay = false
-        wrapper.setProps({ autoplay })
-
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.autoplay).toBe(autoplay)
-        expect(wrapper.vm.pauseTimer).toHaveBeenCalled()
-    })
-
-    it('manage next and previous accordingly', async () => {
-        wrapper.vm.startTimer = jest.fn(() => wrapper.vm.startTimer)
-        wrapper.vm.pauseTimer = jest.fn(() => wrapper.vm.pauseTimer)
-
-        const first = 0
-        const last = 1
-        let repeat = false
-        wrapper.setProps({ value: last, repeat })
-
-        wrapper.vm.prev()
-        expect(wrapper.vm.activeIndex).toBe(first)
-        wrapper.vm.prev()
-        expect(wrapper.vm.activeIndex).toBe(first) // Wont go below 0 without repeat prop
-        repeat = true
-        wrapper.setProps({ repeat })
-        wrapper.vm.prev()
-        expect(wrapper.vm.activeIndex).toBe(last) // Will be set to the last value using repeat
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.startTimer).toHaveBeenCalled()
-
-        wrapper.vm.next()
-        expect(wrapper.vm.activeIndex).toBe(first) // Navigate to the first value with repeat
-        wrapper.vm.next()
-        expect(wrapper.vm.activeIndex).toBe(last)
-        repeat = false
-        wrapper.setProps({ repeat })
-        wrapper.vm.next()
-        expect(wrapper.vm.activeIndex).toBe(last) // Wont go above last when not using repeat
-    })
-
-    it('manage interaction with indicators', async () => {
-        let indicator = wrapper.find('.o-car__indicator__item')
-
-        const first = 0
-        const last = 1
-        wrapper.setProps({ value: last })
-        await wrapper.vm.$nextTick()
-
-        indicator.trigger('mouseover') // no change since indicatorMode is 'click'
-        expect(wrapper.vm.activeIndex).toBe(last)
-
-        indicator.trigger('click')
-        expect(wrapper.vm.activeIndex).toBe(first)
-    })
-
-    it('autoplays', async () => {
-        jest.useFakeTimers()
-        wrapper.setProps({ autoplay: true, 'pause-hover': false, repeat: false })
-
-        expect(wrapper.vm.activeIndex).toBe(0)
-
-        await wrapper.vm.$nextTick()
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        wrapper.setProps({ repeat: true })
-
-        await wrapper.vm.$nextTick()
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeIndex).toBe(0)
-    })
-
-    it('pauses on hover', async () => {
-        jest.useFakeTimers()
-        wrapper.setProps({ autoplay: true, 'pause-hover': true, repeat: true })
-
-        await wrapper.vm.$nextTick()
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.activeIndex).toBe(0)
-
-        wrapper.find('.o-car').trigger('mouseenter')
-
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        wrapper.find('.o-car').trigger('mouseleave')
-        expect(wrapper.vm.activeIndex).toBe(1)
-
-        jest.runOnlyPendingTimers()
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.activeIndex).toBe(0)
-    })
-
-    /*
-    it('drags correctly', async () => {
-        wrapper = shallowMount(OCarousel, {
-            sync: false,
-            Component: BIcon,
-            propsData: {
-                autoplay: false,
-                repeat: false,
-                itemsToShow: 4,
-            },
-            stubs: {'o-carousel-item': mockCarouselItems},
-            slots: {
-                default: [
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>',
-                    '<o-carousel-item/>'
-                ]
-            }
-        })
-
-        wrapper.setData({delta: 0})
-        wrapper.vm._computedWatchers['itemWidth'].value = 100
-
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.translation).toBe(-0)
-
-        wrapper.setData({delta: -600})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.translation).toBe(-0)
-
-        wrapper.setData({delta: 2000})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.translation).toBe(-400)
-
-        wrapper.setProps({
-            value: 4
-        })
-        expect(wrapper.vm.translation).toBe(-400)
-        await wrapper.vm.$nextTick()
-        wrapper.setData({delta: -300})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.translation).toBe(-100)
-    })
-    */
-
-    it('destroys correctly', async () => {
-        wrapper.setProps({autoplay: true})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.timer).toBeTruthy()
-        wrapper.destroy()
-        expect(wrapper.vm.timer).toBeFalsy()
-    })
-
-    it('reset timer before destroy', () => {
-        wrapper.vm.pauseTimer = jest.fn(() => wrapper.vm.pauseTimer)
-
-        wrapper.destroy()
-
-        expect(wrapper.vm.pauseTimer).toHaveBeenCalled()
-    })
-})
diff --git a/packages/oruga/src/components/carousel/Carousel.vue b/packages/oruga/src/components/carousel/Carousel.vue
deleted file mode 100644
index ff60287ea..000000000
--- a/packages/oruga/src/components/carousel/Carousel.vue
+++ /dev/null
@@ -1,475 +0,0 @@
-<template>
-    <div
-        :class="rootClasses"
-        @mouseenter="onMouseEnter"
-        @mouseleave="onMouseLeave">
-        <div :class="sceneClasses">
-            <div
-                @mousedown="dragStart"
-                @touchstart="dragStart"
-                :class="itemsClasses"
-                :style="'transform:translateX('+translation+'px)'">
-                <slot />
-            </div>
-            <slot
-                name="arrow"
-                :hasPrev="hasPrev"
-                :prev="prev"
-                :hasNext="hasNext"
-                :next="next"
-            >
-                <template v-if="arrow">
-                    <o-icon
-                        v-show="hasPrev"
-                        :class="arrowIconPrevClasses"
-                        @click.native="prev"
-                        :pack="iconPack"
-                        :icon="iconPrev"
-                        :size="iconSize"
-                        both />
-                    <o-icon
-                        v-show="hasNext"
-                        :class="arrowIconNextClasses"
-                        @click.native="next"
-                        :pack="iconPack"
-                        :icon="iconNext"
-                        :size="iconSize"
-                        both />
-                </template>
-            </slot>
-         </div>
-        <slot
-            :active="activeIndex"
-            :switchTo="switchTo"
-            :indicatorIndex="indicatorIndex"
-            name="indicators">
-            <template v-if="childItems.length">
-                <div
-                    v-if="indicator && !asIndicator"
-                    :class="indicatorsClasses">
-                    <a
-                        v-for="(_, index) in indicatorCount"
-                        :class="indicatorClasses"
-                        @mouseover="modeChange('hover', index)"
-                        @click="modeChange('click', index)"
-                        :key="index">
-                        <slot
-                            :i="index"
-                            name="indicator">
-                            <span :class="indicatorItemClasses(index)"/>
-                        </slot>
-                    </a>
-                </div>
-            </template>
-        </slot>
-        <template v-if="overlay">
-            <slot name="overlay"/>
-        </template>
-    </div>
-</template>
-
-<script>
-import {sign, mod, bound, getValueByPath} from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-import Icon from '../icon/Icon'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import {default as ProviderParentMixin, Sorted} from '../../utils/ProviderParentMixin'
-
-/**
- * A Slideshow for cycling images in confined spaces
- * @displayName Carousel
- * @example ./examples/Carousel.md
- * @style _carousel.scss
- */
-export default {
-    name: 'OCarousel',
-    components: {
-        [Icon.name]: Icon
-    },
-    configField: 'carousel',
-    mixins: [ProviderParentMixin('carousel', Sorted), BaseComponentMixin],
-    props: {
-        value: {
-            type: Number,
-            default: 0
-        },
-        interval: {
-            type: Number,
-            default: () => { return getValueByPath(getOptions(), 'carousel.interval', 3500) }
-        },
-        hasDrag: {
-            type: Boolean,
-            default: true
-        },
-        autoplay: {
-            type: Boolean,
-            default: false
-        },
-        pauseHover: {
-            type: Boolean,
-            default: false
-        },
-        repeat: {
-            type: Boolean,
-            default: false
-        },
-        indicator: {
-            type: Boolean,
-            default: true
-        },
-        indicatorInside: {
-            type: Boolean,
-            default: false
-        },
-        indicatorMode: {
-            type: String,
-            default: 'click'
-        },
-        indicatorPosition: {
-            type: String,
-            default: 'bottom'
-        },
-        indicatorStyle: {
-            type: String,
-            default: 'dots'
-        },
-        overlay: Boolean,
-        itemsToShow: {
-            type: Number,
-            default: 1
-        },
-        itemsToList: {
-            type: Number,
-            default: 1
-        },
-        asIndicator: Boolean,
-        arrow: {
-            type: Boolean,
-            default: true
-        },
-        arrowHover: {
-            type: Boolean,
-            default: true
-        },
-        iconPack: String,
-        iconSize: String,
-        iconPrev: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'carousel.iconPrev', 'chevron-left') }
-        },
-        iconNext: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'carousel.iconNext', 'chevron-right') }
-        },
-        breakpoints: {
-            type: Object,
-            default: () => ({})
-        },
-        rootClass: [String, Function, Array],
-        overlayClass: [String, Function, Array],
-        sceneClass: [String, Function, Array],
-        itemsClass: [String, Function, Array],
-        itemsDraggingClass: [String, Function, Array],
-        arrowIconClass: [String, Function, Array],
-        arrowIconPrevClass: [String, Function, Array],
-        arrowIconNextClass: [String, Function, Array],
-        indicatorsClass: [String, Function, Array],
-        indicatorsInsideClass: [String, Function, Array],
-        indicatorsInsidePositionClass: [String, Function, Array],
-        indicatorItemClass: [String, Function, Array],
-        indicatorItemActiveClass: [String, Function, Array],
-        indicatorItemStyleClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            activeIndex: this.value,
-            scrollIndex: this.value,
-            delta: 0,
-            dragX: false,
-            hold: 0,
-            windowWidth: 0,
-            touch: false,
-            observer: null,
-            refresh_: 0,
-            itemsHovered: false,
-            isPause: false,
-            timer: null
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-car'),
-                { [this.computedClass('overlayClass', 'o-car__overlay')]: this.overlay }
-            ]
-        },
-        sceneClasses() {
-            return [
-                this.computedClass('sceneClass', 'o-car__scene')
-            ]
-        },
-        itemsClasses() {
-            return [
-                this.computedClass('itemsClass', 'o-car__items'),
-                { [this.computedClass('itemsDraggingClass', 'o-car__items--dragging')]: this.dragging },
-            ]
-        },
-        arrowIconClasses() {
-            return [
-                this.computedClass('arrowIconClass', 'o-car__arrow__icon'),
-            ]
-        },
-        arrowIconPrevClasses() {
-            return [
-                ...this.arrowIconClasses,
-                this.computedClass('arrowIconPrevClass', 'o-car__arrow__icon-prev')
-            ]
-        },
-        arrowIconNextClasses() {
-            return [
-                ...this.arrowIconClasses,
-                this.computedClass('arrowIconNextClass', 'o-car__arrow__icon-next')
-            ]
-        },
-        indicatorsClasses() {
-            return [
-                this.computedClass('indicatorsClass', 'o-car__indicators'),
-                { [this.computedClass('indicatorsInsideClass', 'o-car__indicators--inside')]: this.indicatorInside },
-                { [this.computedClass('indicatorsInsidePositionClass', 'o-car__indicators--inside--', this.indicatorPosition)]: this.indicatorInside && this.indicatorPosition }
-            ]
-        },
-        indicatorClasses() {
-            return [
-                this.computedClass('indicatorClass', 'o-car__indicator')
-            ]
-        },
-        dragging() {
-            return this.dragX !== false
-        },
-        itemStyle() {
-            return `width: ${this.itemWidth}px;`
-        },
-        translation() {
-            return -bound(
-                this.delta + (this.scrollIndex * this.itemWidth), 0,
-                (this.childItems.length - this.settings.itemsToShow) * this.itemWidth
-            )
-        },
-        total() {
-            return this.childItems.length - this.settings.itemsToShow
-        },
-        indicatorCount() {
-            return Math.ceil(this.total / this.settings.itemsToList) + 1
-        },
-        indicatorIndex() {
-            return Math.ceil(this.scrollIndex / this.settings.itemsToList)
-        },
-        hasArrows() {
-            return (this.settings.arrowHover && this.itemsHovered) || !this.settings.arrowHover
-        },
-        hasPrev() {
-            return (this.settings.repeat || this.scrollIndex > 0) && this.hasArrows
-        },
-        hasNext() {
-            return (this.settings.repeat || this.scrollIndex < this.total) && this.hasArrows
-        },
-        breakpointKeys() {
-            return Object.keys(this.breakpoints).sort((a, b) => b - a)
-        },
-        settings() {
-            let breakpoint = this.breakpointKeys.filter((breakpoint) => {
-                if (this.windowWidth >= breakpoint) {
-                    return true
-                }
-            })[0]
-            if (breakpoint) {
-                return {...this.$props, ...this.breakpoints[breakpoint]}
-            }
-            return this.$props
-        },
-        itemWidth() {
-            if (this.windowWidth) { // Ensure component is mounted
-                /* eslint-disable-next-line */
-                this.refresh_; // We force the computed property to refresh if this prop is changed
-
-                const rect = this.$el.getBoundingClientRect()
-                return rect.width / this.settings.itemsToShow
-            }
-            return 0
-        }
-    },
-    watch: {
-        /**
-         * When v-model is changed set the new active item.
-         */
-        value(value) {
-            if (value <= this.childItems.length - 1) {
-                this.activeIndex = value
-                this.switchTo(value * this.settings.itemsToList, true)
-            }
-        },
-        /**
-         *  When autoplay is changed, start or pause timer accordingly
-         */
-        autoplay(status) {
-            if (status) {
-                this.startTimer()
-            } else {
-                this.pauseTimer()
-            }
-        },
-        /**
-         *  Since the timer can get paused at the end, if repeat is changed we need to restart it
-         */
-        repeat(status) {
-            if (status) {
-                this.startTimer()
-            }
-        }
-    },
-    methods: {
-        indicatorItemClasses(index) {
-            return [
-                this.computedClass('indicatorItemClass', 'o-car__indicator__item'),
-                { [this.computedClass('indicatorItemActiveClass', 'o-car__indicator__item--active')]: this.indicatorIndex === index },
-                { [this.computedClass('indicatorItemStyleClass', 'o-car__indicator__item--', this.indicatorStyle)]: this.indicatorStyle },
-            ]
-        },
-        onMouseEnter() {
-            this.itemsHovered = true
-            this.checkPause()
-        },
-        onMouseLeave() {
-            this.itemsHovered = false
-            this.startTimer()
-        },
-        startTimer() {
-            if (!this.autoplay || this.timer) return
-            this.isPause = false
-            this.timer = setInterval(() => {
-                if (!this.repeat && this.activeIndex >= this.childItems.length - 1) {
-                    this.pauseTimer()
-                } else {
-                    this.next()
-                }
-            }, this.interval)
-        },
-        pauseTimer() {
-            this.isPause = true
-            if (this.timer) {
-                clearInterval(this.timer)
-                this.timer = null
-            }
-        },
-        restartTimer() {
-            this.pauseTimer()
-            this.startTimer()
-        },
-        checkPause() {
-            if (this.pauseHover && this.autoplay) {
-                this.pauseTimer()
-            }
-        },
-        modeChange(trigger, value) {
-            if (this.indicatorMode === trigger) {
-                return this.switchTo(value * this.settings.itemsToList)
-            }
-        },
-        resized() {
-            this.windowWidth = window.innerWidth
-        },
-        switchTo(newIndex, onlyMove = this.asIndicator) {
-            if (this.settings.repeat) {
-                newIndex = mod(newIndex, this.total + 1)
-            }
-            newIndex = bound(newIndex, 0, this.total)
-            this.scrollIndex = newIndex
-            this.$emit('scroll', this.indicatorIndex)
-            if (!onlyMove) {
-                this.activeIndex = Math.ceil(newIndex / this.settings.itemsToList)
-                if (this.value !== this.activeIndex) {
-                    this.$emit('input', this.activeIndex)
-                }
-            }
-        },
-        next() {
-            this.switchTo(this.scrollIndex + this.settings.itemsToList)
-        },
-        prev() {
-            this.switchTo(this.scrollIndex - this.settings.itemsToList)
-        },
-        // handle drag event
-        dragStart(event) {
-            if (this.dragging || !this.settings.hasDrag || (event.button !== 0 && event.type !== 'touchstart')) return
-            this.hold = Date.now()
-            this.touch = !!event.touches
-            this.dragX = this.touch ? event.touches[0].clientX : event.clientX
-            if (this.touch) {
-                this.pauseTimer()
-            }
-            window.addEventListener(this.touch ? 'touchmove' : 'mousemove', this.dragMove)
-            window.addEventListener(this.touch ? 'touchend' : 'mouseup', this.dragEnd)
-        },
-        dragMove(event) {
-            if (!this.dragging) return
-            const dragEndX = event.touches
-                ? (event.changedTouches[0] || event.touches[0]).clientX : event.clientX
-            this.delta = this.dragX - dragEndX
-            if (!event.touches) {
-                event.preventDefault()
-            }
-        },
-        dragEnd(event) {
-            if (!this.dragging && !this.hold) return
-            if (this.hold) {
-                const signCheck = sign(this.delta)
-                const results = Math.round(Math.abs(this.delta / this.itemWidth) + 0.15)// Hack
-                this.switchTo(this.scrollIndex + signCheck * results)
-            }
-            this.delta = 0
-            this.dragX = false
-            if (event && event.touches) {
-                this.startTimer()
-            }
-            window.removeEventListener(this.touch ? 'touchmove' : 'mousemove', this.dragMove)
-            window.removeEventListener(this.touch ? 'touchend' : 'mouseup', this.dragEnd)
-        },
-        refresh() {
-            this.$nextTick(() => {
-                this.refresh_++
-            })
-        }
-    },
-    mounted() {
-        if (typeof window !== 'undefined') {
-            if (window.ResizeObserver) {
-                this.observer = new ResizeObserver(this.refresh)
-                this.observer.observe(this.$el)
-            }
-            window.addEventListener('resize', this.resized)
-            document.addEventListener('animationend', this.refresh)
-            document.addEventListener('transitionend', this.refresh)
-            document.addEventListener('transitionstart', this.refresh)
-            this.resized()
-            this.startTimer()
-        }
-        if (this.$attrs.config) {
-            throw new Error('The config prop was removed, you need to use v-bind instead')
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            if (window.ResizeObserver) {
-                this.observer.disconnect()
-            }
-            window.removeEventListener('resize', this.resized)
-            document.removeEventListener('animationend', this.refresh)
-            document.removeEventListener('transitionend', this.refresh)
-            document.removeEventListener('transitionstart', this.refresh)
-            this.dragEnd()
-            this.pauseTimer()
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/carousel/CarouselItem.spec.js b/packages/oruga/src/components/carousel/CarouselItem.spec.js
deleted file mode 100644
index be2e47f3f..000000000
--- a/packages/oruga/src/components/carousel/CarouselItem.spec.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OCarousel from '@components/carousel/Carousel'
-import OCarouselItem from '@components/carousel/CarouselItem'
-
-let wrapper
-let wrapperParent
-
-const WrapperComp = {
-    data() {
-        return {}
-    },
-    template: `
-        <OCarousel ref="carousel">
-            <OCarouselItem value="item1"/>
-            <OCarouselItem ref="testItem" value="item2"/>
-            <OCarouselItem value="item3"/>
-        </OCarousel>`,
-    components: {
-        OCarousel, OCarouselItem
-    }
-}
-
-describe('OCarouselItem', () => {
-    beforeEach(() => {
-        wrapperParent = mount(WrapperComp, { sync: false })
-        wrapper = wrapperParent.find({ ref: 'testItem' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('OCarouselItem')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('computes its position correctly', () => {
-        expect(wrapper.vm.index).toBe(1)
-    })
-})
diff --git a/packages/oruga/src/components/carousel/CarouselItem.vue b/packages/oruga/src/components/carousel/CarouselItem.vue
deleted file mode 100644
index 8542bf2dd..000000000
--- a/packages/oruga/src/components/carousel/CarouselItem.vue
+++ /dev/null
@@ -1,51 +0,0 @@
-<template>
-    <div
-        :class="itemClasses"
-        @click="onClick"
-        :style="itemStyle">
-        <slot />
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import {default as InjectedChildMixin, Sorted} from '../../utils/InjectedChildMixin'
-
-/**
- * @displayName Carousel Item
- */
-export default {
-    name: 'OCarouselItem',
-    configField: 'carousel',
-    mixins: [InjectedChildMixin('carousel', Sorted), BaseComponentMixin],
-    props: {
-        itemClass: [String, Function, Array],
-        itemActiveClass: [String, Function, Array]
-    },
-    computed: {
-        itemClasses() {
-            return [
-                this.computedClass('itemClass', 'o-car__item'),
-                {[this.computedClass('itemActiveClass', 'o-car__item--active')]: this.isActive}
-            ]
-        },
-        itemStyle() {
-            return `width: ${this.parent.itemWidth}px;`
-        },
-        isActive() {
-            return this.parent.activeIndex === this.index
-        }
-    },
-    methods: {
-        onClick(event) {
-            if (this.isActive) {
-                this.parent.$emit('click', event)
-            }
-            if (this.parent.asIndicator) {
-                this.parent.activeIndex = this.index
-                this.parent.$emit('input', this.index)
-            }
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/carousel/Inspector.vue b/packages/oruga/src/components/carousel/Inspector.vue
deleted file mode 100644
index a73cb91a1..000000000
--- a/packages/oruga/src/components/carousel/Inspector.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-carousel v-bind="s">
-            <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-                <section class="ex-slide" :style="{'background-color': carousel.color }">
-                    <h1>{{carousel.text}}</h1>
-                </section>
-            </o-carousel-item>
-        </o-carousel>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            carousels: [
-                { text: 'Slide 1', color: '#445e00' },
-                { text: 'Slide 2', color: '#006724' },
-                { text: 'Slide 3', color: '#b60000' },
-                { text: 'Slide 4', color: '#f4c300' },
-                { text: 'Slide 5', color: '#005c98' }
-            ],
-            subitem: 'carousel-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "overlayClass",
-                    properties: ['overlay'],
-                    description: "Class of the root element in overlay",
-                    action: (cmp) => {
-                        cmp.data.overlay = true;
-                    },
-                },
-                {
-                    class: "sceneClass",
-                    description: "Class of the wrapper element of carousel items",
-                },
-                {
-                    class: "itemsClass",
-                    description: "Class of slider element",
-                },
-                {
-                    class: "itemsDraggingClass",
-                    description: "Class of slider element on drag",
-                },
-                {
-                    class: "arrowIconClass",
-                    description: "Class of arrow elements",
-                },
-                {
-                    class: "arrowIconPrevClass",
-                    description: "Class of prev arrow element",
-                },
-                {
-                    class: "arrowIconNextClass",
-                    description: "Class of next arrow element",
-                },
-                {
-                    class: "indicatorsClass",
-                    description: "Class of indicators element",
-                },
-                {
-                    class: "indicatorsInsideClass",
-                    properties: ['indicatorInside'],
-                    description: "Class of indicators element when inside",
-                    action: (cmp) => {
-                        cmp.data.indicatorInside = true;
-                    }
-                },
-                {
-                    class: "indicatorsInsidePositionClass",
-                    properties: ['indicatorInside', 'indicatorPosition'],
-                    description: "Class of indicators element when inside and position",
-                    action: (cmp) => {
-                        cmp.data.indicatorInside = true;
-                        cmp.data.indicatorPosition = 'top';
-                    }
-                },
-                {
-                    class: "indicatorItemClass",
-                    description: "Class of indicator item element",
-                },
-                {
-                    class: "indicatorItemActiveClass",
-                    description: "Class of indicator element when is active",
-                },
-                {
-                    class: "indicatorItemStyleClass",
-                    properties: ['indicatorStyle'],
-                    description: "Class of indicator element to separate different styles",
-                    action: (cmp) => {
-                        cmp.data.indicatorStyle = 'lines';
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of carousel item",
-                },
-                {
-                    class: "itemActiveClass",
-                    description: "Class of carousel item when is active",
-                },
-            ],
-        };
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap b/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap
deleted file mode 100644
index ca5c3afd9..000000000
--- a/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap
+++ /dev/null
@@ -1,16 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OCarousel render correctly 1`] = `
-<div class="o-car">
-    <div class="o-car__scene">
-        <div class="o-car__items" style="transform: translateX(0px);">
-            <div></div>
-            <div></div>
-        </div>
-        <o-icon-stub icon="chevron-left" both="true" class="o-car__arrow__icon o-car__arrow__icon-prev" style="display: none;"></o-icon-stub>
-        <o-icon-stub icon="chevron-right" both="true" class="o-car__arrow__icon o-car__arrow__icon-next" style="display: none;"></o-icon-stub>
-    </div>
-    <div class="o-car__indicators"><a class="o-car__indicator"><span class="o-car__indicator__item o-car__indicator__item--active o-car__indicator__item--dots"></span></a><a class="o-car__indicator"><span class="o-car__indicator__item o-car__indicator__item--dots"></span></a></div>
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap b/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap
deleted file mode 100644
index 00dd3489b..000000000
--- a/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OCarouselItem render correctly 1`] = `<div class="o-car__item" style="width: 0px;" value="item2"></div>`;
diff --git a/packages/oruga/src/components/carousel/examples/Carousel.md b/packages/oruga/src/components/carousel/examples/Carousel.md
deleted file mode 100644
index 0aed9f28b..000000000
--- a/packages/oruga/src/components/carousel/examples/Carousel.md
+++ /dev/null
@@ -1,339 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <o-carousel>
-        <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-            <section class="ex-slide" :style="{'background-color': carousel.color }">
-                <h1>{{carousel.text}}</h1>
-            </section>
-        </o-carousel-item>
-    </o-carousel>
-</template>
-
-<script>
-    export default {
-        data(){
-            return {
-                carousels: [
-                    { text: 'Slide 1', color: '#445e00' },
-                    { text: 'Slide 2', color: '#006724' },
-                    { text: 'Slide 3', color: '#b60000' },
-                    { text: 'Slide 4', color: '#f4c300' },
-                    { text: 'Slide 5', color: '#005c98' }
-                ]
-            }
-        }
-    }
-</script>
-```
-:::
-
-<style>
-.ex-slide {
-    padding: 9rem 4.5rem;
-    color: #ffffff;
-    text-align: center;
-}
-</style>
-
-### Carousel List 
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="example-component">
-            <o-field grouped group-multiline>
-                <div class="control">
-                    <o-switch v-model="arrow">Arrow</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="arrowHover" :disabled="!arrow">Arrow on hover</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="drag">Drag event</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="repeat">Repeat</o-switch>
-                </div>
-            </o-field>
-            <o-field grouped group-multiline>
-                <o-field label="Items to Show">
-                    <o-input type="number" v-model.number="perList" min="1" :max="items.length" />
-                </o-field>
-                <o-field label="Items to List">
-                    <o-input type="number" v-model.number="increment" min="1" :max="items.length - 1" />
-                </o-field>
-            </o-field>
-        </div>
-        <o-carousel
-            v-model="values"
-            :arrow="arrow"
-            :arrow-hover="arrowHover"
-            :items-to-show="perList"
-            :items-to-list="increment"
-            :repeat="repeat"
-            :has-drag="drag">
-            <o-carousel-item v-for="(item, i) in items" :key="i">
-                <img :src="item.image">
-            </o-carousel-item>
-        </o-carousel>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                arrow: true,
-                arrowHover: true,
-                drag: true,
-                values: 1,
-                perList: 4,
-                increment: 1,
-                repeat: false,
-                items: [
-                    {
-                        title: 'Slide 1',
-                        image: 'https://picsum.photos/id/1/1230/500'
-                    },
-                    {
-                        title: 'Slide 2',
-                        image: 'https://picsum.photos/id/2/1230/500'
-                    },
-                    {
-                        title: 'Slide 3',
-                        image: 'https://picsum.photos/id/3/1230/500'
-                    },
-                    {
-                        title: 'Slide 4',
-                        image: 'https://picsum.photos/id/4/1230/500'
-                    },
-                    {
-                        title: 'Slide 5',
-                        image: 'https://picsum.photos/id/5/1230/500'
-                    },
-                    {
-                        title: 'Slide 6',
-                        image: 'https://picsum.photos/id/6/1230/500'
-                    },
-                    {
-                        title: 'Slide 7',
-                        image: 'https://picsum.photos/id/7/1230/500'
-                    }
-                ]
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Custom As indicators
-
-::: demo
-```html
-<template>
-    <o-carousel
-        :autoplay="false"
-        :overlay="gallery"
-        @click="switchGallery(true)">
-        <o-carousel-item v-for="(item, i) in items" :key="i">
-            <a class="image">
-                <img :src="item.image">
-            </a>
-        </o-carousel-item>
-        
-        <template #indicators="{ active, switchTo }">
-            <o-carousel
-                :value="active"
-                @input="switchTo($event)"
-                v-bind="al"
-                as-indicator>
-                <o-carousel-item 
-                    v-for="(item, i) in items"
-                    :key="i" 
-                    item-class="img-indicator"
-                    item-active-class="img-indicator-active">
-                    <img :src="item.image">
-                </o-carousel-item>
-            </o-carousel>
-        </template>
-        <template #overlay>
-            <o-icon 
-                v-if="gallery"
-                icon="times"
-                root-class="ex-close-icon"
-                clickable
-                @click.native="switchGallery(false)" 
-            />
-            <div style="color: #ffffff; text-align: center">
-                Hello, I'm an overlay!
-            </div>
-        </template>
-    </o-carousel>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                gallery: false,
-                al: {
-                    itemsToShow: 2,
-                    breakpoints: {
-                        768: {
-                            itemsToShow: 4
-                        },
-                        960: {
-                            itemsToShow: 6
-                        }
-                    }
-                },
-                items: [
-                    {
-                        title: 'Slide 1',
-                        image: 'https://picsum.photos/id/1/1230/500'
-                    },
-                    {
-                        title: 'Slide 2',
-                        image: 'https://picsum.photos/id/2/1230/500'
-                    },
-                    {
-                        title: 'Slide 3',
-                        image: 'https://picsum.photos/id/3/1230/500'
-                    },
-                    {
-                        title: 'Slide 4',
-                        image: 'https://picsum.photos/id/4/1230/500'
-                    },
-                    {
-                        title: 'Slide 5',
-                        image: 'https://picsum.photos/id/5/1230/500'
-                    },
-                    {
-                        title: 'Slide 6',
-                        image: 'https://picsum.photos/id/6/1230/500'
-                    },
-                    {
-                        title: 'Slide 7',
-                        image: 'https://picsum.photos/id/7/1230/500'
-                    }
-                ]
-            }
-        },
-        methods: {
-            switchGallery(value) {
-                this.gallery = value
-                if (value) {
-                    document.documentElement.classList.add('o-clipped')
-                } else {
-                    document.documentElement.classList.remove('o-clipped')
-                }
-            }
-        }
-    }
-</script>
-
-<style>
-.image img {
-    display: block;
-    height: auto;
-    width: 100%;
-}
-.img-indicator {
-    filter: grayscale(100%);
-}
-.img-indicator-active {
-    filter: grayscale(0%);
-}
-.ex-close-icon {
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    color: #ffffff;
-    z-index: 99;
-}
-</style>
-```
-:::
-
-### Custom
-
-::: demo
-```html
-<template>
-    <section>
-
-        <div class="example-component">
-            <o-field grouped group-multiline>
-                <div class="control">
-                    <o-switch v-model="autoPlay">Autoplay</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="pauseHover" :disabled="!autoPlay">Pause on hover</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="drag">Drag event</o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="repeat" :disabled="!autoPlay">Repeat</o-switch>
-                </div>
-            </o-field>
-            <o-field grouped group-multiline>
-                <o-field label="Value">
-                    <o-input type="number" v-model.number="carousel" min="0" :max="carousels.length - 1" />
-                </o-field>
-                <o-field label="Interval">
-                    <o-input type="number" v-model.number="interval" min="0" step="1000" :disabled="!autoPlay"/>
-                </o-field>
-            </o-field>
-        </div>
-
-        <o-carousel
-            v-model="carousel"
-            :has-drag="drag"
-            :autoplay="autoPlay"
-            :pause-hover="pauseHover"
-            :interval="interval"
-            :repeat="repeat">
-            <o-carousel-item v-for="(carousel, i) in carousels" :key="i">
-                <section class="ex-slide" :style="{'background-color': carousel.color }">
-                    <h1>{{carousel.title}}</h1>
-                    <o-input :placeholder="carousel.title"></o-input>
-                    <p>A link that <a href="#arrow">goes to arrow</a></p>
-                </section>
-            </o-carousel-item>
-        </o-carousel>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                carousel: 0,
-                animated: 'slide',
-                drag: false,
-                autoPlay: false,
-                pauseHover: false,
-                pauseInfo: false,
-                repeat: false,
-                interval: 3000,
-                carousels: [
-                    { text: 'Slide 1', color: '#445e00' },
-                    { text: 'Slide 2', color: '#006724' },
-                    { text: 'Slide 3', color: '#b60000' },
-                    { text: 'Slide 4', color: '#f4c300' },
-                    { text: 'Slide 5', color: '#005c98' }
-                ]
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/carousel/index.js b/packages/oruga/src/components/carousel/index.js
deleted file mode 100644
index 95c7818ca..000000000
--- a/packages/oruga/src/components/carousel/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Carousel from './Carousel'
-import CarouselItem from './CarouselItem'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Carousel)
-        registerComponent(Vue, CarouselItem)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Carousel as OCarousel,
-    CarouselItem as OCarouselItem
-}
diff --git a/packages/oruga/src/components/checkbox/Checkbox.spec.js b/packages/oruga/src/components/checkbox/Checkbox.spec.js
deleted file mode 100644
index 7d5812a6a..000000000
--- a/packages/oruga/src/components/checkbox/Checkbox.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OCheckbox from '@components/checkbox/Checkbox'
-
-let wrapper
-
-describe('OCheckbox', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OCheckbox)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('has an input checkbox', () => {
-        expect(wrapper.contains('label input[type=checkbox]')).toBeTruthy()
-    })
-
-    it('emit input event with value when value change', async () => {
-        wrapper.setProps({ value: true })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.computedValue).toBeTruthy()
-
-        wrapper.vm.computedValue = false
-        await wrapper.vm.$nextTick()
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(false)
-    })
-
-    it('method focus() gives focus to the input element', (done) => {
-        wrapper.vm.$refs.input.focus = jest.fn()
-        wrapper.vm.focus()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled()
-            done()
-        })
-    })
-})
diff --git a/packages/oruga/src/components/checkbox/Checkbox.vue b/packages/oruga/src/components/checkbox/Checkbox.vue
deleted file mode 100644
index eb4696680..000000000
--- a/packages/oruga/src/components/checkbox/Checkbox.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-<template>
-    <label
-        :class="rootClasses"
-        ref="label"
-        :disabled="disabled"
-        @click.stop="focus"
-        @keydown.prevent.enter="$refs.label.click()">
-        <input
-            v-model="computedValue"
-            :indeterminate.prop="indeterminate"
-            type="checkbox"
-            ref="input"
-            @click.stop
-            :class="checkClasses"
-            :disabled="disabled"
-            :required="required"
-            :name="name"
-            :autocomplete="autocomplete"
-            v-bind="$attrs"
-            :value="nativeValue"
-            :true-value="trueValue"
-            :false-value="falseValue"
-            :aria-labelledby="ariaLabelledby">
-        <span
-            :id="ariaLabelledby"
-            :class="labelClasses">
-            <slot/>
-        </span>
-    </label>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import CheckRadioMixin from '../../utils/CheckRadioMixin'
-
-/**
- * Select a single or grouped options
- * @displayName Checkbox
- * @example ./examples/Checkbox.md
- * @style _checkbox.scss
- */
-export default {
-    name: 'OCheckbox',
-    mixins: [BaseComponentMixin, CheckRadioMixin],
-    configField: 'checkbox',
-    props: {
-        /**
-         * Same as native indeterminate
-         */
-        indeterminate: {
-            type: Boolean,
-            default: false
-        },
-        /**
-         * Overrides the returned value when it's checked
-         */
-        trueValue: {
-            type: [String, Number, Boolean],
-            default: true
-        },
-        /**
-         * Overrides the returned value when it's not checked
-         */
-        falseValue: {
-            type: [String, Number, Boolean],
-            default: false
-        },
-        /** Accessibility label to establish relationship between the checkbox and control label */
-        ariaLabelledby: String,
-        /* Same as native autocomplete */
-        autocomplete: String,
-        rootClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        checkClass: [String, Function, Array],
-        checkedClass: [String, Function, Array],
-        checkCheckedClass: [String, Function, Array],
-        checkIndeterminateClass: [String, Function, Array],
-        labelClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    watch: {
-        indeterminate: {
-            handler(val) {
-                this.isIndeterminate = val;
-            },
-            immediate: true,
-        },
-    },
-    computed: {
-        isChecked() {
-            return this.computedValue === this.trueValue
-                || Array.isArray(this.computedValue) && this.computedValue.indexOf(this.nativeValue) !== -1
-        },
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-chk'),
-                { [this.computedClass('checkedClass', 'o-chk--checked')] : this.isChecked },
-                { [this.computedClass('sizeClass', 'o-chk--', this.size)]: this.size },
-                { [this.computedClass('disabledClass', 'o-chk--disabled')]: this.disabled },
-                { [this.computedClass('variantClass', 'o-chk--', this.variant)]: this.variant }
-            ]
-        },
-        checkClasses() {
-            return [
-                this.computedClass('checkClass', 'o-chk__check'),
-                { [this.computedClass('checkCheckedClass', 'o-chk__check--checked')] : this.isChecked },
-                { [this.computedClass('checkIndeterminateClass', 'o-chk__check--indeterminate')] : this.isIndeterminate },
-            ]
-        },
-        labelClasses() {
-            return [
-                this.computedClass('labelClass', 'o-chk__label')
-            ]
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/checkbox/Inspector.vue b/packages/oruga/src/components/checkbox/Inspector.vue
deleted file mode 100644
index fcea80bb8..000000000
--- a/packages/oruga/src/components/checkbox/Inspector.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-checkbox v-model="s.checkbox" v-bind="s">Checkbox</o-checkbox>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'labelClass',
-          description : 'Class of the checkbox label'
-        },
-        {
-          class: 'checkClass',
-          description : 'Class of the checkbox'
-        },
-        {
-          class: 'checkedClass',
-          description : 'Class of the root element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = true;
-          }
-        },
-        {
-          class: 'checkCheckedClass',
-          description : 'Class of the checkbox when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = true;
-          }
-        },
-        {
-          class: 'checkIndeterminateClass',
-          description : 'Class when checkbox is indeterminate',
-          properties: ["indeterminate"],
-          action: (cmp) => {
-            cmp.data.indeterminate = true;
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the checkbox size',
-          properties: ["size"],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        },
-        {
-          class: 'disabledClass',
-          description : 'Class when checkbox is disabled',
-          properties: ["disabled"],
-          action: (cmp) => {
-            cmp.data.disabled = true;
-          }
-        },
-        {
-          class: 'variantClass',
-          description : 'Class of the checkbox variant',
-          properties: ["variant"],
-          suffixes: ['primary', 'info', 'warning', 'danger'],
-          action: (cmp) => {
-            cmp.data.variant = 'warning';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
diff --git a/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap b/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap
deleted file mode 100644
index 1bbd65caf..000000000
--- a/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OCheckbox render correctly 1`] = `<label class="o-chk"><input type="checkbox" true-value="true" class="o-chk__check" value="false"> <span class="o-chk__label"></span></label>`;
diff --git a/packages/oruga/src/components/checkbox/examples/Checkbox.md b/packages/oruga/src/components/checkbox/examples/Checkbox.md
deleted file mode 100644
index 2a6025ac9..000000000
--- a/packages/oruga/src/components/checkbox/examples/Checkbox.md
+++ /dev/null
@@ -1,140 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="field">
-            <o-checkbox>Basic</o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox v-model="checkbox">
-                {{ checkbox }}
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox v-model="checkboxCustom"
-                true-value="Yes"
-                false-value="No">
-                {{ checkboxCustom }}
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :indeterminate="true">
-                Indeterminate
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox disabled>Disabled</o-checkbox>
-        </div>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                checkbox: false,
-                checkboxCustom: 'Yes'
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Variants
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="field">
-            <o-checkbox :value="true">
-                Default
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :value="true"
-            variant="primary">
-                Primary
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :value="true"
-            variant="info">
-                Info
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :value="true"
-            variant="success">
-                Success
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :value="true"
-            variant="danger">
-                Danger
-            </o-checkbox>
-        </div>
-        <div class="field">
-            <o-checkbox :value="true"
-            variant="warning">
-                Warning
-            </o-checkbox>
-        </div>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Array
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-checkbox v-model="checkboxGroup"
-                native-value="Silver">
-                Silver
-            </o-checkbox>
-            <o-checkbox v-model="checkboxGroup"
-                native-value="Flint">
-                Flint
-            </o-checkbox>
-            <o-checkbox v-model="checkboxGroup"
-                native-value="Vane">
-                Vane
-            </o-checkbox>
-            <o-checkbox v-model="checkboxGroup"
-                native-value="Billy" disabled>
-                Billy
-            </o-checkbox>
-        </div>
-        <p class="content">
-            <b>Selection:</b>
-            {{ checkboxGroup }}
-        </p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                checkboxGroup: ['Flint']
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/checkbox/index.js b/packages/oruga/src/components/checkbox/index.js
deleted file mode 100644
index 142c128dd..000000000
--- a/packages/oruga/src/components/checkbox/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Checkbox from './Checkbox'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Checkbox)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Checkbox as OCheckbox
-}
diff --git a/packages/oruga/src/components/collapse/Collapse.spec.js b/packages/oruga/src/components/collapse/Collapse.spec.js
deleted file mode 100644
index 3d0f5b5f4..000000000
--- a/packages/oruga/src/components/collapse/Collapse.spec.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OCollapse from '@components/collapse/Collapse'
-
-let wrapper
-
-describe('OCollapse', () => {
-    describe('default', () => {
-        beforeEach(() => {
-            wrapper = shallowMount(OCollapse)
-        })
-
-        it('is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-        })
-
-        it('default props and vm', () => {
-            expect(wrapper.props().open).toBe(true)
-            expect(wrapper.props().animation).toBe('fade')
-            expect(wrapper.vm.isOpen).toBe(true)
-        })
-
-        it('render correctly', () => {
-            expect(wrapper.html()).toMatchSnapshot()
-        })
-    })
-    describe('open prop is false', () => {
-        beforeEach(() => {
-            wrapper = shallowMount(OCollapse, {
-                propsData: {
-                    open: false,
-                    position: 'bottom'
-                }
-            })
-        })
-
-        it('set default open prop', () => {
-            expect(wrapper.props().open).toBe(false)
-            expect(wrapper.vm.isOpen).toBe(false)
-        })
-
-        it('call toggle method', async () => {
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(false)
-            wrapper.vm.toggle()
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isOpen).toBe(true)
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(true)
-        })
-
-        it('emit a click event', async () => {
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(false)
-            const updateOpen = jest.fn()
-            wrapper.vm.$on('update:open', updateOpen)
-            wrapper.find('.o-clps__trigger').trigger('click')
-            await wrapper.vm.$nextTick()
-            expect(updateOpen).toHaveBeenCalledTimes(1)
-            expect(updateOpen).toHaveBeenCalledWith(true)
-            expect(wrapper.vm.isOpen).toBe(true)
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(true)
-        })
-
-        it('should emit open event', () => {
-            const open = jest.fn()
-            wrapper.vm.$on('open', open)
-            wrapper.find('.o-clps__trigger').trigger('click')
-            expect(open).toHaveBeenCalledTimes(1)
-        })
-
-        it('update open prop', async () => {
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(false)
-            wrapper.setProps({ open: true })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isOpen).toBe(true)
-            expect(wrapper.find('.o-clps__content').isVisible()).toBe(true)
-        })
-    })
-
-    it('should have trigger slot', () => {
-        const triggerSlot = '<strong> Header </strong>'
-        const wrapper = shallowMount(OCollapse, {
-            slots: {
-                trigger: triggerSlot
-            }
-        })
-        expect(wrapper.find('.o-clps__trigger :first-child').html()).toBe(triggerSlot)
-    })
-
-    it('should have scoped trigger slot', () => {
-        const triggerSlot = '<strong> Header </strong>'
-        const wrapper = shallowMount(OCollapse, {
-            scopedSlots: {
-                trigger: triggerSlot
-            }
-        })
-        expect(wrapper.find('.o-clps__trigger :first-child').html()).toBe(triggerSlot)
-    })
-
-    it('should have default slot', () => {
-        const slotDefault = '<div> Content </div>'
-        wrapper = shallowMount(OCollapse, {
-            slots: {
-                default: slotDefault
-            }
-        })
-        expect(wrapper.find('.o-clps__content :first-child').html()).toBe(slotDefault)
-    })
-
-    it('should emit close event', () => {
-        wrapper = shallowMount(OCollapse, {
-            propsData: {
-                open: true
-            }
-        })
-        const close = jest.fn()
-        wrapper.vm.$on('close', close)
-        wrapper.find('.o-clps__trigger').trigger('click')
-        expect(close).toHaveBeenCalledTimes(1)
-    })
-})
diff --git a/packages/oruga/src/components/collapse/Collapse.vue b/packages/oruga/src/components/collapse/Collapse.vue
deleted file mode 100644
index 3a8fcda48..000000000
--- a/packages/oruga/src/components/collapse/Collapse.vue
+++ /dev/null
@@ -1,95 +0,0 @@
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * An easy way to toggle what you want
- * @displayName Collapse
- * @example ./examples/Collapse.md
- * @style _collapse.scss
- */
-export default {
-    name: 'OCollapse',
-    mixins: [BaseComponentMixin],
-    configField: 'collapse',
-    props: {
-        /**
-         * Whether collapse is open or not, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding
-         */
-        open: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Custom animation (transition name)
-         */
-        animation: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'collapse.animation', 'fade')
-            }
-        },
-        ariaId: {
-            type: String,
-            default: ''
-        },
-        /**
-         * Trigger position
-         * @values top, bottom
-         */
-        position: {
-            type: String,
-            default: 'top',
-            validator(value) {
-                return [
-                    'top',
-                    'bottom'
-                ].indexOf(value) > -1
-            }
-        },
-        rootClass: [String, Function, Array],
-        triggerClass: [String, Function, Array],
-        contentClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            isOpen: this.open
-        }
-    },
-    watch: {
-        open(value) {
-            this.isOpen = value
-        }
-    },
-    methods: {
-        /**
-        * Toggle and emit events
-        */
-        toggle() {
-            this.isOpen = !this.isOpen
-            this.$emit('update:open', this.isOpen)
-            this.$emit(this.isOpen ? 'open' : 'close')
-        }
-    },
-    render(h) {
-        const trigger = h('div', {
-            staticClass: this.computedClass('triggerClass', 'o-clps__trigger'),
-            on: { click: this.toggle }
-        }, this.$scopedSlots.trigger ? this.$scopedSlots.trigger({ open: this.isOpen }) : this.$slots.trigger )
-        const content = h('transition', { props: { name: this.animation } }, [
-            h('div', {
-                staticClass: this.computedClass('contentClass', 'o-clps__content'),
-                attrs: { 'id': this.ariaId },
-                directives: [{
-                    name: 'show',
-                    value: this.isOpen
-                }]
-            }, this.$slots.default)
-        ])
-        return h('div',
-            { staticClass: this.computedClass('rootClass', 'o-clps') },
-            this.position === 'top' ? [trigger, content] : [content, trigger])
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/collapse/Inspector.vue b/packages/oruga/src/components/collapse/Inspector.vue
deleted file mode 100644
index ec28dcc48..000000000
--- a/packages/oruga/src/components/collapse/Inspector.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
-  <div>
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-collapse
-          animation="slide"
-          v-bind="s"
-          :open="true"
-          style="border: 1px solid #dfe2e5"
-        >
-          <div
-            slot="trigger"
-            slot-scope="props"
-            class="card-header"
-            role="button"
-          >
-            <p class="card-header-title">
-              Collapse Title
-            </p>
-            <a class="card-header-icon">
-              <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon>
-            </a>
-          </div>
-          <div class="card-content">
-            <div class="content">
-              Collapse Content
-            </div>
-          </div>
-        </o-collapse>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-            class: "rootClass",
-            description: "Class of the root element"
-        },
-        {
-            class: "triggerClass",
-            description: "Class of the trigger element"
-        },
-        {
-            class: "contentClass",
-            description: "Class of the content"
-        }
-      ],
-    };
-  },
-};
-</script>
diff --git a/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap b/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap
deleted file mode 100644
index 414d86a19..000000000
--- a/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OCollapse default render correctly 1`] = `
-<div class="o-clps">
-    <div class="o-clps__trigger"></div>
-    <transition-stub name="fade">
-        <div id="" class="o-clps__content"></div>
-    </transition-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/collapse/examples/Collapse.md b/packages/oruga/src/components/collapse/examples/Collapse.md
deleted file mode 100644
index 0eba893af..000000000
--- a/packages/oruga/src/components/collapse/examples/Collapse.md
+++ /dev/null
@@ -1,137 +0,0 @@
-## Examples
-
-::: demo
-```html
-<template>
-    <section>
-
-        <o-collapse :open="false" aria-id="contentIdForA11y1">
-            <template #trigger="props">
-                <o-button
-                    variant="primary"
-                    aria-controls="contentIdForA11y1"
-                    :aria-expanded="props.open">Click me!</o-button>
-            </template>
-            <div class="notification">
-                <h3>
-                    Subtitle
-                </h3>
-                <p>
-                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br/>
-                    Nulla accumsan, metus ultrices eleifend gravida, nulla nunc varius lectus, nec rutrum justo nibh eu lectus. <br/>
-                    Ut vulputate semper dui. Fusce erat odio, sollicitudin vel erat vel, interdum mattis neque.
-                </p>
-            </div>
-        </o-collapse>
-
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Accordion
-
-::: demo
-```html
-<template>
-    <section>
-
-        <o-collapse
-            class="card"
-            animation="slide"
-            v-for="(collapse, index) of collapses"
-            :key="index"
-            :open="isOpen == index"
-            @open="isOpen = index">
-            <template #trigger="props">
-                <div
-                    class="card-header"
-                    role="button"
-                    :aria-controls="'contentIdForA11y5-' + index"
-                    :aria-expanded="isOpen">
-                    <p class="card-header-title">
-                        {{ collapse.title }}
-                    </p>
-                    <a class="card-header-icon">
-                        <o-icon
-                            :icon="props.open ? 'caret-up' : 'caret-down'">
-                        </o-icon>
-                    </a>
-                </div>
-            </template>
-            <div class="card-content">
-                <div class="content">
-                    {{ collapse.text }}
-                </div>
-            </div>
-        </o-collapse>
-
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isOpen: 0,
-                collapses: [
-                {
-                    title: 'Title 1',
-                    text: 'Text 1'
-                },
-                {
-                    title: 'Title 2',
-                    text: 'Text 2'
-                },
-                {
-                    title: 'Title 3',
-                    text: 'Text 3'
-                }
-                ]
-            }
-        }
-    }
-</script>
-
-<style>
-.card {
-    background-color: #fff;
-    box-shadow: 0 2px 3px hsla(0,0%,4%,.1), 0 0 0 1px hsla(0,0%,4%,.1);
-    color: #4a4a4a;
-    max-width: 100%;
-    position: relative;
-}
-.card-header {
-    background-color: transparent;
-    align-items: stretch;
-    box-shadow: 0 1px 2px hsla(0,0%,4%,.1);
-    display: flex;
-}
-.card-header-title {
-    align-items: center;
-    color: #363636;
-    display: flex;
-    flex-grow: 1;
-    font-weight: 700;
-    padding: .75rem;
-    margin: 0;
-}
-.card-header-icon {
-    align-items: center;
-    cursor: pointer;
-    display: flex;
-    padding: .75rem;
-    justify-content: center;
-}
-.card-content {
-    padding: 1.5rem;
-    background-color: transparent;
-}
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/collapse/index.js b/packages/oruga/src/components/collapse/index.js
deleted file mode 100644
index 4f020a6e7..000000000
--- a/packages/oruga/src/components/collapse/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Collapse from './Collapse'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Collapse)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Collapse as OCollapse
-}
diff --git a/packages/oruga/src/components/datepicker/Datepicker.spec.js b/packages/oruga/src/components/datepicker/Datepicker.spec.js
deleted file mode 100644
index 3c9569072..000000000
--- a/packages/oruga/src/components/datepicker/Datepicker.spec.js
+++ /dev/null
@@ -1,314 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODatepicker from '@components/datepicker/Datepicker'
-
-import {setOptions} from '@utils/config'
-import { getOptions } from '../../utils/config'
-
-let wrapper, defaultProps
-
-const newDate = (y, m, d) => {
-    const date = new Date(Date.UTC(y, m, d))
-    date.getDate = jest.fn(() => date.getUTCDate())
-    date.getMonth = jest.fn(() => date.getUTCMonth())
-    return date
-}
-
-const defaultMonthNames = [
-    'January', 'February', 'March', 'April', 'May', 'June', 'July',
-    'August', 'September', 'October', 'November', 'December'
-]
-const defaultDayNames = ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'S']
-const defaultFirstDayOfWeek = 0
-const defaultLocale = 'it-IT'
-
-describe('ODatepicker', () => {
-
-    beforeEach(() => {
-        setOptions(Object.assign(getOptions(), {
-            datepicker: {
-                monthNames: defaultMonthNames,
-                dayNames: defaultDayNames,
-                firstDayOfWeek: defaultFirstDayOfWeek
-            },
-            locale: defaultLocale
-        }))
-
-        defaultProps = {
-            dayNames: defaultDayNames,
-            monthNames: defaultMonthNames,
-            focusedDate: newDate(2018, 7, 15)
-        }
-
-        wrapper = shallowMount(ODatepicker, {
-            propsData: {
-                ...defaultProps
-            },
-            stubs: {
-                transition: false
-            }
-        })
-
-        wrapper.vm.updateInternalState = jest.fn(() => wrapper.vm.updateInternalState)
-        wrapper.vm.togglePicker = jest.fn(() => wrapper.vm.togglePicker)
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ODatepicker')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        wrapper.setProps({dateCreator: () => {}})
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('should have valid default values', () => {
-        expect(wrapper.vm.firstDayOfWeek).toBe(0)
-        expect(wrapper.vm.monthNames).toEqual(defaultMonthNames)
-        expect(wrapper.vm.dayNames).toEqual(defaultDayNames)
-    })
-
-    it('react accordingly when setting computedValue', () => {
-        const date = new Date()
-        wrapper.vm.computedValue = date
-        expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date)
-        expect(wrapper.vm.togglePicker).toHaveBeenCalled()
-        expect(wrapper.emitted()['input']).toBeTruthy()
-    })
-
-    it('react accordingly when handling native picker', () => {
-        const date = new Date(2020, 0, 1)
-        wrapper.vm.onChangeNativePicker({ target: { value: '2020-01-01' } })
-        expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date)
-        expect(wrapper.vm.togglePicker).toHaveBeenCalled()
-        expect(wrapper.emitted()['input']).toBeTruthy()
-    })
-
-    it('react accordingly when handling native picker clear', () => {
-        wrapper.vm.onChangeNativePicker({ target: { value: '' } })
-        expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(null)
-        expect(wrapper.vm.togglePicker).toHaveBeenCalled()
-        expect(wrapper.emitted()['input']).toEqual([[null]])
-    })
-
-    it('react accordingly when changing v-model', async () => {
-        const date = new Date()
-        wrapper.setProps({
-            value: date
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date)
-        expect(wrapper.vm.togglePicker).toHaveBeenCalled()
-    })
-
-    it('set focusedDateData when changing focused date', async () => {
-        const date = newDate(2019, 8, 26)
-        wrapper.setProps({
-            focusedDate: date
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.focusedDateData).toEqual({
-            day: date.getDate(),
-            month: date.getMonth(),
-            year: date.getFullYear()
-        })
-    })
-
-    it('react accordingly when calling onChange', () => {
-        const date = new Date()
-        wrapper.setProps({dateParser: jest.fn()})
-        wrapper.vm.onChange(date)
-        expect(wrapper.vm.dateParser).toHaveBeenCalled()
-    })
-
-    it('react accordingly when calling prev', async () => {
-        let date = newDate(2019, 8, 26)
-        wrapper.setProps({
-            focusedDate: date
-        })
-        await wrapper.vm.$nextTick()
-        wrapper.vm.prev()
-        expect(wrapper.vm.focusedDateData.month).toBe(7)
-
-        date = newDate(2019, 0, 26)
-        wrapper.setProps({
-            focusedDate: date
-        })
-        await wrapper.vm.$nextTick()
-        wrapper.vm.prev()
-        expect(wrapper.vm.focusedDateData.year).toBe(2018)
-        expect(wrapper.vm.focusedDateData.month).toBe(11)
-    })
-
-    it('react accordingly when calling next', async () => {
-        let date = newDate(2019, 8, 26)
-        wrapper.setProps({
-            focusedDate: date
-        })
-        await wrapper.vm.$nextTick()
-        wrapper.vm.next()
-        expect(wrapper.vm.focusedDateData.month).toBe(9)
-
-        date = newDate(2019, 11, 26)
-        wrapper.setProps({
-            focusedDate: date
-        })
-        await wrapper.vm.$nextTick()
-        wrapper.vm.next()
-        expect(wrapper.vm.focusedDateData.year).toBe(2020)
-        expect(wrapper.vm.focusedDateData.month).toBe(0)
-    })
-
-    it('handles accordingly the list of months', async () => {
-        wrapper.setProps({
-            focusedDate: newDate(2021, 10, 16),
-            minDate: newDate(2021, 10, 15),
-            maxDate: null
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.listOfMonths.filter((month) => !month.disabled).map((month) => month.name)).toEqual(['November', 'December'])
-
-        wrapper.setProps({
-            focusedDate: newDate(2021, 2, 1),
-            minDate: null,
-            maxDate: newDate(2021, 2, 15)
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.listOfMonths.filter((month) => !month.disabled).map((month) => month.name)).toEqual(['January', 'February', 'March'])
-    })
-
-    it('handles accordingly the list of years', () => {
-        wrapper.setProps({
-            minDate: newDate(2017, 1, 1),
-            maxDate: null
-        })
-        const y = [2017]
-        for (let i = 1; i <= 11; i++) y.push(y[i - 1] + 1)
-        expect(wrapper.vm.listOfYears).toEqual(y.reverse())
-
-        wrapper.setProps({
-            maxDate: newDate(2020, 1, 1)
-        })
-        expect(wrapper.vm.listOfYears.sort()).toEqual([2020, 2019, 2018, 2017].sort())
-    })
-
-    it('handles accordingly focus', () => {
-        wrapper.setProps({
-            openOnFocus: false
-        })
-        wrapper.vm.onFocus = jest.fn()
-        wrapper.vm.togglePicker = jest.fn()
-
-        wrapper.vm.handleOnFocus()
-        expect(wrapper.vm.onFocus).toHaveBeenCalled()
-        expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0)
-
-        wrapper.setProps({
-            openOnFocus: true
-        })
-        wrapper.vm.handleOnFocus()
-        expect(wrapper.vm.onFocus).toHaveBeenCalled()
-        expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(1)
-    })
-
-    describe('#dateFormatter', () => {
-        it('should add one to month since month in dates starts from 0', () => {
-            const dateToFormat = new Date(2019, 3, 1)
-            const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm)
-            expect(formattedDate).toEqual('1/4/2019')
-        })
-
-        it('should format based on 2-digit numeric locale date with type === month', () => {
-            wrapper.setProps({
-                type: 'month'
-            })
-            const dateToFormat = new Date(2019, 3, 1)
-            const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm)
-            expect(formattedDate).toEqual('4/2019')
-        })
-
-        it('should format a range of dates passed via array', () => {
-            const dateToFormat = [
-                new Date(2019, 3, 1),
-                new Date(2019, 3, 3)
-            ]
-            const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm)
-            expect(formattedDate).toEqual('1/4/2019 - 3/4/2019')
-        })
-
-        describe('multiple', () => {
-            beforeEach(() => {
-                wrapper.setProps({
-                    inline: true,
-                    multiple: true
-                })
-                wrapper.vm.updateInternalState = jest.fn(() => wrapper.vm.updateInternalState)
-                wrapper.vm.togglePicker = jest.fn(() => wrapper.vm.togglePicker)
-            })
-
-            it('should format multiple dates passed via array', () => {
-                const dateToFormat = [
-                    new Date(2019, 3, 1),
-                    new Date(2019, 3, 13),
-                    new Date(2019, 3, 3)
-                ]
-                const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm)
-                expect(formattedDate).toEqual('1/4/2019, 13/4/2019, 3/4/2019')
-            })
-
-            it('react accordingly when setting computedValue', () => {
-                const date = new Date()
-                wrapper.vm.computedValue = date
-                expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date)
-                expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0)
-                expect(wrapper.emitted()['input']).toBeTruthy()
-            })
-
-            it('react accordingly when changing v-model', async () => {
-                const date = new Date()
-                wrapper.setProps({
-                    value: date
-                })
-                await wrapper.vm.$nextTick()
-                expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date)
-                expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0)
-            })
-        })
-    })
-
-    describe('#formatValue', () => {
-        it('should call dateFormatter, passing the date', () => {
-            const mockDateFormatter = jest.fn()
-            wrapper.setProps({
-                dateFormatter: mockDateFormatter,
-                closeOnClick: false
-            })
-            const date = new Date()
-            wrapper.vm.formatValue(date)
-            expect(mockDateFormatter.mock.calls[0][0]).toEqual(date)
-        })
-
-        it('should not call dateFormatter when value is undefined or NaN', () => {
-            const mockDateFormatter = jest.fn()
-            wrapper.setProps({
-                dateFormatter: mockDateFormatter
-            })
-            wrapper.vm.formatValue(undefined)
-            expect(mockDateFormatter.mock.calls.length).toEqual(0)
-            wrapper.vm.formatValue('oruga')
-            expect(mockDateFormatter.mock.calls.length).toEqual(0)
-        })
-
-        it('should not call dateFormatter when value is an array with undefined or NaN elements', () => {
-            const mockDateFormatter = jest.fn()
-            wrapper.setProps({
-                dateFormatter: mockDateFormatter
-            })
-            wrapper.vm.formatValue([new Date(), undefined])
-            expect(mockDateFormatter.mock.calls.length).toEqual(0)
-            wrapper.vm.formatValue([new Date(), 'oruga'])
-            expect(mockDateFormatter.mock.calls.length).toEqual(0)
-        })
-    })
-
-})
diff --git a/packages/oruga/src/components/datepicker/Datepicker.vue b/packages/oruga/src/components/datepicker/Datepicker.vue
deleted file mode 100644
index a4f1fc83f..000000000
--- a/packages/oruga/src/components/datepicker/Datepicker.vue
+++ /dev/null
@@ -1,1075 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <o-dropdown
-            v-if="!isMobile || inline"
-            ref="dropdown"
-            v-bind="dropdownBind"
-            :position="position"
-            :disabled="disabled"
-            :inline="inline"
-            :mobile-modal="mobileModal"
-            :trap-focus="trapFocus"
-            :aria-role="ariaRole"
-            :aria-modal="!inline"
-            :trigger-tabindex="-1"
-            :append-to-body="appendToBody"
-            append-to-body-copy-parent
-            @active-change="onActiveChange">
-            <template
-                #trigger
-                v-if="!inline">
-                <slot name="trigger">
-                    <o-input
-                        ref="input"
-                        autocomplete="off"
-                        v-bind="inputBind"
-                        :value="formattedValue"
-                        :expanded="expanded"
-                        :placeholder="placeholder"
-                        :size="size"
-                        :icon="icon"
-                        :icon-right="iconRight"
-                        :icon-right-clickable="iconRightClickable"
-                        :icon-pack="iconPack"
-                        :rounded="rounded"
-                        :disabled="disabled"
-                        :readonly="!editable"
-                        :use-html5-validation="false"
-                        @click.native="onInputClick"
-                        @icon-right-click="$emit('icon-right-click')"
-                        @keyup.native.enter="togglePicker(true)"
-                        @change.native="onChange($event.target.value)"
-                        @focus="handleOnFocus" />
-                </slot>
-            </template>
-            <o-dropdown-item
-                override
-                tag="div"
-                :item-class="boxClasses"
-                :disabled="disabled"
-                :clickable="false">
-
-                <header :class="headerClasses">
-                    <slot name="header">
-                        <div :class="headerButtonsClasses">
-                            <a
-                                v-show="!showPrev && !disabled"
-                                :class="prevBtnClasses"
-                                role="button"
-                                href="#"
-                                :disabled="disabled"
-                                :aria-label="ariaPreviousLabel"
-                                @click.prevent="prev"
-                                @keydown.enter.prevent="prev"
-                                @keydown.space.prevent="prev">
-
-                                <o-icon
-                                    :icon="iconPrev"
-                                    :pack="iconPack"
-                                    both
-                                    clickable />
-                            </a>
-                            <a
-                                v-show="!showNext && !disabled"
-                                :class="nextBtnClasses"
-                                role="button"
-                                href="#"
-                                :disabled="disabled"
-                                :aria-label="ariaNextLabel"
-                                @click.prevent="next"
-                                @keydown.enter.prevent="next"
-                                @keydown.space.prevent="next">
-
-                                <o-icon
-                                    :icon="iconNext"
-                                    :pack="iconPack"
-                                    both
-                                    clickable />
-                            </a>
-                            <div :class="listsClasses">
-                                <o-select
-                                    v-if="!isTypeMonth"
-                                    v-model="focusedDateData.month"
-                                    v-bind="selectListBind"
-                                    :disabled="disabled"
-                                    :size="size">
-                                    <option
-                                        v-for="month in listOfMonths"
-                                        :value="month.index"
-                                        :key="month.name"
-                                        :disabled="month.disabled">
-                                        {{ month.name }}
-                                    </option>
-                                </o-select>
-                                <o-select
-                                    v-model="focusedDateData.year"
-                                    v-bind="selectListBind"
-                                    :disabled="disabled"
-                                    :size="size">
-                                    <option
-                                        v-for="year in listOfYears"
-                                        :value="year"
-                                        :key="year">
-                                        {{ year }}
-                                    </option>
-                                </o-select>
-                            </div>
-                        </div>
-                    </slot>
-                </header>
-                <slot name="table">
-                    <o-datepicker-table
-                        v-if="!isTypeMonth"
-                        v-model="computedValue"
-                        :day-names="newDayNames"
-                        :month-names="newMonthNames"
-                        :first-day-of-week="firstDayOfWeek"
-                        :rules-for-first-week="rulesForFirstWeek"
-                        :min-date="minDate"
-                        :max-date="maxDate"
-                        :focused="focusedDateData"
-                        :disabled="disabled"
-                        :unselectable-dates="unselectableDates"
-                        :unselectable-days-of-week="unselectableDaysOfWeek"
-                        :selectable-dates="selectableDates"
-                        :events="events"
-                        :indicators="indicators"
-                        :date-creator="dateCreator"
-                        :type-month="isTypeMonth"
-                        :nearby-month-days="nearbyMonthDays"
-                        :nearby-selectable-month-days="nearbySelectableMonthDays"
-                        :show-week-number="showWeekNumber"
-                        :week-number-clickable="weekNumberClickable"
-                        :range="range"
-                        :multiple="multiple"
-                        :table-class="tableClass"
-                        :table-head-class="tableHeadClass"
-                        :table-head-cell-class="tableHeadCellClass"
-                        :table-body-class="tableBodyClass"
-                        :table-row-class="tableRowClass"
-                        :table-cell-class="tableCellClass"
-                        :table-cell-selected-class="tableCellSelectedClass"
-                        :table-cell-first-selected-class="tableCellFirstSelectedClass"
-                        :table-cell-invisible-class="tableCellInvisibleClass"
-                        :table-cell-within-selected-class="tableCellWithinSelectedClass"
-                        :table-cell-last-selected-class="tableCellLastSelectedClass"
-                        :table-cell-first-hovered-class="tableCellFirstHoveredClass"
-                        :table-cell-within-hovered-class="tableCellWithinHoveredClass"
-                        :table-cell-last-hovered-class="tableCellLastHoveredClass"
-                        :table-cell-today-class="tableCellTodayClass"
-                        :table-cell-selectable-class="tableCellSelectableClass"
-                        :table-cell-unselectable-class="tableCellUnselectableClass"
-                        :table-cell-nearby-class="tableCellNearbyClass"
-                        :table-cell-events-class="tableCellEventsClass"
-                        :table-events-class="tableEventsClass"
-                        :table-event-variant-class="tableEventVariantClass"
-                        :table-event-class="tableEventClass"
-                        :table-event-indicators-class="tableEventIndicatorsClass"
-                        @range-start="date => $emit('range-start', date)"
-                        @range-end="date => $emit('range-end', date)"
-                        @close="togglePicker(false)"
-                        @update:focused="focusedDateData = $event"
-                    />
-                    <o-datepicker-month
-                        v-if="isTypeMonth"
-                        v-model="computedValue"
-                        :month-names="newMonthNames"
-                        :min-date="minDate"
-                        :max-date="maxDate"
-                        :focused="focusedDateData"
-                        :disabled="disabled"
-                        :unselectable-dates="unselectableDates"
-                        :unselectable-days-of-week="unselectableDaysOfWeek"
-                        :selectable-dates="selectableDates"
-                        :events="events"
-                        :indicators="indicators"
-                        :date-creator="dateCreator"
-                        :range="range"
-                        :multiple="multiple"
-                        :month-class="monthClass"
-                        :month-body-class="monthBodyClass"
-                        :month-table-class="monthTableClass"
-                        :month-cell-class="monthCellClass"
-                        :month-cell-selected-class="monthCellSelectedClass"
-                        :month-cell-first-selected-class="monthCellFirstSelectedClass"
-                        :month-cell-within-selected-class="monthCellWithinSelectedClass"
-                        :month-cell-last-selected-class="monthCellLastSelectedClass"
-                        :month-cell-within-hovered-range-class="monthCellWithinHoveredRangeClass"
-                        :month-cell-first-hovered-class="monthCellFirstHoveredClass"
-                        :month-cell-within-hovered-class="monthCellWithinHoveredClass"
-                        :month-cell-last-hovered-class="monthCellLastHoveredClass"
-                        :month-cell-today-class="monthCellTodayClass"
-                        :month-cell-selectable-class="monthCellSelectableClass"
-                        :month-cell-unselectable-class="monthCellUnselectableClass"
-                        :month-cell-events-class="monthCellEventsClass"
-                        @range-start="date => $emit('range-start', date)"
-                        @range-end="date => $emit('range-end', date)"
-                        @close="togglePicker(false)"
-                        @change-focus="changeFocus"
-                        @update:focused="focusedDateData = $event"
-                    />
-                </slot>
-                <footer
-                    v-if="$slots.footer !== undefined"
-                    :class="footerClasses">
-                    <slot name="footer" />
-                </footer>
-            </o-dropdown-item>
-        </o-dropdown>
-
-        <o-input
-            v-else
-            ref="input"
-            v-bind="inputBind"
-            :type="!isTypeMonth ? 'date' : 'month'"
-            autocomplete="off"
-            :value="formatNative(computedValue)"
-            :placeholder="placeholder"
-            :size="size"
-            :icon="icon"
-            :icon-pack="iconPack"
-            :rounded="rounded"
-            :max="formatNative(maxDate)"
-            :min="formatNative(minDate)"
-            :disabled="disabled"
-            :readonly="false"
-            :use-html5-validation="false"
-            @change.native="onChangeNativePicker"
-            @focus="onFocus"
-            @blur="onBlur"
-            @invalid="onInvalid" />
-    </div>
-</template>
-
-<script>
-import FormElementMixin from '../../utils/FormElementMixin'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import { isMobile, getMonthNames, getWeekdayNames, matchWithGroups, getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-import Dropdown from '../dropdown/Dropdown'
-import DropdownItem from '../dropdown/DropdownItem'
-import Input from '../input/Input'
-import Select from '../select/Select'
-import Icon from '../icon/Icon'
-
-import DatepickerTable from './DatepickerTable'
-import DatepickerMonth from './DatepickerMonth'
-
-const defaultDateFormatter = (date, vm) => {
-    const targetDates = Array.isArray(date) ? date : [date]
-    const dates = targetDates.map((date) => {
-        const d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12)
-        return !vm.isTypeMonth ? vm.dtf.format(d) : vm.dtfMonth.format(d)
-    })
-    return !vm.multiple ? dates.join(' - ') : dates.join(', ')
-}
-
-const defaultDateParser = (date, vm) => {
-    if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === 'function') {
-        const formatRegex = (vm.isTypeMonth ? vm.dtfMonth : vm.dtf)
-            .formatToParts(new Date(2000, 11, 25)).map((part) => {
-                if (part.type === 'literal') {
-                    return part.value
-                }
-                return `((?!=<${part.type}>)\\d+)`
-            }).join('')
-        const dateGroups = matchWithGroups(formatRegex, date)
-
-        // We do a simple validation for the group.
-        // If it is not valid, it will fallback to Date.parse below
-        if (
-            dateGroups.year &&
-            dateGroups.year.length === 4 &&
-            dateGroups.month &&
-            dateGroups.month <= 12
-        ) {
-            if (vm.isTypeMonth) return new Date(dateGroups.year, dateGroups.month - 1)
-            else if (dateGroups.day && dateGroups.day <= 31) {
-                return new Date(dateGroups.year, dateGroups.month - 1, dateGroups.day, 12)
-            }
-        }
-    }
-    // Fallback if formatToParts is not supported or if we were not able to parse a valid date
-    if (!vm.isTypeMonth) return new Date(Date.parse(date))
-    if (date) {
-        const s = date.split('/')
-        const year = s[0].length === 4 ? s[0] : s[1]
-        const month = s[0].length === 2 ? s[0] : s[1]
-        if (year && month) {
-            return new Date(parseInt(year, 10), parseInt(month, 10) - 1, 1, 0, 0, 0, 0)
-        }
-    }
-    return null
-}
-
-/**
- * An input with a simple dropdown/modal for selecting a date, uses native datepicker for mobile
- * @displayName Datepicker
- * @example ./examples/Datepicker.md
- * @style _datepicker.scss
- */
-export default {
-    name: 'ODatepicker',
-    components: {
-        [DatepickerTable.name]: DatepickerTable,
-        [DatepickerMonth.name]: DatepickerMonth,
-        [Input.name]: Input,
-        [Select.name]: Select,
-        [Icon.name]: Icon,
-        [Dropdown.name]: Dropdown,
-        [DropdownItem.name]: DropdownItem
-    },
-    configField: 'datepicker',
-    mixins: [BaseComponentMixin, FormElementMixin, MatchMediaMixin],
-    inheritAttrs: false,
-    provide() {
-        return {
-            $datepicker: this
-        }
-    },
-    props: {
-        /** @model */
-        value: {
-            type: [Date, Array]
-        },
-        /* Names of days to display in table header */
-        dayNames: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.dayNames', undefined)
-            }
-        },
-        /* Names of months to display in table header */
-        monthNames: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.monthNames', undefined)
-            }
-        },
-        /**
-         * First day of week to display in table header (getDay() of Date Object)
-         * @values 0, 1, 2, 3, 4, 5, 6
-         */
-        firstDayOfWeek: {
-            type: Number,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.firstDayOfWeek', 0)
-            }
-        },
-        /**
-         * Size of button, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /* Datepicker is shown inline, input is removed */
-        inline: Boolean,
-        /* Earliest date available for selection */
-        minDate: Date,
-        /* Latest date available for selection */
-        maxDate: Date,
-        /* Date that should be initially focused upon */
-        focusedDate: Date,
-        placeholder: String,
-        /* Enable input/typing. Note that you might have to set a custom date parser */
-        editable: Boolean,
-        disabled: Boolean,
-        /* Array or function of unselectable dates */
-        unselectableDates: [Array, Function],
-        /* Array of unselectable days of week */
-        unselectableDaysOfWeek: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.unselectableDaysOfWeek', undefined)
-            }
-        },
-        /* Array or function of selectable dates */
-        selectableDates: [Array, Function],
-        /* Function to format date to a string for display in the input */
-        dateFormatter: {
-            type: Function,
-            default: (date, vm) => {
-                const dateFormatter = getValueByPath(getOptions(), 'datepicker.dateFormatter', undefined)
-                if (typeof dateFormatter === 'function') {
-                    return dateFormatter(date)
-                } else {
-                    return defaultDateFormatter(date, vm)
-                }
-            }
-        },
-        /* Function to parse string to a date for set a date from the input to the component */
-        dateParser: {
-            type: Function,
-            default: (date, vm) => {
-                const dateParser = getValueByPath(getOptions(), 'datepicker.dateParser', undefined)
-                if (typeof dateParser === 'function') {
-                    return dateParser(date)
-                } else {
-                    return defaultDateParser(date, vm)
-                }
-            }
-        },
-        /* Function used internally to create a new Date instance */
-        dateCreator: {
-            type: Function,
-            default: () => {
-                const dateCreator = getValueByPath(getOptions(), 'datepicker.dateCreator', undefined)
-                if (typeof dateCreator === 'function') {
-                    return dateCreator()
-                } else {
-                    return new Date()
-                }
-            }
-        },
-        /* Enable native datepicker on mobile */
-        mobileNative: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.mobileNative', true)
-            }
-        },
-        /**
-         * Optional, position of the datepicker relative to the input
-         * @values top-right, top-left, bottom-left
-         */
-        position: String,
-        /**
-         * 	Icon name to be added on the right side
-         */
-        iconRight: String,
-        /**
-         * Make the icon right clickable
-         */
-        iconRightClickable: Boolean,
-        /* Dates to display indicators */
-        events: Array,
-        /* Shape to use when showing event indicators */
-        indicators: {
-            type: String,
-            default: 'dots'
-        },
-        /* Open datepicker on input focus */
-        openOnFocus: Boolean,
-        /* Icon to use for previous month */
-        iconPrev: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.iconPrev', 'chevron-left')
-            }
-        },
-        /* Icon to use for next month */
-        iconNext: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.iconNext', 'chevron-right')
-            }
-        },
-        /* Years range relative to selected year */
-        yearsRange: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.yearsRange', [-100, 10])
-            }
-        },
-        type: {
-            type: String,
-            validator: (value) => {
-                return [
-                    'month'
-                ].indexOf(value) >= 0
-            }
-        },
-        /* Show/Hide nearby month days (prev and next month) */
-        nearbyMonthDays: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.nearbyMonthDays', true)
-            }
-        },
-        /* When nearby-month-days, it allows to select/unselect nearby month days */
-        nearbySelectableMonthDays: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.nearbySelectableMonthDays', false)
-            }
-        },
-        /* Display week number */
-        showWeekNumber: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.showWeekNumber', false)
-            }
-        },
-        /* Enable click on week number */
-        weekNumberClickable: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.weekNumberClickable', false)
-            }
-        },
-        /* Choose the rule to determinate the first week of Year, 4 for ISO or 1 for other */
-        rulesForFirstWeek: {
-            type: Number,
-            default: () => 4
-        },
-        /* Flag to allow choosing a range of date */
-        range: {
-            type: Boolean,
-            default: false
-        },
-        /* Choose whether the Datepicker should close after selecting a date */
-        closeOnClick: {
-            type: Boolean,
-            default: true
-        },
-        /* Flag to allow choosing multiple dates */
-        multiple: {
-            type: Boolean,
-            default: false
-        },
-        /* Datepicker is shown into a modal on mobile */
-        mobileModal: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.mobileModal', true)
-            }
-        },
-        /* Trap focus inside the datepicker */
-        trapFocus: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.trapFocus', true)
-            }
-        },
-        /* Accept a string with a BCP 47 language tag, or an array of such strings. See Unicode BCP 47 locale identifier */
-        locale: {
-            type: [String, Array],
-            default: () => {
-                return getValueByPath(getOptions(), 'locale')
-            }
-        },
-        /* Append datepicker calendar to body */
-        appendToBody: Boolean,
-        /* Accessibility label for the next month button */
-        ariaNextLabel: String,
-        /* Accessibility label for the prev month button */
-        ariaPreviousLabel: String,
-        rootClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        boxClass: [String, Function, Array],
-        headerClass: [String, Function, Array],
-        headerButtonsClass: [String, Function, Array],
-        headerButtonsSizeClass: [String, Function, Array],
-        prevBtnClass: [String, Function, Array],
-        nextBtnClass: [String, Function, Array],
-        listsClass: [String, Function, Array],
-        footerClass: [String, Function, Array],
-        tableClass: [String, Function, Array],
-        tableHeadClass: [String, Function, Array],
-        tableHeadCellClass: [String, Function, Array],
-        tableBodyClass: [String, Function, Array],
-        tableRowClass: [String, Function, Array],
-        tableCellClass: [String, Function, Array],
-        tableCellSelectedClass: [String, Function, Array],
-        tableCellFirstSelectedClass: [String, Function, Array],
-        tableCellInvisibleClass: [String, Function, Array],
-        tableCellWithinSelectedClass: [String, Function, Array],
-        tableCellLastSelectedClass: [String, Function, Array],
-        tableCellFirstHoveredClass: [String, Function, Array],
-        tableCellWithinHoveredClass: [String, Function, Array],
-        tableCellLastHoveredClass: [String, Function, Array],
-        tableCellTodayClass: [String, Function, Array],
-        tableCellSelectableClass: [String, Function, Array],
-        tableCellUnselectableClass: [String, Function, Array],
-        tableCellNearbyClass: [String, Function, Array],
-        tableCellEventsClass: [String, Function, Array],
-        tableEventsClass: [String, Function, Array],
-        tableEventVariantClass: [String, Function, Array],
-        tableEventClass: [String, Function, Array],
-        tableEventIndicatorsClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        /* datapickermonth classes */
-        monthClass: [String, Function, Array],
-        monthBodyClass: [String, Function, Array],
-        monthTableClass: [String, Function, Array],
-        monthCellClass: [String, Function, Array],
-        monthCellSelectedClass: [String, Function, Array],
-        monthCellFirstSelectedClass: [String, Function, Array],
-        monthCellWithinSelectedClass: [String, Function, Array],
-        monthCellLastSelectedClass: [String, Function, Array],
-        monthCellWithinHoveredRangeClass: [String, Function, Array],
-        monthCellFirstHoveredClass: [String, Function, Array],
-        monthCellWithinHoveredClass: [String, Function, Array],
-        monthCellLastHoveredClass: [String, Function, Array],
-        monthCellTodayClass: [String, Function, Array],
-        monthCellSelectableClass: [String, Function, Array],
-        monthCellUnselectableClass: [String, Function, Array],
-        monthCellEventsClass: [String, Function, Array],
-        inputClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.inputClasses', {})
-            }
-        },
-        dropdownClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'datepicker.dropdownClasses', {})
-            }
-        },
-        selectListClasses: Object
-    },
-    data() {
-        const focusedDate = (Array.isArray(this.value) ? this.value[0] : (this.value)) ||
-            this.focusedDate || this.dateCreator()
-
-        if (!this.value && this.maxDate && this.maxDate.getFullYear() < focusedDate.getFullYear()) {
-            focusedDate.setFullYear(this.maxDate.getFullYear())
-        }
-
-        return {
-            dateSelected: this.value,
-            focusedDateData: {
-                day: focusedDate.getDate(),
-                month: focusedDate.getMonth(),
-                year: focusedDate.getFullYear()
-            }
-        }
-    },
-    computed: {
-        inputBind() {
-            return {
-                ...this.$attrs,
-                ...this.inputClasses
-            }
-        },
-        dropdownBind() {
-            return {
-                'root-class': this.computedClass('dropdownClasses.rootClass', 'o-dpck__dropdown'),
-                ...this.dropdownClasses
-            }
-        },
-        selectListBind() {
-            return {
-                ...this.selectListClasses
-            }
-        },
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-dpck'),
-                { [this.computedClass('sizeClass', 'o-dpck--', this.size)]: this.size },
-                 { [this.computedClass('mobileClass', 'o-dpck--mobile')]: this.isMatchMedia },
-            ]
-        },
-        boxClasses() {
-            return [
-                this.computedClass('boxClass', 'o-dpck__box')
-            ]
-        },
-        headerClasses() {
-            return [
-                this.computedClass('headerClass', 'o-dpck__header')
-            ]
-        },
-        headerButtonsClasses() {
-            return [
-                this.computedClass('headerButtonsClass', 'o-dpck__header__buttons'),
-                { [this.computedClass('headerButtonsSizeClass', 'o-dpck__header__buttons--', this.size)]: this.size },
-            ]
-        },
-        prevBtnClasses() {
-            return [
-                this.computedClass('prevBtnClass', 'o-dpck__header__previous')
-            ]
-        },
-        nextBtnClasses() {
-            return [
-                this.computedClass('nextBtnClass', 'o-dpck__header__next')
-            ]
-        },
-        listsClasses() {
-            return [
-                this.computedClass('listsClass', 'o-dpck__header__list')
-            ]
-        },
-        footerClasses() {
-            return [
-                this.computedClass('footerClass', 'o-dpck__footer')
-            ]
-        },
-
-        computedValue: {
-            get() {
-                return this.dateSelected
-            },
-            set(value) {
-                this.updateInternalState(value)
-                if (!this.multiple) this.togglePicker(false)
-                this.$emit('input', value)
-                if (this.useHtml5Validation) {
-                    this.$nextTick(() => {
-                        this.checkHtml5Validity()
-                    })
-                }
-            }
-        },
-        formattedValue() {
-            return this.formatValue(this.computedValue)
-        },
-        localeOptions() {
-            return new Intl.DateTimeFormat(this.locale, {
-                year: 'numeric',
-                month: 'numeric'
-            }).resolvedOptions()
-        },
-        dtf() {
-            return new Intl.DateTimeFormat(this.locale/*, { timeZone: 'UTC' } */)
-        },
-        dtfMonth() {
-            return new Intl.DateTimeFormat(this.locale, {
-                year: this.localeOptions.year || 'numeric',
-                month: this.localeOptions.month || '2-digit',
-                // timeZone: 'UTC'
-            })
-        },
-        newMonthNames() {
-            if (Array.isArray(this.monthNames)) {
-                return this.monthNames
-            }
-            return getMonthNames(this.locale)
-        },
-        newDayNames() {
-            if (Array.isArray(this.dayNames)) {
-                return this.dayNames
-            }
-            return getWeekdayNames(this.locale)
-        },
-        listOfMonths() {
-            let minMonth = 0
-            let maxMonth = 12
-            if (this.minDate && this.focusedDateData.year === this.minDate.getFullYear()) {
-                minMonth = this.minDate.getMonth()
-            }
-            if (this.maxDate && this.focusedDateData.year === this.maxDate.getFullYear()) {
-                maxMonth = this.maxDate.getMonth()
-            }
-            return this.newMonthNames.map((name, index) => {
-                return {
-                    name: name,
-                    index: index,
-                    disabled: index < minMonth || index > maxMonth
-                }
-            })
-        },
-        /*
-         * Returns an array of years for the year dropdown. If earliest/latest
-         * dates are set by props, range of years will fall within those dates.
-         */
-        listOfYears() {
-            let latestYear = this.focusedDateData.year + this.yearsRange[1]
-            if (this.maxDate && this.maxDate.getFullYear() < latestYear) {
-                latestYear = Math.max(this.maxDate.getFullYear(), this.focusedDateData.year)
-            }
-
-            let earliestYear = this.focusedDateData.year + this.yearsRange[0]
-            if (this.minDate && this.minDate.getFullYear() > earliestYear) {
-                earliestYear = Math.min(this.minDate.getFullYear(), this.focusedDateData.year)
-            }
-
-            const arrayOfYears = []
-            for (let i = earliestYear; i <= latestYear; i++) {
-                arrayOfYears.push(i)
-            }
-
-            return arrayOfYears.reverse()
-        },
-
-        showPrev() {
-            if (!this.minDate) return false
-            if (this.isTypeMonth) {
-                return this.focusedDateData.year <= this.minDate.getFullYear()
-            }
-            const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month)
-            const date = new Date(this.minDate.getFullYear(), this.minDate.getMonth())
-            return (dateToCheck <= date)
-        },
-
-        showNext() {
-            if (!this.maxDate) return false
-            if (this.isTypeMonth) {
-                return this.focusedDateData.year >= this.maxDate.getFullYear()
-            }
-            const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month)
-            const date = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth())
-            return (dateToCheck >= date)
-        },
-
-        isMobile() {
-            return this.mobileNative && isMobile.any()
-        },
-
-        isTypeMonth() {
-            return this.type === 'month'
-        },
-
-        ariaRole() {
-            return !this.inline ? 'dialog' : undefined
-        },
-
-        $elementRef() {
-            return 'input'
-        }
-    },
-    watch: {
-        /**
-         * When v-model is changed:
-         *   1. Update internal value.
-         *   2. If it's invalid, validate again.
-         */
-        value(value) {
-            this.updateInternalState(value)
-            if (!this.multiple) this.togglePicker(false)
-        },
-
-        focusedDate(value) {
-            if (value) {
-                this.focusedDateData = {
-                    day: value.getDate(),
-                    month: value.getMonth(),
-                    year: value.getFullYear()
-                }
-            }
-        },
-
-        /*
-         * Emit input event on month and/or year change
-         */
-        'focusedDateData.month'(value) {
-            this.$emit('change-month', value)
-        },
-        'focusedDateData.year'(value) {
-            this.$emit('change-year', value)
-        }
-    },
-    methods: {
-        /*
-         * Parse string into date
-         */
-        onChange(value) {
-            const date = this.dateParser(value, this)
-            if (date && (!isNaN(date) ||
-                (Array.isArray(date) && date.length === 2 && !isNaN(date[0]) && !isNaN(date[1])))) {
-                this.computedValue = date
-            } else {
-                // Force refresh input value when not valid date
-                this.computedValue = null
-                if (this.$refs.input) {
-                    this.$refs.input.newValue = this.computedValue
-                }
-            }
-        },
-
-        /*
-         * Format date into string
-         */
-        formatValue(value) {
-            if (Array.isArray(value)) {
-                const isArrayWithValidDates = Array.isArray(value) && value.every((v) => !isNaN(v))
-                return isArrayWithValidDates ? this.dateFormatter([...value], this) : null
-            }
-            return (value && !isNaN(value)) ? this.dateFormatter(value, this) : null
-        },
-
-        /*
-         * Either decrement month by 1 if not January or decrement year by 1
-         * and set month to 11 (December) or decrement year when 'month'
-         */
-        prev() {
-            if (this.disabled) return
-
-            if (this.isTypeMonth) {
-                this.focusedDateData.year -= 1
-            } else {
-                if (this.focusedDateData.month > 0) {
-                    this.focusedDateData.month -= 1
-                } else {
-                    this.focusedDateData.month = 11
-                    this.focusedDateData.year -= 1
-                }
-            }
-        },
-
-        /*
-         * Either increment month by 1 if not December or increment year by 1
-         * and set month to 0 (January) or increment year when 'month'
-         */
-        next() {
-            if (this.disabled) return
-
-            if (this.isTypeMonth) {
-                this.focusedDateData.year += 1
-            } else {
-                if (this.focusedDateData.month < 11) {
-                    this.focusedDateData.month += 1
-                } else {
-                    this.focusedDateData.month = 0
-                    this.focusedDateData.year += 1
-                }
-            }
-        },
-
-        formatNative(value) {
-            return this.isTypeMonth
-                ? this.formatYYYYMM(value) : this.formatYYYYMMDD(value)
-        },
-
-        /*
-         * Format date into string 'YYYY-MM-DD'
-         */
-        formatYYYYMMDD(value) {
-            const date = new Date(value)
-            if (value && !isNaN(date.getTime())) {
-                const year = date.getFullYear()
-                const month = date.getMonth() + 1
-                const day = date.getDate()
-                return year + '-' +
-                    ((month < 10 ? '0' : '') + month) + '-' +
-                    ((day < 10 ? '0' : '') + day)
-            }
-            return ''
-        },
-
-        /*
-         * Format date into string 'YYYY-MM'
-         */
-        formatYYYYMM(value) {
-            const date = new Date(value)
-            if (value && !isNaN(date.getTime())) {
-                const year = date.getFullYear()
-                const month = date.getMonth() + 1
-                return year + '-' +
-                    ((month < 10 ? '0' : '') + month)
-            }
-            return ''
-        },
-
-        /*
-         * Parse date from string
-         */
-        onChangeNativePicker(event) {
-            const date = event.target.value
-            const s = date ? date.split('-') : []
-            if (s.length === 3) {
-                const year = parseInt(s[0], 10)
-                const month = parseInt(s[1]) - 1
-                const day = parseInt(s[2])
-                this.computedValue = new Date(year, month, day)
-            } else {
-                this.computedValue = null
-            }
-        },
-        updateInternalState(value) {
-            if (this.dateSelected === value) return
-            const isArray = Array.isArray(value)
-            const currentDate = isArray
-                ? (!value.length ? this.dateCreator() : value[value.length - 1])
-                : (!value ? this.dateCreator() : value)
-            if (!isArray || (isArray && this.dateSelected && value.length > this.dateSelected.length)) {
-                this.focusedDateData = {
-                    day: currentDate.getDate(),
-                    month: currentDate.getMonth(),
-                    year: currentDate.getFullYear()
-                }
-            }
-            this.dateSelected = value
-        },
-
-        /*
-         * Toggle datepicker
-         */
-        togglePicker(active) {
-            if (this.$refs.dropdown) {
-                const isActive = typeof active === 'boolean'
-                    ? active
-                    : !this.$refs.dropdown.isActive
-                if (isActive) {
-                    this.$refs.dropdown.isActive = isActive
-                } else if (this.closeOnClick) {
-                    this.$refs.dropdown.isActive = isActive
-                }
-            }
-        },
-
-        /*
-         * Call default onFocus method and show datepicker
-         */
-        handleOnFocus(event) {
-            this.onFocus(event)
-            if (this.openOnFocus) {
-                this.togglePicker(true)
-            }
-        },
-
-        /*
-         * Toggle dropdown
-         */
-        toggle() {
-            if (this.mobileNative && this.isMobile) {
-                const input = this.$refs.input.$refs.input
-                input.focus()
-                input.click()
-                return
-            }
-            this.$refs.dropdown.toggle()
-        },
-
-        /*
-         * Avoid dropdown toggle when is already visible
-         */
-        onInputClick(event) {
-            if (this.$refs.dropdown.isActive) {
-                event.stopPropagation()
-            }
-        },
-
-        /**
-         * Keypress event that is bound to the document.
-         */
-        keyPress({ key }) {
-            if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === 'Escape' || key === 'Esc')) {
-                this.togglePicker(false)
-            }
-        },
-
-        /**
-         * Emit 'blur' event on dropdown is not active (closed)
-         */
-        onActiveChange(value) {
-            if (!value) {
-                this.onBlur()
-            }
-            this.$emit('active-change', value)
-        },
-
-        changeFocus(day) {
-            this.focusedDateData = {
-                day: day.getDate(),
-                month: day.getMonth(),
-                year: day.getFullYear()
-            }
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('keyup', this.keyPress)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/datepicker/DatepickerMixin.js b/packages/oruga/src/components/datepicker/DatepickerMixin.js
deleted file mode 100644
index 9608e1bf1..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerMixin.js
+++ /dev/null
@@ -1,46 +0,0 @@
-export default {
-    methods: {
-        manageKeydown(event, weekDay) {
-            // https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent/key/Key_Values#Navigation_keys
-            const { key } = event
-            let preventDefault = true
-            switch (key) {
-                case 'Tab': {
-                    preventDefault = false
-                    break
-                }
-                case ' ':
-                case 'Space':
-                case 'Spacebar':
-                case 'Enter': {
-                    this.emitChosenDate(weekDay)
-                    break
-                }
-
-                case 'ArrowLeft':
-                case 'Left': {
-                    this.changeFocus(weekDay, -1)
-                    break
-                }
-                case 'ArrowRight':
-                case 'Right': {
-                    this.changeFocus(weekDay, 1)
-                    break
-                }
-                case 'ArrowUp':
-                case 'Up': {
-                    this.changeFocus(weekDay, -7)
-                    break
-                }
-                case 'ArrowDown':
-                case 'Down': {
-                    this.changeFocus(weekDay, 7)
-                    break
-                }
-            }
-            if (preventDefault) {
-                event.preventDefault()
-            }
-        }
-    }
-}
diff --git a/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js b/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js
deleted file mode 100644
index b951e5aad..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js
+++ /dev/null
@@ -1,463 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODatepickerMonth from '@components/datepicker/DatepickerMonth'
-
-const newDate = (y, m, d) => {
-    const date = new Date(Date.UTC(y, m, d))
-    date.getDate = jest.fn(() => date.getUTCDate())
-    date.getMonth = jest.fn(() => date.getUTCMonth())
-    date.getFullYear = jest.fn(() => date.getUTCFullYear())
-    return date
-}
-
-const thisMonth = newDate(2020, 4, 15).getUTCMonth()
-let events = [
-    newDate(2018, 10, 10),
-    newDate(2019, thisMonth, 2),
-    newDate(2019, thisMonth, 6),
-    {
-        date: newDate(2019, thisMonth, 6),
-        type: 'is-info'
-    },
-    {
-        date: newDate(2019, thisMonth, 8),
-        type: 'is-danger'
-    },
-    {
-        date: newDate(2019, thisMonth, 10),
-        type: 'is-success'
-    },
-    {
-        date: newDate(2019, thisMonth, 10),
-        type: 'is-link'
-    },
-    newDate(2019, thisMonth, 12),
-    {
-        date: newDate(2019, thisMonth, 12),
-        type: 'is-warning'
-    },
-    {
-        date: newDate(2019, thisMonth, 16),
-        type: 'is-danger'
-    },
-    newDate(2019, thisMonth, 20),
-    {
-        date: newDate(2019, thisMonth, 29),
-        type: 'is-success'
-    },
-    {
-        date: newDate(2019, thisMonth, 29),
-        type: 'is-warning'
-    },
-    {
-        date: newDate(2019, thisMonth, 29),
-        type: 'is-info'
-    }
-]
-
-
-const config = {
-    defaultMonthNames: [
-        'January', 'February', 'March', 'April', 'May', 'June', 'July',
-        'August', 'September', 'October', 'November', 'December'
-    ],
-    focusedDate: newDate(2019, thisMonth, 11)
-}
-describe('ODatepickerMonth', () => {
-    const dateCreator = () => newDate()
-
-    it('is called', () => {
-        const wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator
-            }
-        })
-        expect(wrapper.name()).toBe('ODatepickerMonth')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        const wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator
-            }
-        })
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage events accordingly', () => {
-        const wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator,
-                events
-            }
-        })
-        expect(wrapper.vm.hasEvents).toBeTruthy()
-        expect(wrapper.vm.eventsInThisYear.length).toBe(events.length - 1)
-    })
-
-    it('emit chosen date', () => {
-        const wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator
-            }
-        })
-        wrapper.vm.selectableDate = jest.fn(() => true)
-        wrapper.vm.emitChosenDate(5)
-        expect(wrapper.vm.selectableDate).toHaveBeenCalled()
-        expect(wrapper.emitted()['input']).toBeTruthy()
-    })
-
-    it('emit input when updateSelectedDate is called with range props false', () => {
-        const wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator,
-                range: false
-            }
-        })
-
-        wrapper.vm.selectableDate = jest.fn(() => true)
-        wrapper.vm.updateSelectedDate(5)
-        expect(wrapper.emitted()['input']).toBeTruthy()
-    })
-
-    it('manage selectable dates as expected', () => {
-        const day = newDate(2019, 7, 7)
-
-        let wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator,
-                minDate: newDate(2019, 7, 17)
-            }
-        })
-
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: newDate(2019, 7, 1)
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: [newDate(2019, 5, 1), newDate(2019, 5, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-        wrapper.setProps({
-            selectableDates: [
-                newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 1),
-                newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 2),
-                day
-            ]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-
-        wrapper.setProps({
-            selectableDates: (d) => d.getMonth() === 7
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-        expect(wrapper.vm.selectableDate(new Date(2019, 6, 7))).toBeFalsy()
-        expect(wrapper.vm.selectableDate(new Date(2019, 8, 7))).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: [newDate(2019, 5, 1), newDate(2019, 5, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-        wrapper.setProps({
-            unselectableDates: [day]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            unselectableDates: (d) => d.getMonth() === 7
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-        expect(wrapper.vm.selectableDate(new Date(2019, 6, 7))).toBeTruthy()
-        expect(wrapper.vm.selectableDate(new Date(2019, 8, 7))).toBeTruthy()
-
-        wrapper.setProps({
-            selectableDates: (d) => d.getMonth() === 7,
-            unselectableDates: () => true
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: null,
-            unselectableDaysOfWeek: [0, 1]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-    })
-
-    it('emit focused date', () => {
-        const [y, m, d] = [2019, 4, 4]
-        const day = newDate(y, m, d)
-
-        let inc = 1
-        let expected = day
-        expected.setMonth(day.getMonth() + inc)
-        let wrapper = shallowMount(ODatepickerMonth, {
-            propsData: {
-                monthNames: config.defaultMonthNames,
-                focused: {
-                    month: config.focusedDate.getMonth(),
-                    year: config.focusedDate.getFullYear()
-                },
-                dateCreator
-            }
-        })
-        wrapper.vm.changeFocus(day, inc)
-        let valueEmitted = wrapper.emitted()['change-focus'][0]
-        expect(valueEmitted).toContainEqual(expected)
-
-        inc = -1
-        expected = day
-        expected.setMonth(day.getMonth() + inc)
-        wrapper.vm.changeFocus(day, inc)
-        valueEmitted = wrapper.emitted()['change-focus'][0]
-        expect(valueEmitted).toContainEqual(expected)
-
-        inc = 3
-        expected = day
-        expected.setMonth(day.getMonth() + inc)
-        wrapper.vm.changeFocus(day, inc)
-        valueEmitted = wrapper.emitted()['change-focus'][0]
-        expect(valueEmitted).toContainEqual(expected)
-
-        inc = -3
-        expected = day
-        expected.setMonth(day.getMonth() + inc)
-        wrapper.vm.changeFocus(day, inc)
-        valueEmitted = wrapper.emitted()['change-focus'][0]
-        expect(valueEmitted).toContainEqual(expected)
-    })
-
-    describe('Multiple dates', () => {
-        it('should manage multiple dates update as expected', () => {
-            let wrapper = shallowMount(ODatepickerMonth, {
-                propsData: {
-                    monthNames: config.defaultMonthNames,
-                    focused: {
-                        month: config.focusedDate.getMonth(),
-                        year: config.focusedDate.getFullYear()
-                    },
-                    dateCreator,
-                    multiple: true
-                }
-            })
-            let date1 = newDate(2020, 3, 10)
-            let date2 = newDate(2020, 3, 15)
-            let date3 = newDate(2020, 3, 20)
-
-            wrapper.vm.emitChosenDate(date1)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date1)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1])
-
-            wrapper.vm.emitChosenDate(date2)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date2)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2])
-
-            wrapper.vm.emitChosenDate(date3)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date3)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2, date3])
-
-            wrapper.vm.emitChosenDate(date1)
-            expect(wrapper.vm.multipleSelectedDates).toEqual([date2, date3])
-        })
-    })
-
-    describe('ClassObject with range props', () => {
-        it('should have is-selected class for all range of dates selected', () => {
-            const wrapper = shallowMount(ODatepickerMonth, {
-                propsData: {
-                    monthNames: config.defaultMonthNames,
-                    range: true,
-                    focused: {
-                        month: newDate(2020, 1, 1).getMonth(),
-                        year: newDate(2020, 1, 1).getFullYear()
-                    },
-                    value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                    dateCreator
-                }
-            })
-            expect(wrapper.findAll('.o-dpck__month__cell--selected').length).toBe(5)
-        })
-
-        it('should have is-first-selected class for the first date selected within the range', () => {
-            const wrapper = shallowMount(ODatepickerMonth, {
-                propsData: {
-                    monthNames: config.defaultMonthNames,
-                    range: true,
-                    focused: {
-                        month: newDate(2020, 1, 1).getMonth(),
-                        year: newDate(2020, 1, 1).getFullYear()
-                    },
-                    value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                    dateCreator
-                }
-            })
-            expect(wrapper.findAll('.o-dpck__month__cell--selected').at(0).classes()).toContain('o-dpck__month__cell--first-selected')
-        })
-
-        /* WARNING: this test fails, TO BE FIXED
-        it('should have is-within-selected class for the dates selected within the range', () => {
-            const wrapper = shallowMount(ODatepickerMonth, {
-                propsData: {
-                    monthNames: config.defaultMonthNames,
-                    range: true,
-                    focused: {
-                        month: newDate(2020, 1, 1).getMonth(),
-                        year: newDate(2020, 1, 1).getFullYear()
-                    },
-                    value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                    dateCreator
-                }
-            })
-            expect(wrapper.findAll('o-dpck__month__cell--within-selected').length).toBe(3)
-        })*/
-
-        it('should have is-last-selected class for the last date selected within the range', () => {
-            const wrapper = shallowMount(ODatepickerMonth, {
-                propsData: {
-                    monthNames: config.defaultMonthNames,
-                    range: true,
-                    focused: {
-                        month: newDate(2020, 1, 1).getMonth(),
-                        year: newDate(2020, 1, 1).getFullYear()
-                    },
-                    value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                    dateCreator
-                }
-            })
-            expect(wrapper.findAll('.o-dpck__month__cell--selected').at(4).classes()).toContain('o-dpck__month__cell--last-selected')
-        })
-
-        describe('hoverd class with range props', () => {
-            it('should have is-within-hovered-range class for all range of dates hovered', () => {
-                const wrapper = shallowMount(ODatepickerMonth, {
-                    propsData: {
-                        monthNames: config.defaultMonthNames,
-                        range: true,
-                        focused: {
-                            month: newDate(2020, 1, 1).getMonth(),
-                            year: newDate(2020, 1, 1).getFullYear()
-                        },
-                        value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                        dateCreator
-                    },
-                    data() {
-                        return {
-                            selectedBeginDate: newDate(2020, 3, 1),
-                            hoveredEndDate: newDate(2020, 6, 1)
-                        }
-                    }
-                })
-                expect(wrapper.findAll('.o-dpck__month__cell--within-hovered-range').length).toBe(4)
-            })
-
-            it('should have is-first-hovered class for the first date hovered within the range', () => {
-                const wrapper = shallowMount(ODatepickerMonth, {
-                    propsData: {
-                        monthNames: config.defaultMonthNames,
-                        range: true,
-                        focused: {
-                            month: newDate(2020, 1, 1).getMonth(),
-                            year: newDate(2020, 1, 1).getFullYear()
-                        },
-                        value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                        dateCreator
-                    },
-                    data() {
-                        return {
-                            selectedBeginDate: newDate(2020, 3, 1),
-                            hoveredEndDate: newDate(2020, 6, 1)
-                        }
-                    }
-                })
-                expect(wrapper.findAll('.o-dpck__month__cell--first-hovered').at(0).classes()).toContain('o-dpck__month__cell--first-hovered')
-            })
-
-            /* WARNING: this test fails, TO BE FIXED
-            it('should have is-within-hovered class for the dates hovered within the range', () => {
-                const wrapper = shallowMount(ODatepickerMonth, {
-                    propsData: {
-                        monthNames: config.defaultMonthNames,
-                        range: true,
-                        focused: {
-                            month: newDate(2020, 1, 1).getMonth(),
-                            year: newDate(2020, 1, 1).getFullYear()
-                        },
-                        value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                        dateCreator
-                    },
-                    data() {
-                        return {
-                            selectedBeginDate: newDate(2020, 3, 1),
-                            hoveredEndDate: newDate(2020, 6, 1)
-                        }
-                    }
-                })
-                expect(wrapper.findAll('.o-dpck__month__cell--within-hovered').length).toBe(2)
-            })*/
-
-            it('should have is-last-hovered class for the last date hovered within the range', () => {
-                const wrapper = shallowMount(ODatepickerMonth, {
-                    propsData: {
-                        monthNames: config.defaultMonthNames,
-                        range: true,
-                        focused: {
-                            month: newDate(2020, 1, 1).getMonth(),
-                            year: newDate(2020, 1, 1).getFullYear()
-                        },
-                        value: [newDate(2020, 1, 1), newDate(2020, 5, 1)],
-                        dateCreator
-                    },
-                    data() {
-                        return {
-                            selectedBeginDate: newDate(2020, 3, 1),
-                            hoveredEndDate: newDate(2020, 6, 1)
-                        }
-                    }
-                })
-                expect(wrapper.findAll('.o-dpck__month__cell--within-hovered-range').at(3).classes()).toContain('o-dpck__month__cell--last-hovered')
-            })
-        })
-    })
-
-})
diff --git a/packages/oruga/src/components/datepicker/DatepickerMonth.vue b/packages/oruga/src/components/datepicker/DatepickerMonth.vue
deleted file mode 100644
index 9226489f0..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerMonth.vue
+++ /dev/null
@@ -1,440 +0,0 @@
-<template>
-    <section :class="monthClasses">
-        <div :class="monthBodyClasses">
-            <div :class="monthTableClasses">
-            <template v-for="(date, index) in monthDates">
-                <a
-                    :ref="`month-${date.getMonth()}`"
-                    v-if="selectableDate(date) && !disabled"
-                    :key="index"
-                    :class="cellClasses(date)"
-                    role="button"
-                    href="#"
-                    :disabled="disabled"
-                    @click.prevent="updateSelectedDate(date)"
-                    @mouseenter="setRangeHoverEndDate(date)"
-                    @keydown.prevent="manageKeydown($event, date)"
-                    :tabindex="focused.month === date.getMonth() ? null : -1">
-                    {{ monthNames[date.getMonth()] }}
-                    <div class="events" v-if="eventsDateMatch(date)">
-                        <div
-                            class="event"
-                            :class="event.type"
-                            v-for="(event, index) in eventsDateMatch(date)"
-                            :key="index"/>
-                    </div>
-                </a>
-                <div
-                    v-else
-                    :key="index"
-                    :class="cellClasses(date)">
-                    {{ monthNames[date.getMonth()] }}
-                </div>
-            </template>
-            </div>
-        </div>
-    </section>
-</template>
-
-<script>
-import { isDefined } from '../../utils/helpers'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import DatepickerMixin from './DatepickerMixin'
-
-export default {
-    name: 'ODatepickerMonth',
-    mixins: [BaseComponentMixin, DatepickerMixin],
-    configField: 'datepicker',
-    props: {
-        value: {
-            type: [Date, Array]
-        },
-        monthNames: Array,
-        events: Array,
-        indicators: String,
-        minDate: Date,
-        maxDate: Date,
-        focused: Object,
-        disabled: Boolean,
-        dateCreator: Function,
-        unselectableDates: [Array, Function],
-        unselectableDaysOfWeek: Array,
-        selectableDates: [Array, Function],
-        range: Boolean,
-        multiple: Boolean,
-        monthClass: [String, Function, Array],
-        monthBodyClass: [String, Function, Array],
-        monthTableClass: [String, Function, Array],
-        monthCellClass: [String, Function, Array],
-        monthCellSelectedClass: [String, Function, Array],
-        monthCellFirstSelectedClass: [String, Function, Array],
-        monthCellWithinSelectedClass: [String, Function, Array],
-        monthCellLastSelectedClass: [String, Function, Array],
-        monthCellWithinHoveredRangeClass: [String, Function, Array],
-        monthCellFirstHoveredClass: [String, Function, Array],
-        monthCellWithinHoveredClass: [String, Function, Array],
-        monthCellLastHoveredClass: [String, Function, Array],
-        monthCellTodayClass: [String, Function, Array],
-        monthCellSelectableClass: [String, Function, Array],
-        monthCellUnselectableClass: [String, Function, Array],
-        monthCellEventsClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            selectedBeginDate: undefined,
-            selectedEndDate: undefined,
-            hoveredEndDate: undefined,
-            multipleSelectedDates: this.multiple && this.value ? this.value : []
-        }
-    },
-    computed: {
-        monthClasses() {
-            return [
-                this.computedClass('monthClass', 'o-dpck__month')
-            ]
-        },
-        monthBodyClasses() {
-            return [
-                this.computedClass('monthBodyClass', 'o-dpck__month__body')
-            ]
-        },
-        monthTableClasses() {
-            return [
-                this.computedClass('monthTableClass', 'o-dpck__month__table')
-            ]
-        },
-        monthCellClasses() {
-            return [
-                this.computedClass('monthCellClass', 'o-dpck__month__cell')
-            ]
-        },
-        hasEvents() {
-            return this.events && this.events.length
-        },
-
-        /*
-        * Return array of all events in the specified month
-        */
-        eventsInThisYear() {
-            if (!this.events) return []
-
-            const yearEvents = []
-
-            for (let i = 0; i < this.events.length; i++) {
-                let event = this.events[i]
-
-                if (!Object.prototype.hasOwnProperty.call(event, 'date')) {
-                    event = { date: event }
-                }
-                if (!Object.prototype.hasOwnProperty.call(event, 'type')) {
-                    event.type = 'is-primary'
-                }
-                if (
-                    event.date.getFullYear() === this.focused.year
-                ) {
-                    yearEvents.push(event)
-                }
-            }
-
-            return yearEvents
-        },
-        monthDates() {
-            const year = this.focused.year
-            const months = []
-            for (let i = 0; i < 12; i++) {
-                const d = new Date(year, i, 1)
-                d.setHours(0, 0, 0, 0)
-                months.push(d)
-            }
-            return months
-        },
-
-        focusedMonth() {
-            return this.focused.month
-        },
-
-        hoveredDateRange() {
-            if (!this.range) {
-                return []
-            }
-            if (!isNaN(this.selectedEndDate)) {
-                return []
-            }
-            if (this.hoveredEndDate < this.selectedBeginDate) {
-                return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined)
-            }
-            return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined)
-        }
-    },
-    watch: {
-        focusedMonth(month) {
-            const refName = `month-${month}`
-            if (this.$refs[refName] && this.$refs[refName].length > 0) {
-                this.$nextTick(() => {
-                    if (this.$refs[refName][0]) {
-                        this.$refs[refName][0].focus()
-                    }
-                }) // $nextTick needed when year is changed
-            }
-        }
-    },
-    methods: {
-        selectMultipleDates(date) {
-            const multipleSelect = this.multipleSelectedDates.filter((selectedDate) =>
-                selectedDate.getDate() === date.getDate() &&
-                selectedDate.getFullYear() === date.getFullYear() &&
-                selectedDate.getMonth() === date.getMonth()
-            )
-            if (multipleSelect.length) {
-                this.multipleSelectedDates = this.multipleSelectedDates.filter((selectedDate) =>
-                    selectedDate.getDate() !== date.getDate() ||
-                    selectedDate.getFullYear() !== date.getFullYear() ||
-                    selectedDate.getMonth() !== date.getMonth()
-                )
-            } else {
-                this.multipleSelectedDates.push(date)
-            }
-            this.$emit('input', this.multipleSelectedDates)
-        },
-
-        selectableDate(day) {
-            const validity = []
-
-            if (this.minDate) {
-                validity.push(day >= this.minDate)
-            }
-
-            if (this.maxDate) {
-                validity.push(day <= this.maxDate)
-            }
-
-            validity.push(day.getFullYear() === this.focused.year)
-
-            if (this.selectableDates) {
-                if (typeof this.selectableDates === 'function') {
-                    if (this.selectableDates(day)) {
-                        return true
-                    } else {
-                        validity.push(false)
-                    }
-                } else {
-                    for (let i = 0; i < this.selectableDates.length; i++) {
-                        const enabledDate = this.selectableDates[i]
-                        if (day.getFullYear() === enabledDate.getFullYear() &&
-                            day.getMonth() === enabledDate.getMonth()) {
-                            return true
-                        } else {
-                            validity.push(false)
-                        }
-                    }
-                }
-            }
-
-            if (this.unselectableDates) {
-                if (typeof this.unselectableDates === 'function') {
-                    validity.push(!this.unselectableDates(day))
-                } else {
-                    for (let i = 0; i < this.unselectableDates.length; i++) {
-                        const disabledDate = this.unselectableDates[i]
-                        validity.push(
-                            day.getFullYear() !== disabledDate.getFullYear() ||
-                                day.getMonth() !== disabledDate.getMonth()
-                        )
-                    }
-                }
-            }
-
-            if (this.unselectableDaysOfWeek) {
-                for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
-                    const dayOfWeek = this.unselectableDaysOfWeek[i]
-                    validity.push(day.getDay() !== dayOfWeek)
-                }
-            }
-
-            return validity.indexOf(false) < 0
-        },
-        eventsDateMatch(day) {
-            if (!this.eventsInThisYear.length) return false
-
-            const monthEvents = []
-
-            for (let i = 0; i < this.eventsInThisYear.length; i++) {
-                if (this.eventsInThisYear[i].date.getMonth() === day.getMonth()) {
-                    monthEvents.push(this.events[i])
-                }
-            }
-
-            if (!monthEvents.length) {
-                return false
-            }
-
-            return monthEvents
-        },
-        /*
-        * Build cellClasses for cell using validations
-        */
-        cellClasses(day) {
-            function dateMatch(dateOne, dateTwo, multiple) {
-                // if either date is null or undefined, return false
-                if (!dateOne || !dateTwo || multiple) {
-                    return false
-                }
-                if (Array.isArray(dateTwo)) {
-                    return dateTwo.some((date) => (
-                        dateOne.getFullYear() === date.getFullYear() &&
-                        dateOne.getMonth() === date.getMonth()
-                    ))
-                }
-                return (dateOne.getFullYear() === dateTwo.getFullYear() &&
-                    dateOne.getMonth() === dateTwo.getMonth())
-            }
-            function dateWithin(dateOne, dates, multiple) {
-                if (!Array.isArray(dates) || multiple) { return false }
-
-                return dateOne > dates[0] && dateOne < dates[1]
-            }
-            function dateMultipleSelected(dateOne, dates, multiple) {
-                if (!Array.isArray(dates) || !multiple) { return false }
-                return dates.some((date) => (
-                    dateOne.getDate() === date.getDate() &&
-                    dateOne.getFullYear() === date.getFullYear() &&
-                    dateOne.getMonth() === date.getMonth()
-                ))
-            }
-
-            return [
-                ...this.monthCellClasses,
-                {
-                    [this.computedClass('monthCellSelectedClass', 'o-dpck__month__cell--selected')] :
-                        dateMatch(day, this.value, this.multiple) ||
-                        dateWithin(day, this.value, this.multiple) ||
-                        dateMultipleSelected(day, this.multipleSelectedDates, this.multiple)
-                },
-                {
-                    [this.computedClass('monthCellFirstSelectedClass', 'o-dpck__month__cell--first-selected')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.value) && this.value[0],
-                            this.multiple)
-                },
-                {
-                    [this.computedClass('monthCellWithinSelectedClass', 'o-dpck__month__cell--within-selected')] :
-                        dateWithin(day, this.value, this.multiple)
-                },
-                {
-                    [this.computedClass('monthCellLastSelectedClass', 'o-dpck__month__cell--last-selected')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.value) && this.value[1],
-                            this.multiple)
-                },
-                {
-                    [this.computedClass('monthCellWithinHoveredRangeClass', 'o-dpck__month__cell--within-hovered-range')] :
-                        this.hoveredDateRange && this.hoveredDateRange.length === 2 &&
-                        (dateMatch(day, this.hoveredDateRange) ||
-                        dateWithin(day, this.hoveredDateRange))
-                },
-                {
-                    [this.computedClass('monthCellFirstHoveredClass', 'o-dpck__month__cell--first-hovered')] :
-                       dateMatch(
-                            day,
-                            Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0])
-                },
-                {
-                    [this.computedClass('monthCellWithinHoveredClass', 'o-dpck__month__cell--within-hovered')] :
-                        dateWithin(day, this.hoveredDateRange)
-                },
-                {
-                    [this.computedClass('monthCellLastHoveredClass', 'o-dpck__month__cell--last-hovered')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1])
-                },
-                {
-                    [this.computedClass('monthCellTodayClass', 'o-dpck__month__cell--today')] :
-                        dateMatch(day, this.dateCreator())
-                },
-                {
-                    [this.computedClass('monthCellSelectableclass', 'o-dpck__month__cell--selectable')] :
-                        this.selectableDate(day) && !this.disabled
-                },
-                {
-                    [this.computedClass('monthCellUnselectableClass', 'o-dpck__month__cell--unselectable')] :
-                        !this.selectableDate(day) || this.disabled
-                },
-                {
-                    [this.computedClass('monthCellEventsClass', 'o-dpck__month__cell--events')] :
-                        this.hasEvents
-                },
-            ]
-        },
-
-       /*
-        * Emit input event with selected date as payload for v-model in parent
-        */
-        updateSelectedDate(date) {
-            if (!this.range && !this.multiple) {
-                this.emitChosenDate(date)
-            } else if (this.range) {
-                this.handleSelectRangeDate(date)
-            } else if (this.multiple) {
-                this.selectMultipleDates(date)
-            }
-        },
-
-        /*
-         * Emit select event with chosen date as payload
-         */
-        emitChosenDate(day) {
-            if (this.disabled) return
-
-            if (!this.multiple) {
-                if (this.selectableDate(day)) {
-                    this.$emit('input', day)
-                }
-            } else {
-                this.selectMultipleDates(day)
-            }
-        },
-
-        /*
-        * If both begin and end dates are set, reset the end date and set the begin date.
-        * If only begin date is selected, emit an array of the begin date and the new date.
-        * If not set, only set the begin date.
-        */
-        handleSelectRangeDate(date) {
-            if (this.disabled) return
-            if (this.selectedBeginDate && this.selectedEndDate) {
-                this.selectedBeginDate = date
-                this.selectedEndDate = undefined
-                this.$emit('range-start', date)
-            } else if (this.selectedBeginDate && !this.selectedEndDate) {
-                if (this.selectedBeginDate > date) {
-                    this.selectedEndDate = this.selectedBeginDate
-                    this.selectedBeginDate = date
-                } else {
-                    this.selectedEndDate = date
-                }
-                this.$emit('range-end', date)
-                this.$emit('input', [this.selectedBeginDate, this.selectedEndDate])
-            } else {
-                this.selectedBeginDate = date
-                this.$emit('range-start', date)
-            }
-        },
-
-        setRangeHoverEndDate(day) {
-            if (this.range) {
-                this.hoveredEndDate = day
-            }
-        },
-
-        changeFocus(month, inc) {
-            const nextMonth = month
-            nextMonth.setMonth(month.getMonth() + inc)
-            this.$emit('change-focus', nextMonth)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/datepicker/DatepickerTable.spec.js b/packages/oruga/src/components/datepicker/DatepickerTable.spec.js
deleted file mode 100644
index dd5153d9c..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerTable.spec.js
+++ /dev/null
@@ -1,333 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODatepickerTable from '@components/datepicker/DatepickerTable'
-import { getOptions, setOptions} from '@utils/config'
-
-let defaultProps
-
-const newDate = (y, m, d) => {
-    const date = new Date(Date.UTC(y, m, d))
-    date.getDate = jest.fn(() => date.getUTCDate())
-    date.getMonth = jest.fn(() => date.getUTCMonth())
-    date.getFullYear = jest.fn(() => date.getUTCFullYear())
-    return date
-}
-
-describe('ODatepickerTable', () => {
-
-    const config = getOptions()
-
-    beforeEach(() => {
-        setOptions(Object.assign(config, {
-            defaultFirstDayOfWeek: 0,
-            defaultMonthNames: [
-                'January', 'February', 'March', 'April', 'May', 'June', 'July',
-                'August', 'September', 'October', 'November', 'December'
-            ],
-            defaultDayNames: ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'S'],
-            focusedDate: newDate(2018, 7, 10),
-            defaultUnselectableDaysOfWeek: []
-        }))
-
-        defaultProps = () => ({
-            value: newDate(2018, 6, 21),
-            dayNames: config.defaultDayNames,
-            monthNames: config.defaultMonthNames,
-            focused: {
-                month: config.focusedDate.getMonth(),
-                year: config.focusedDate.getFullYear()
-            },
-            firstDayOfWeek: config.defaultFirstDayOfWeek,
-            unselectableDaysOfWeek: config.defaultUnselectableDaysOfWeek,
-            events: []
-        })
-    })
-
-    it('is called', () => {
-        const wrapper = shallowMount(ODatepickerTable, {
-            stubs: ['b-datepicker-table-row'],
-            propsData: {
-                ...defaultProps()
-            }
-        })
-        expect(wrapper.name()).toBe('ODatepickerTable')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        const wrapper = shallowMount(ODatepickerTable, {
-            stub: ['b-datepicker-table-row'],
-            propsData: {
-                ...defaultProps()
-            },
-            computed: {
-                weeksInThisMonth: jest.fn(() => [])
-            }
-        })
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('assign events to weeks even if the event has a time', () => {
-        const wrapper = shallowMount(ODatepickerTable, {
-            propsData: {
-                dayNames: config.defaultDayNames,
-                monthNames: config.defaultMonthNames,
-                events: [new Date('July 22, 2018 07:22:13'), new Date('July 23, 2018 00:00:00')],
-                focused: {
-                    month: 6,
-                    year: 2018
-                },
-                showWeekNumber: true
-            }
-        })
-        expect(wrapper.vm.eventsInThisWeek(wrapper.vm.weeksInThisMonth[3]).length).toEqual(2)
-    })
-
-    it('manage events as expected', () => {
-        const monthEvent = {
-            date: newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 13),
-            type: 'is-primary'
-        }
-        const events = [
-            newDate(2020, 3, 3),
-            monthEvent
-        ]
-        const wrapper = shallowMount(ODatepickerTable, {
-            propsData: {
-                ...defaultProps(),
-                events
-            }
-        })
-        expect(wrapper.vm.eventsInThisMonth).toEqual([monthEvent])
-    })
-
-    it('emit input event with selected date as payload when updateSelectedDate is called', () => {
-        const wrapper = shallowMount(ODatepickerTable, {
-            propsData: {
-                ...defaultProps()
-            }
-        })
-        const newDate = new Date()
-        wrapper.vm.updateSelectedDate(newDate)
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(newDate)
-    })
-
-    it('manage selectable dates as expected', () => {
-        const day = newDate(2019, 7, 7)
-        const wrapper = shallowMount(ODatepickerTable, {
-            propsData: {
-                ...defaultProps()
-            }
-        })
-
-        wrapper.setProps({
-            minDate: newDate(2019, 7, 17)
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: newDate(2019, 7, 1)
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-        wrapper.setProps({
-            selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2), day]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-        wrapper.setProps({
-            unselectableDates: [day]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: null,
-            unselectableDaysOfWeek: [0, 1]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-    })
-
-    it('emit focused date', () => {
-        const wrapper = shallowMount(ODatepickerTable, {
-            propsData: {
-                ...defaultProps()
-            }
-        })
-
-        const [y, m, d] = [2019, 4, 4]
-        const day = newDate(y, m, d)
-        const expected = {
-            day: day.getDate(),
-            month: day.getMonth(),
-            year: day.getFullYear()
-        }
-
-        wrapper.vm.changeFocus(day)
-        let valueEmitted = wrapper.emitted()['update:focused'][0]
-        expect(valueEmitted).toContainEqual(expected)
-    })
-
-    describe('#hoveredDateRange', () => {
-        const selectedBeginDate = new Date(2019, 3, 10)
-        const threeDaysAfterBeginDate = new Date(2019, 3, 13)
-        const threeDaysBeforeBeginDate = new Date(2019, 3, 7)
-
-        it('should return an empty array when props range is false', () => {
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: false
-                }
-            })
-            expect(wrapper.vm.hoveredDateRange).toEqual([])
-        })
-
-        it('should return an empty array when selectedEndDate exists', () => {
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: true
-                }
-            })
-            wrapper.setData({
-                selectedBeginDate,
-                selectedEndDate: threeDaysAfterBeginDate
-            })
-            expect(wrapper.vm.hoveredDateRange).toEqual([])
-        })
-
-        it('should return an array of two dates', () => {
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: true
-                }
-            })
-            wrapper.setData({
-                selectedBeginDate,
-                hoveredEndDate: threeDaysAfterBeginDate
-            })
-            expect(wrapper.vm.hoveredDateRange).toEqual([
-                selectedBeginDate,
-                threeDaysAfterBeginDate
-            ])
-        })
-
-        it('should return the earlier date as the first element', () => {
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: true
-                }
-            })
-            wrapper.setData({
-                selectedBeginDate,
-                hoveredEndDate: threeDaysBeforeBeginDate
-            })
-            expect(wrapper.vm.hoveredDateRange).toEqual([
-                threeDaysBeforeBeginDate,
-                selectedBeginDate
-            ])
-        })
-
-        it('should filter only defined values', () => {
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: true
-                }
-            })
-            wrapper.setData({
-                selectedBeginDate,
-                hoveredEndDate: undefined
-            })
-            expect(wrapper.vm.hoveredDateRange).toEqual([
-                selectedBeginDate
-            ])
-        })
-
-        it('should mange date range update as expected', () => {
-            let begin = newDate(2020, 3, 10)
-            let end = newDate(2020, 3, 15)
-            const wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    range: true
-                }
-            })
-
-            wrapper.vm.updateSelectedDate(begin)
-            expect(wrapper.vm.selectedBeginDate).toBe(begin)
-            expect(wrapper.emitted()['range-start'][0]).toContainEqual(begin)
-
-            wrapper.vm.updateSelectedDate(end)
-            expect(wrapper.vm.selectedEndDate).toBe(end)
-            expect(wrapper.emitted()['range-end'][0]).toContainEqual(end)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([begin, end])
-
-            end = begin
-            begin = newDate(2020, 3, 5)
-            wrapper.vm.selectedEndDate = undefined
-            wrapper.vm.updateSelectedDate(begin)
-            expect(wrapper.vm.selectedEndDate).toBe(end)
-            expect(wrapper.vm.selectedBeginDate).toBe(begin)
-
-            wrapper.vm.updateSelectedDate(begin)
-            expect(wrapper.vm.selectedEndDate).toBe(undefined)
-            expect(wrapper.vm.selectedBeginDate).toBe(begin)
-        })
-    })
-
-    /*
-    describe('Multiple dates', () => {
-        let wrapper
-        beforeEach(() => {
-            wrapper = shallowMount(ODatepickerTable, {
-                propsData: {
-                    ...defaultProps(),
-                    multiple: true,
-                    value: []
-                }
-            })
-        })
-
-        it('should manage multiple dates update as expected', () => {
-            let date1 = newDate(2020, 3, 10)
-            let date2 = newDate(2020, 3, 15)
-            let date3 = newDate(2020, 3, 20)
-
-            wrapper.vm.updateSelectedDate(date1)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date1)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1])
-
-            wrapper.vm.updateSelectedDate(date2)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date2)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2])
-
-            wrapper.vm.updateSelectedDate(date3)
-            expect(wrapper.vm.multipleSelectedDates).toContainEqual(date3)
-            expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2, date3])
-
-            wrapper.vm.updateSelectedDate(date1)
-            expect(wrapper.vm.multipleSelectedDates).toEqual([date2, date3])
-        })
-    })
-    */
-})
diff --git a/packages/oruga/src/components/datepicker/DatepickerTable.vue b/packages/oruga/src/components/datepicker/DatepickerTable.vue
deleted file mode 100644
index 184481f76..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerTable.vue
+++ /dev/null
@@ -1,422 +0,0 @@
-<template>
-    <section :class="tableClasses">
-        <header :class="tableHeadClasses">
-            <div
-                v-for="(day, index) in visibleDayNames"
-                :key="index"
-                :class="tableHeadCellClasses">
-                <span>{{ day }}</span>
-            </div>
-        </header>
-        <div :class="tableBodyClasses">
-            <o-datepicker-table-row
-                v-for="(week, index) in weeksInThisMonth"
-                :key="index"
-                :selected-date="value"
-                :day="focused.day"
-                :week="week"
-                :month="focused.month"
-                :min-date="minDate"
-                :max-date="maxDate"
-                :disabled="disabled"
-                :unselectable-dates="unselectableDates"
-                :unselectable-days-of-week="unselectableDaysOfWeek"
-                :selectable-dates="selectableDates"
-                :events="eventsInThisWeek(week)"
-                :indicators="indicators"
-                :date-creator="dateCreator"
-                :nearby-month-days="nearbyMonthDays"
-                :nearby-selectable-month-days="nearbySelectableMonthDays"
-                :show-week-number="showWeekNumber"
-                :week-number-clickable="weekNumberClickable"
-                :first-day-of-week="firstDayOfWeek"
-                :rules-for-first-week="rulesForFirstWeek"
-                :range="range"
-                :hovered-date-range="hoveredDateRange"
-                :multiple="multiple"
-                :table-row-class="tableRowClass"
-                :table-cell-class="tableCellClass"
-                :table-cell-selected-class="tableCellSelectedClass"
-                :table-cell-first-selected-class="tableCellFirstSelectedClass"
-                :table-cell-invisible-class="tableCellInvisibleClass"
-                :table-cell-within-selected-class="tableCellWithinSelectedClass"
-                :table-cell-last-selected-class="tableCellLastSelectedClass"
-                :table-cell-first-hovered-class="tableCellFirstHoveredClass"
-                :table-cell-within-hovered-class="tableCellWithinHoveredClass"
-                :table-cell-last-hovered-class="tableCellLastHoveredClass"
-                :table-cell-today-class="tableCellTodayClass"
-                :table-cell-selectable-class="tableCellSelectableClass"
-                :table-cell-unselectable-class="tableCellUnselectableClass"
-                :table-cell-nearby-class="tableCellNearbyClass"
-                :table-cell-events-class="tableCellEventsClass"
-                :table-events-class="tableEventsClass"
-                :table-event-variant-class="tableEventVariantClass"
-                :table-event-class="tableEventClass"
-                :table-event-indicators-class="tableEventIndicatorsClass"
-                @select="updateSelectedDate"
-                @rangeHoverEndDate="setRangeHoverEndDate"
-                @change-focus="changeFocus"/>
-        </div>
-    </section>
-</template>
-
-<script>
-import DatepickerTableRow from './DatepickerTableRow'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-export default {
-    name: 'ODatepickerTable',
-    mixins: [BaseComponentMixin],
-    configField: 'datepicker',
-    components: {
-        [DatepickerTableRow.name]: DatepickerTableRow
-    },
-    props: {
-        value: {
-            type: [Date, Array]
-        },
-        dayNames: Array,
-        monthNames: Array,
-        firstDayOfWeek: Number,
-        events: Array,
-        indicators: String,
-        minDate: Date,
-        maxDate: Date,
-        focused: Object,
-        disabled: Boolean,
-        dateCreator: Function,
-        unselectableDates: Array,
-        unselectableDaysOfWeek: Array,
-        selectableDates: Array,
-        nearbyMonthDays: Boolean,
-        nearbySelectableMonthDays: Boolean,
-        showWeekNumber: Boolean,
-        weekNumberClickable: Boolean,
-        rulesForFirstWeek: Number,
-        range: Boolean,
-        multiple: Boolean,
-        tableClass: [String, Function, Array],
-        tableHeadClass: [String, Function, Array],
-        tableHeadCellClass: [String, Function, Array],
-        tableBodyClass: [String, Function, Array],
-        tableRowClass: [String, Function, Array],
-        tableCellClass: [String, Function, Array],
-        tableCellSelectedClass: [String, Function, Array],
-        tableCellFirstSelectedClass: [String, Function, Array],
-        tableCellInvisibleClass: [String, Function, Array],
-        tableCellWithinSelectedClass: [String, Function, Array],
-        tableCellLastSelectedClass: [String, Function, Array],
-        tableCellFirstHoveredClass: [String, Function, Array],
-        tableCellWithinHoveredClass: [String, Function, Array],
-        tableCellLastHoveredClass: [String, Function, Array],
-        tableCellTodayClass: [String, Function, Array],
-        tableCellSelectableClass: [String, Function, Array],
-        tableCellUnselectableClass: [String, Function, Array],
-        tableCellNearbyClass: [String, Function, Array],
-        tableCellEventsClass: [String, Function, Array],
-        tableEventClass: [String, Function, Array],
-        tableEventIndicatorsClass: [String, Function, Array],
-        tableEventsClass: [String, Function, Array],
-        tableEventVariantClass: [String, Function, Array],
-    },
-    data() {
-        return {
-            selectedBeginDate: undefined,
-            selectedEndDate: undefined,
-            hoveredEndDate: undefined
-        }
-    },
-    computed: {
-        tableClasses() {
-            return [
-                this.computedClass('tableClass', 'o-dpck__table')
-            ]
-        },
-        tableHeadClasses() {
-            return [
-                this.computedClass('tableHeadClass', 'o-dpck__table__head')
-            ]
-        },
-        tableHeadCellClasses() {
-            return [
-                this.computedClass('tableHeadCellClass', 'o-dpck__table__head-cell'),
-                ...this.tableCellClasses
-            ]
-        },
-        tableBodyClasses() {
-            return [
-                this.computedClass('tableBodyClass', 'o-dpck__table__body')
-            ]
-        },
-        tableCellClasses() {
-            return [
-                this.computedClass('tableCellClass', 'o-dpck__table__cell'),
-            ]
-        },
-        visibleDayNames() {
-            const visibleDayNames = []
-            let index = this.firstDayOfWeek
-            while (visibleDayNames.length < this.dayNames.length) {
-                const currentDayName = this.dayNames[(index % this.dayNames.length)]
-                visibleDayNames.push(currentDayName)
-                index++
-            }
-            if (this.showWeekNumber) visibleDayNames.unshift('')
-            return visibleDayNames
-        },
-
-        /*
-        * Return array of all events in the specified month
-        */
-        eventsInThisMonth() {
-            if (!this.events) return []
-
-            const monthEvents = []
-
-            for (let i = 0; i < this.events.length; i++) {
-                let event = this.events[i]
-
-                if (!Object.prototype.hasOwnProperty.call(event, 'date')) {
-                    event = { date: event }
-                }
-                if (
-                    event.date.getMonth() === this.focused.month &&
-                    event.date.getFullYear() === this.focused.year
-                ) {
-                    monthEvents.push(event)
-                }
-            }
-
-            return monthEvents
-        },
-        /*
-        * Return array of all weeks in the specified month
-        */
-        weeksInThisMonth() {
-            this.validateFocusedDay()
-            const month = this.focused.month
-            const year = this.focused.year
-            const weeksInThisMonth = []
-
-            let startingDay = 1
-
-            while (weeksInThisMonth.length < 6) {
-                const newWeek = this.weekBuilder(startingDay, month, year)
-                weeksInThisMonth.push(newWeek)
-                startingDay += 7
-            }
-
-            return weeksInThisMonth
-        },
-        hoveredDateRange() {
-            if (!this.range) {
-                return []
-            }
-            if (!isNaN(this.selectedEndDate)) {
-                return []
-            }
-            if (this.hoveredEndDate < this.selectedBeginDate) {
-                return [this.hoveredEndDate, this.selectedBeginDate].filter(d => d !== undefined)
-            }
-            return [this.selectedBeginDate, this.hoveredEndDate].filter(d => d !== undefined)
-        }
-    },
-    methods: {
-        /*
-        * Emit input event with selected date as payload for v-model in parent
-        */
-        updateSelectedDate(date) {
-            if (!this.range && !this.multiple) {
-                this.$emit('input', date)
-            } else if (this.range) {
-                this.handleSelectRangeDate(date)
-            } else if (this.multiple) {
-                this.handleSelectMultipleDates(date)
-            }
-        },
-
-        /*
-        * If both begin and end dates are set, reset the end date and set the begin date.
-        * If only begin date is selected, emit an array of the begin date and the new date.
-        * If not set, only set the begin date.
-        */
-        handleSelectRangeDate(date) {
-            if (this.selectedBeginDate && this.selectedEndDate) {
-                this.selectedBeginDate = date
-                this.selectedEndDate = undefined
-                this.$emit('range-start', date)
-            } else if (this.selectedBeginDate && !this.selectedEndDate) {
-                if (this.selectedBeginDate > date) {
-                    this.selectedEndDate = this.selectedBeginDate
-                    this.selectedBeginDate = date
-                } else {
-                    this.selectedEndDate = date
-                }
-                this.$emit('range-end', date)
-                this.$emit('input', [this.selectedBeginDate, this.selectedEndDate])
-            } else {
-                this.selectedBeginDate = date
-                this.$emit('range-start', date)
-            }
-        },
-
-        /*
-        * If selected date already exists list of selected dates, remove it from the list
-        * Otherwise, add date to list of selected dates
-        */
-        handleSelectMultipleDates(date) {
-            let multipleSelectedDates = this.value
-            const multipleSelect = multipleSelectedDates.filter((selectedDate) =>
-                selectedDate.getDate() === date.getDate() &&
-                selectedDate.getFullYear() === date.getFullYear() &&
-                selectedDate.getMonth() === date.getMonth()
-            )
-            if (multipleSelect.length) {
-                multipleSelectedDates = multipleSelectedDates.filter((selectedDate) =>
-                    selectedDate.getDate() !== date.getDate() ||
-                    selectedDate.getFullYear() !== date.getFullYear() ||
-                    selectedDate.getMonth() !== date.getMonth()
-                )
-            } else {
-                multipleSelectedDates = [...multipleSelectedDates, date]
-            }
-            this.$emit('input', multipleSelectedDates)
-        },
-
-        /*
-         * Return array of all days in the week that the startingDate is within
-         */
-        weekBuilder(startingDate, month, year) {
-            const thisMonth = new Date(year, month)
-
-            const thisWeek = []
-
-            const dayOfWeek = new Date(year, month, startingDate).getDay()
-
-            const end = dayOfWeek >= this.firstDayOfWeek
-                ? (dayOfWeek - this.firstDayOfWeek)
-                : ((7 - this.firstDayOfWeek) + dayOfWeek)
-
-            let daysAgo = 1
-            for (let i = 0; i < end; i++) {
-                thisWeek.unshift(new Date(
-                    thisMonth.getFullYear(),
-                    thisMonth.getMonth(),
-                    startingDate - daysAgo)
-                )
-                daysAgo++
-            }
-
-            thisWeek.push(new Date(year, month, startingDate))
-
-            let daysForward = 1
-            while (thisWeek.length < 7) {
-                thisWeek.push(new Date(year, month, startingDate + daysForward))
-                daysForward++
-            }
-
-            return thisWeek
-        },
-
-        validateFocusedDay() {
-            const focusedDate = new Date(this.focused.year, this.focused.month, this.focused.day)
-            if (this.selectableDate(focusedDate)) return
-
-            let day = 0
-            // Number of days in the current month
-            const monthDays = new Date(this.focused.year, this.focused.month + 1, 0).getDate()
-            let firstFocusable = null
-            while (!firstFocusable && ++day < monthDays) {
-                const date = new Date(this.focused.year, this.focused.month, day)
-                if (this.selectableDate(date)) {
-                    firstFocusable = focusedDate
-
-                    const focused = {
-                        day: date.getDate(),
-                        month: date.getMonth(),
-                        year: date.getFullYear()
-                    }
-                    this.$emit('update:focused', focused)
-                }
-            }
-        },
-
-        /*
-         * Check that selected day is within earliest/latest params and
-         * is within this month
-         */
-        selectableDate(day) {
-            const validity = []
-
-            if (this.minDate) {
-                validity.push(day >= this.minDate)
-            }
-
-            if (this.maxDate) {
-                validity.push(day <= this.maxDate)
-            }
-
-            if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
-                validity.push(day.getMonth() === this.focused.month)
-            }
-
-            if (this.selectableDates) {
-                for (let i = 0; i < this.selectableDates.length; i++) {
-                    const enabledDate = this.selectableDates[i]
-                    if (day.getDate() === enabledDate.getDate() &&
-                        day.getFullYear() === enabledDate.getFullYear() &&
-                        day.getMonth() === enabledDate.getMonth()) {
-                        return true
-                    } else {
-                        validity.push(false)
-                    }
-                }
-            }
-
-            if (this.unselectableDates) {
-                for (let i = 0; i < this.unselectableDates.length; i++) {
-                    const disabledDate = this.unselectableDates[i]
-                    validity.push(
-                        day.getDate() !== disabledDate.getDate() ||
-                            day.getFullYear() !== disabledDate.getFullYear() ||
-                            day.getMonth() !== disabledDate.getMonth()
-                    )
-                }
-            }
-
-            if (this.unselectableDaysOfWeek) {
-                for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
-                    const dayOfWeek = this.unselectableDaysOfWeek[i]
-                    validity.push(day.getDay() !== dayOfWeek)
-                }
-            }
-
-            return validity.indexOf(false) < 0
-        },
-
-        eventsInThisWeek(week) {
-            return this.eventsInThisMonth.filter((event) => {
-                const stripped = new Date(Date.parse(event.date))
-                stripped.setHours(0, 0, 0, 0)
-                const timed = stripped.getTime()
-
-                return week.some((weekDate) => weekDate.getTime() === timed)
-            })
-        },
-
-        setRangeHoverEndDate(day) {
-            this.hoveredEndDate = day
-        },
-
-        changeFocus(day) {
-            const focused = {
-                day: day.getDate(),
-                month: day.getMonth(),
-                year: day.getFullYear()
-            }
-            this.$emit('update:focused', focused)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js b/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js
deleted file mode 100644
index aca07c00a..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js
+++ /dev/null
@@ -1,226 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODatepickerTableRow from '@components/datepicker/DatepickerTableRow'
-
-const newDate = (y, m, d) => {
-    const date = new Date(Date.UTC(y, m, d))
-    date.getDate = jest.fn(() => date.getUTCDate())
-    return date
-}
-const propsData = {
-    firstDayOfWeek: 0,
-    week: [
-        newDate(2017, 12, 31),
-        newDate(2018, 1, 1),
-        newDate(2018, 1, 2),
-        newDate(2018, 1, 3),
-        newDate(2018, 1, 4),
-        newDate(2018, 1, 5),
-        newDate(2018, 1, 6)
-    ],
-    month: 12,
-    dateCreator: () => newDate()
-}
-
-let wrapper
-
-describe('ODatepickerTableRow', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(ODatepickerTableRow, { propsData })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ODatepickerTableRow')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    describe('classObject', function () {
-        beforeEach(async() => {
-            wrapper.setProps({
-                selectedDate: [propsData.week[1], propsData.week[5]],
-                nearbySelectableMonthDays: true
-            })
-        })
-
-        it('should have is-selected class for all range of dates selected', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(5)
-        })
-
-        it('should have is-first-selected class for the first date selected within the range', function () {
-            const {wrappers: [firstSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected')
-            expect(firstSelectedCell.classes()).toContain('o-dpck__table__cell--first-selected')
-        })
-
-        it('should have is-within-selected class for the dates selected within the range', function () {
-            const withinSelectedRangeCells = wrapper.findAll('.o-dpck__table__cell--selected.o-dpck__table__cell--within-selected')
-            expect(withinSelectedRangeCells.length).toBe(3)
-        })
-
-        it('should have is-last-selected class for the last date selected within the range', function () {
-            // wrappers should return 5 elements. Destructure to get the last one
-            const {wrappers: [, , , , lastSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected')
-            expect(lastSelectedCell.classes()).toContain('o-dpck__table__cell--last-selected')
-        })
-
-        it('should has is-selected class for all range of dates selected', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(5)
-        })
-
-    })
-
-    describe('hovered', function () {
-        beforeEach(() => {
-            wrapper.setProps({
-                hoveredDateRange: [propsData.week[1], propsData.week[5]]
-            })
-        })
-
-        it('should have is-first-hovered class for the first date hovered within the range', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--first-hovered').length).toBe(1)
-        })
-
-        it('should have is-last-hovered class for the last date hovered within the range', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--last-hovered').length).toBe(1)
-        })
-
-        it('should has is-within-hovered-range class for all range of dates hovered', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--within-hovered').length).toBe(3)
-        })
-    })
-
-    describe('classObject with multiple dates', function () {
-        beforeEach(() => {
-            wrapper.setProps({
-                selectedDate: [propsData.week[1], propsData.week[5], propsData.week[3]],
-                multiple: true
-            })
-        })
-
-        it('should have is-selected class for all dates selected', function () {
-            expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(3)
-        })
-
-        it('should not have is-first-selected class for the first date selected within the range', function () {
-            const {wrappers: [firstSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected')
-            expect(firstSelectedCell.classes()).not.toContain('o-dpck__table__cell--first-selected')
-        })
-
-        it('should not have is-within-selected class for the dates selected within the range', function () {
-            const withinSelectedRangeCells = wrapper.findAll('.o-dpck__table__cell--selected.o-dpck__table__cell--within-selected')
-            expect(withinSelectedRangeCells.length).toBe(0)
-        })
-
-        it('should not have is-last-selected class for the last date selected within the range', function () {
-            // wrappers should return 3 elements. Destructure to get the last one
-            const {wrappers: [, , lastSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected')
-            expect(lastSelectedCell.classes()).not.toContain('o-dpck__table__cell--last-selected')
-        })
-    })
-
-    it('manage accordingly leap years', () => {
-        expect(wrapper.vm.isLeapYear(2020)).toBeTruthy()
-        expect(wrapper.vm.daysInYear(2020)).toBe(366)
-        expect(wrapper.vm.isLeapYear(2021)).toBeFalsy()
-        expect(wrapper.vm.daysInYear(2021)).toBe(365)
-    })
-
-    it('emit chosen date', () => {
-        wrapper.vm.selectableDate = jest.fn(() => false)
-        wrapper.vm.emitChosenDate(5)
-        expect(wrapper.vm.selectableDate).toHaveBeenCalled()
-        expect(wrapper.emitted()['select']).toBeFalsy()
-
-        wrapper.vm.selectableDate = jest.fn(() => true)
-        wrapper.vm.emitChosenDate(5)
-        expect(wrapper.vm.selectableDate).toHaveBeenCalled()
-        expect(wrapper.emitted()['select']).toBeTruthy()
-    })
-
-    it('emit focused date', async () => {
-        const [y, m, d] = [2019, 4, 4]
-        let day = newDate(y, m, d)
-
-        let inc = 1
-
-        wrapper.vm.changeFocus(day, inc)
-        await wrapper.vm.$nextTick()
-        let valueEmitted = wrapper.emitted()['change-focus'][0]
-        expect(valueEmitted[0].getDate()).toEqual(d + inc)
-    })
-
-    it('match event days accordingly', () => {
-        const thisMonth = newDate(2019, 4, 4).getMonth()
-        const day = newDate(2019, thisMonth, 6)
-        const todayEvent = {
-            date: day,
-            type: 'o-dpck__table__cell--warning'
-        }
-        const events = [
-            {
-                date: newDate(2019, thisMonth, 2),
-                type: 'o-dpck__table__cell--warning'
-            },
-            todayEvent
-        ]
-        wrapper.setProps({ events })
-        expect(wrapper.vm.eventsDateMatch(day)).toEqual([todayEvent])
-    })
-
-    it('emit rangeHoverEndDate', () => {
-        wrapper.setProps({ range: true })
-        const thisMonth = new Date().getMonth()
-        const day = newDate(2019, thisMonth, 6)
-        wrapper.vm.setRangeHoverEndDate(day)
-        expect(wrapper.emitted()['rangeHoverEndDate']).toBeTruthy()
-    })
-
-    it('manage selectable dates as expected', () => {
-        const day = newDate(2019, 7, 7)
-
-        wrapper.setProps({
-            minDate: newDate(2019, 7, 17)
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: newDate(2019, 7, 1)
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-        wrapper.setProps({
-            selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2), day]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-        wrapper.setProps({
-            unselectableDates: [day]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeFalsy()
-
-        wrapper.setProps({
-            minDate: null,
-            maxDate: null,
-            selectableDates: null,
-            unselectableDates: null,
-            unselectableDaysOfWeek: [0, 1]
-        })
-        expect(wrapper.vm.selectableDate(day)).toBeTruthy()
-    })
-})
diff --git a/packages/oruga/src/components/datepicker/DatepickerTableRow.vue b/packages/oruga/src/components/datepicker/DatepickerTableRow.vue
deleted file mode 100644
index df7ae7c81..000000000
--- a/packages/oruga/src/components/datepicker/DatepickerTableRow.vue
+++ /dev/null
@@ -1,403 +0,0 @@
-<template>
-    <div :class="tableRowClasses">
-        <a
-            :class="tableCellClasses"
-            :style="{'cursor: pointer': weekNumberClickable }"
-            v-if="showWeekNumber"
-            @click.prevent="clickWeekNumber(getWeekNumber(week[6]))">
-            <span>{{ getWeekNumber(week[6]) }}</span>
-        </a>
-        <template v-for="(weekDay, index) in week">
-            <a
-                :ref="`day-${weekDay.getMonth()}-${weekDay.getDate()}`"
-                v-if="selectableDate(weekDay) && !disabled"
-                :key="index"
-                :class="cellClasses(weekDay)"
-                role="button"
-                href="#"
-                :disabled="disabled"
-                @click.prevent="emitChosenDate(weekDay)"
-                @mouseenter="setRangeHoverEndDate(weekDay)"
-                @keydown="manageKeydown($event, weekDay)"
-                :tabindex="day === weekDay.getDate() && month === weekDay.getMonth() ? null : -1">
-                <span>{{ weekDay.getDate() }}</span>
-                <div
-                    :class="tableEventsClasses"
-                    v-if="eventsDateMatch(weekDay)">
-                    <div
-                        :class="eventClasses(event)"
-                        v-for="(event, index) in eventsDateMatch(weekDay)"
-                        :key="index"/>
-                </div>
-            </a>
-            <div
-                v-else
-                :key="index"
-                :class="cellClasses(weekDay)">
-                <span>{{ weekDay.getDate() }}</span>
-            </div>
-        </template>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import DatePickerMixin from './DatepickerMixin'
-
-export default {
-    name: 'ODatepickerTableRow',
-    mixins: [BaseComponentMixin, DatePickerMixin],
-    configField: 'datepicker',
-    inject: {
-        $datepicker: { name: '$datepicker', default: false }
-    },
-    props: {
-        selectedDate: {
-            type: [Date, Array]
-        },
-        hoveredDateRange: Array,
-        day: {
-            type: Number
-        },
-        week: {
-            type: Array,
-            required: true
-        },
-        month: {
-            type: Number,
-            required: true
-        },
-        showWeekNumber: Boolean,
-        minDate: Date,
-        maxDate: Date,
-        disabled: Boolean,
-        unselectableDates: Array,
-        unselectableDaysOfWeek: Array,
-        selectableDates: Array,
-        events: Array,
-        indicators: String,
-        dateCreator: Function,
-        nearbyMonthDays: Boolean,
-        nearbySelectableMonthDays: Boolean,
-        weekNumberClickable: Boolean,
-        range: Boolean,
-        multiple: Boolean,
-        rulesForFirstWeek: Number,
-        firstDayOfWeek: Number,
-        tableRowClass: [String, Function, Array],
-        tableCellClass: [String, Function, Array],
-        tableCellSelectedClass: [String, Function, Array],
-        tableCellFirstSelectedClass: [String, Function, Array],
-        tableCellWithinSelectedClass: [String, Function, Array],
-        tableCellLastSelectedClass: [String, Function, Array],
-        tableCellFirstHoveredClass: [String, Function, Array],
-        tableCellInvisibleClass: [String, Function, Array],
-        tableCellWithinHoveredClass: [String, Function, Array],
-        tableCellLastHoveredClass: [String, Function, Array],
-        tableCellTodayClass: [String, Function, Array],
-        tableCellSelectableClass: [String, Function, Array],
-        tableCellUnselectableClass: [String, Function, Array],
-        tableCellNearbyClass: [String, Function, Array],
-        tableCellEventsClass: [String, Function, Array],
-        tableEventClass: [String, Function, Array],
-        tableEventIndicatorsClass: [String, Function, Array],
-        tableEventsClass: [String, Function, Array],
-        tableEventVariantClass: [String, Function, Array],
-    },
-    computed: {
-        tableRowClasses() {
-            return [
-                this.computedClass('tableRowClass', 'o-dpck__table__row'),
-            ]
-        },
-        tableCellClasses() {
-            return [
-                this.computedClass('tableCellClass', 'o-dpck__table__cell'),
-            ]
-        },
-        tableEventsClasses() {
-            return [
-                this.computedClass('tableEventsClass', 'o-dpck__table__events'),
-            ]
-        },
-        hasEvents() {
-            return this.events && this.events.length
-        }
-    },
-    watch: {
-        day(day) {
-            const refName = `day-${this.month}-${day}`
-            this.$nextTick(() => {
-                if (this.$refs[refName] && this.$refs[refName].length > 0) {
-                    if (this.$refs[refName][0]) {
-                        this.$refs[refName][0].focus()
-                    }
-                }
-            }) // $nextTick needed when month is changed
-        }
-    },
-    methods: {
-        firstWeekOffset(year, dow, doy) {
-            // first-week day -- which january is always in the first week (4 for iso, 1 for other)
-            const fwd = 7 + dow - doy
-            // first-week day local weekday -- which local weekday is fwd
-            const firstJanuary = new Date(year, 0, fwd)
-            const fwdlw = (7 + firstJanuary.getDay() - dow) % 7
-            return -fwdlw + fwd - 1
-        },
-        daysInYear(year) {
-            return this.isLeapYear(year) ? 366 : 365
-        },
-        isLeapYear(year) {
-            return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
-        },
-        getSetDayOfYear(input) {
-            return Math.round((input - new Date(input.getFullYear(), 0, 1)) / 864e5) + 1
-        },
-        weeksInYear(year, dow, doy) {
-            const weekOffset = this.firstWeekOffset(year, dow, doy)
-            const weekOffsetNext = this.firstWeekOffset(year + 1, dow, doy)
-            return (this.daysInYear(year) - weekOffset + weekOffsetNext) / 7
-        },
-        getWeekNumber(mom) {
-            const dow = this.firstDayOfWeek // first day of week
-            // Rules for the first week : 1 for the 1st January, 4 for the 4th January
-            const doy = this.rulesForFirstWeek
-            const weekOffset = this.firstWeekOffset(mom.getFullYear(), dow, doy)
-            const week = Math.floor((this.getSetDayOfYear(mom) - weekOffset - 1) / 7) + 1
-            let resWeek
-            let resYear
-            if (week < 1) {
-                resYear = mom.getFullYear() - 1
-                resWeek = week + this.weeksInYear(resYear, dow, doy)
-            } else if (week > this.weeksInYear(mom.getFullYear(), dow, doy)) {
-                resWeek = week - this.weeksInYear(mom.getFullYear(), dow, doy)
-                resYear = mom.getFullYear() + 1
-            } else {
-                resYear = mom.getFullYear()
-                resWeek = week
-            }
-
-            return resWeek
-        },
-        clickWeekNumber(week) {
-            if (this.weekNumberClickable) {
-                this.$datepicker.$emit('week-number-click', week)
-            }
-        },
-        /*
-         * Check that selected day is within earliest/latest params and
-         * is within this month
-         */
-        selectableDate(day) {
-            const validity = []
-
-            if (this.minDate) {
-                validity.push(day >= this.minDate)
-            }
-
-            if (this.maxDate) {
-                validity.push(day <= this.maxDate)
-            }
-
-            if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
-                validity.push(day.getMonth() === this.month)
-            }
-
-            if (this.selectableDates) {
-                for (let i = 0; i < this.selectableDates.length; i++) {
-                    const enabledDate = this.selectableDates[i]
-                    if (day.getDate() === enabledDate.getDate() &&
-                        day.getFullYear() === enabledDate.getFullYear() &&
-                        day.getMonth() === enabledDate.getMonth()) {
-                        return true
-                    } else {
-                        validity.push(false)
-                    }
-                }
-            }
-
-            if (this.unselectableDates) {
-                for (let i = 0; i < this.unselectableDates.length; i++) {
-                    const disabledDate = this.unselectableDates[i]
-                    validity.push(
-                        day.getDate() !== disabledDate.getDate() ||
-                            day.getFullYear() !== disabledDate.getFullYear() ||
-                            day.getMonth() !== disabledDate.getMonth()
-                    )
-                }
-            }
-
-            if (this.unselectableDaysOfWeek) {
-                for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) {
-                    const dayOfWeek = this.unselectableDaysOfWeek[i]
-                    validity.push(day.getDay() !== dayOfWeek)
-                }
-            }
-
-            return validity.indexOf(false) < 0
-        },
-
-        /*
-        * Emit select event with chosen date as payload
-        */
-        emitChosenDate(day) {
-            if (this.disabled) return
-
-            if (this.selectableDate(day)) {
-                this.$emit('select', day)
-            }
-        },
-
-        eventsDateMatch(day) {
-            if (!this.events || !this.events.length) return false
-
-            const dayEvents = []
-
-            for (let i = 0; i < this.events.length; i++) {
-                if (this.events[i].date.getDay() === day.getDay()) {
-                    dayEvents.push(this.events[i])
-                }
-            }
-
-            if (!dayEvents.length) {
-                return false
-            }
-
-            return dayEvents
-        },
-
-        /*
-        * Build cellClasses for cell using validations
-        */
-        cellClasses(day) {
-            function dateMatch(dateOne, dateTwo, multiple = false) {
-                // if either date is null or undefined, return false
-                // if using multiple flag, return false
-                if (!dateOne || !dateTwo || multiple) {
-                    return false
-                }
-
-                if (Array.isArray(dateTwo)) {
-                    return dateTwo.some((date) => (
-                        dateOne.getDate() === date.getDate() &&
-                        dateOne.getFullYear() === date.getFullYear() &&
-                        dateOne.getMonth() === date.getMonth()
-                    ))
-                }
-                return (dateOne.getDate() === dateTwo.getDate() &&
-                    dateOne.getFullYear() === dateTwo.getFullYear() &&
-                    dateOne.getMonth() === dateTwo.getMonth())
-            }
-
-            function dateWithin(dateOne, dates, multiple = false) {
-                if (!Array.isArray(dates) || multiple) { return false }
-
-                return dateOne > dates[0] && dateOne < dates[1]
-            }
-
-            return [
-                ...this.tableCellClasses,
-                {
-                    [this.computedClass('tableCellSelectedClass', 'o-dpck__table__cell--selected')] :
-                        dateMatch(day, this.selectedDate) || dateWithin(day, this.selectedDate, this.multiple)
-                },
-                {
-                    [this.computedClass('tableCellFirstSelectedClass', 'o-dpck__table__cell--first-selected')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.selectedDate) && this.selectedDate[0],
-                            this.multiple
-                        ),
-                },
-                {
-                    [this.computedClass('tableCellWithinSelectedClass', 'o-dpck__table__cell--within-selected')] :
-                        dateWithin(day, this.selectedDate, this.multiple)
-                },
-                {
-                    [this.computedClass('tableCellLastSelectedClass', 'o-dpck__table__cell--last-selected')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.selectedDate) && this.selectedDate[1],
-                            this.multiple
-                        ),
-                },
-                {
-                    [this.computedClass('tableCellFirstHoveredClass', 'o-dpck__table__cell--first-hovered')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0]
-                        ),
-                },
-                {
-                    [this.computedClass('tableCellWithinHoveredClass', 'o-dpck__table__cell--within-hovered')] :
-                        dateWithin(day, this.hoveredDateRange)
-                },
-                {
-                    [this.computedClass('tableCellLastHoveredClass', 'o-dpck__table__cell--last-hovered')] :
-                        dateMatch(
-                            day,
-                            Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1]
-                        )
-                },
-                {
-                    [this.computedClass('tableCellTodayClass', 'o-dpck__table__cell--today')] :
-                        dateMatch(day, this.dateCreator())
-                },
-                {
-                    [this.computedClass('tableCellSelectableClass', 'o-dpck__table__cell--selectable')] :
-                        this.selectableDate(day) && !this.disabled
-                },
-                {
-                    [this.computedClass('tableCellUnselectableClass', 'o-dpck__table__cell--unselectable')] :
-                        !this.selectableDate(day) || this.disabled
-                },
-                {
-                    [this.computedClass('tableCellInvisibleClass', 'o-dpck__table__cell--invisible')] :
-                        !this.nearbyMonthDays && day.getMonth() !== this.month
-                },
-                {
-                    [this.computedClass('tableCellNearbyClass', 'o-dpck__table__cell--nearby')] :
-                       this.nearbySelectableMonthDays && day.getMonth() !== this.month
-                },
-                {
-                    [this.computedClass('tableCellEventsClass', 'o-dpck__table__cell--events')] :
-                        this.hasEvents
-                },
-                {
-                    [this.computedClass('tableCellTodayClass', 'o-dpck__table__cell--today')] :
-                        dateMatch(day, this.dateCreator())
-                }
-            ]
-        },
-
-        eventClasses(event) {
-            return [
-                this.computedClass('tableEventClass', 'o-dpck__table__event'),
-                { [this.computedClass('tableEventVariantClass', 'o-dpck__table__event--', event.type)]: event.type },
-                { [this.computedClass('tableEventIndicatorsClass', 'o-dpck__table__event--', this.indicators)]: this.indicators }
-            ]
-        },
-
-        setRangeHoverEndDate(day) {
-            if (this.range) {
-                this.$emit('rangeHoverEndDate', day)
-            }
-        },
-
-        changeFocus(day, inc) {
-            const nextDay = new Date(day.getTime())
-            nextDay.setDate(day.getDate() + inc)
-            while (
-                (!this.minDate || nextDay > this.minDate) &&
-                (!this.maxDate || nextDay < this.maxDate) &&
-                !this.selectableDate(nextDay)
-            ) {
-                nextDay.setDate(day.getDate() + Math.sign(inc))
-            }
-            this.setRangeHoverEndDate(nextDay)
-            this.$emit('change-focus', nextDay)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/datepicker/Inspector.vue b/packages/oruga/src/components/datepicker/Inspector.vue
deleted file mode 100644
index e7174a9af..000000000
--- a/packages/oruga/src/components/datepicker/Inspector.vue
+++ /dev/null
@@ -1,565 +0,0 @@
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select a date">
-                    <o-datepicker v-bind="s" :events="events" locale="en-GB" placeholder="Click to select a date..." icon="calendar" ref="datepicker">
-                        Footer
-                    </o-datepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openDatePicker() {
-            setTimeout(() => {
-                this.$refs.datepicker.$el.getElementsByClassName('o-input-iconspace-left')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            events: [
-                {
-                    date: new Date(),
-                    type: 'info'
-                },
-                {
-                    date: new Date(),
-                    type: 'warning'
-                }
-            ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the Datepicker size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    },
-                },
-                {
-                    class: "boxClass",
-                    description: "Class of the Datepicker box where you choose the date",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerClass",
-                    description: "Class of the Datepicker header inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerButtonsClass",
-                    description: "Class of the Datepicker buttons inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "headerButtonsSizeClass",
-                    description: "Class of the Datepicker buttons inside the box when a size is choosen",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.size = 'large';
-                        this.openDatePicker();
-                    },
-                },
-                {
-                    class: "prevBtnClass",
-                    description: "Class of the prev. button inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "nextBtnClass",
-                    description: "Class of the next button inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "listsClass",
-                    description: "Class of the month and year selects container inside the Datepicker box",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "footerClass",
-                    description: "Class of the Datepicker footer",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableClass",
-                    description: "Class of the Datepicker table inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableHeadClass",
-                    description: "Class of Datepicker header with days of the week inside the table",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableHeadCellClass",
-                    description: "Class of the cell inside the table header",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableBodyClass",
-                    description: "Class of the table body inside the box",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableRowClass",
-                    description: "Class of the table row",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellClass",
-                    description: "Class of the table cell",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellInvisibleClass",
-                    description: "Class of the table cell when nearby month days are hidden",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.nearbyMonthDays = false
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellSelectedClass",
-                    description: "Class of table cell when it's selected",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellFirstSelectedClass",
-                    description: "Class of the first selected table cell when in range",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellWithinSelectedClass",
-                    description: "Class of the table cells within the range when the range is selected",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellLastSelectedClass",
-                    description: "Class of the last selected table cell during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellFirstHoveredClass",
-                    description: "Class of the first hovered table cell during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellWithinHoveredClass",
-                    description: "Class of the table cell when hovered during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellLastHoveredClass",
-                    description: "Class of the last table cell hovered during range selection",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellTodayClass",
-                    description: "Class of the table cell of the current day",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellSelectableClass",
-                    description: "Class of the table cell that is selectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellUnselectableClass",
-                    description: "Class of the table cell that is unselectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellNearbyClass",
-                    description: "Class of the table cell when nearby days (prev/next month) are selectable",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.nearbySelectableMonthDays = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableCellEventsClass",
-                    description: "Class of the cell of a row when at least one event is present",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventClass",
-                    description: "Class of the event",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventsClass",
-                    description: "Class of the events container",
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventVariantClass",
-                    description: "Class of the event indicator when a `variant` is specified",
-                    properties: ["variant in event"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "tableEventIndicatorsClass",
-                    description: "Class of the event indicator",
-                    properties: ['indicator'],
-                    suffixes: ['bars', 'dots', '*'],
-                    action: (cmp) => {
-                        cmp.data.type = ''
-                        cmp.data.tableClass = 'datepicker__table'
-                        cmp.data.indicators = 'bars'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthClass",
-                    description: "Class of the Datepicker table inside the box when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthBodyClass",
-                    description: "Class of the table body inside the box when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthRowClass",
-                    description: "Class of the table row when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellClass",
-                    description: "Class of the table cell when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellInvisibleClass",
-                    description: "Class of the table cell when nearby month days are hidden when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.nearbyMonthDays = false
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellSelectedClass",
-                    description: "Class of table cell when it's selected when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellFirstSelectedClass",
-                    description: "Class of the first selected table cell when in range when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellWithinSelectedClass",
-                    description: "Class of the table cells within the range when the range is selected when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellLastSelectedClass",
-                    description: "Class of the last selected table cell during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellFirstHoveredClass",
-                    description: "Class of the first hovered table cell during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellWithinHoveredClass",
-                    description: "Class of the table cell when hovered during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellLastHoveredClass",
-                    description: "Class of the last table cell hovered during range selection when type is month",
-                    warning: "See it in action selecting a date range",
-                    action: (cmp) => {
-                        cmp.data.range = true
-                        cmp.data.inline = true
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellTodayClass",
-                    description: "Class of the table cell of the current day when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellSelectableClass",
-                    description: "Class of the table cell that is selectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellUnselectableClass",
-                    description: "Class of the table cell that is unselectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthCellNearbyClass",
-                    description: "Class of the table cell when nearby days (prev/next month) are selectable when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        cmp.data.nearbySelectableMonthDays = true
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "monthEventsClass",
-                    description: "Class of the events container when type is month",
-                    action: (cmp) => {
-                        cmp.data.type = 'month'
-                        cmp.data.monthClass = 'datepicker__,table__month'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of the Datepicker when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    action: (cmp) => {
-                        cmp.data.tableClass = 'datepicker__table'
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-                {
-                    class: "dropdownClasses",
-                    realClass: "dropdownClasses.rootClass",
-                    description: "Classes to apply on dropdown.",
-                    componentRef: "Dropdown",
-                    action: () => {
-                        this.openDatePicker();
-                    }
-                },
-                {
-                    class: "selectListClasses",
-                    description: "Classes to apply on select list (month and year).",
-                    componentRef: "Select",
-                    action: () => {
-                        this.openDatePicker();
-                    }
-                },
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
diff --git a/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap
deleted file mode 100644
index d3b9231ee..000000000
--- a/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap
+++ /dev/null
@@ -1,417 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODatepicker render correctly 1`] = `
-<div class="o-dpck">
-    <o-dropdown-stub maxheight="200" mobilemodal="true" ariarole="dialog" animation="fade" trapfocus="true" closeonclick="true" canclose="true" triggers="click" menutag="div" appendtobodycopyparent="true" rootclass="o-dpck__dropdown" aria-modal="true">
-        <o-dropdown-item-stub override="true" tag="div" tabindex="0" ariarole="" itemclass="o-dpck__box">
-            <header class="o-dpck__header">
-                <div class="o-dpck__header__buttons"><a role="button" href="#" class="o-dpck__header__previous">
-                        <o-icon-stub icon="chevron-left" clickable="true" both="true"></o-icon-stub>
-                    </a> <a role="button" href="#" class="o-dpck__header__next">
-                        <o-icon-stub icon="chevron-right" clickable="true" both="true"></o-icon-stub>
-                    </a>
-                    <div class="o-dpck__header__list">
-                        <o-select-stub usehtml5validation="true" statusicon="true" value="7">
-                            <option value="0">
-                                January
-                            </option>
-                            <option value="1">
-                                February
-                            </option>
-                            <option value="2">
-                                March
-                            </option>
-                            <option value="3">
-                                April
-                            </option>
-                            <option value="4">
-                                May
-                            </option>
-                            <option value="5">
-                                June
-                            </option>
-                            <option value="6">
-                                July
-                            </option>
-                            <option value="7">
-                                August
-                            </option>
-                            <option value="8">
-                                September
-                            </option>
-                            <option value="9">
-                                October
-                            </option>
-                            <option value="10">
-                                November
-                            </option>
-                            <option value="11">
-                                December
-                            </option>
-                        </o-select-stub>
-                        <o-select-stub usehtml5validation="true" statusicon="true" value="2018">
-                            <option value="2028">
-                                2028
-                            </option>
-                            <option value="2027">
-                                2027
-                            </option>
-                            <option value="2026">
-                                2026
-                            </option>
-                            <option value="2025">
-                                2025
-                            </option>
-                            <option value="2024">
-                                2024
-                            </option>
-                            <option value="2023">
-                                2023
-                            </option>
-                            <option value="2022">
-                                2022
-                            </option>
-                            <option value="2021">
-                                2021
-                            </option>
-                            <option value="2020">
-                                2020
-                            </option>
-                            <option value="2019">
-                                2019
-                            </option>
-                            <option value="2018">
-                                2018
-                            </option>
-                            <option value="2017">
-                                2017
-                            </option>
-                            <option value="2016">
-                                2016
-                            </option>
-                            <option value="2015">
-                                2015
-                            </option>
-                            <option value="2014">
-                                2014
-                            </option>
-                            <option value="2013">
-                                2013
-                            </option>
-                            <option value="2012">
-                                2012
-                            </option>
-                            <option value="2011">
-                                2011
-                            </option>
-                            <option value="2010">
-                                2010
-                            </option>
-                            <option value="2009">
-                                2009
-                            </option>
-                            <option value="2008">
-                                2008
-                            </option>
-                            <option value="2007">
-                                2007
-                            </option>
-                            <option value="2006">
-                                2006
-                            </option>
-                            <option value="2005">
-                                2005
-                            </option>
-                            <option value="2004">
-                                2004
-                            </option>
-                            <option value="2003">
-                                2003
-                            </option>
-                            <option value="2002">
-                                2002
-                            </option>
-                            <option value="2001">
-                                2001
-                            </option>
-                            <option value="2000">
-                                2000
-                            </option>
-                            <option value="1999">
-                                1999
-                            </option>
-                            <option value="1998">
-                                1998
-                            </option>
-                            <option value="1997">
-                                1997
-                            </option>
-                            <option value="1996">
-                                1996
-                            </option>
-                            <option value="1995">
-                                1995
-                            </option>
-                            <option value="1994">
-                                1994
-                            </option>
-                            <option value="1993">
-                                1993
-                            </option>
-                            <option value="1992">
-                                1992
-                            </option>
-                            <option value="1991">
-                                1991
-                            </option>
-                            <option value="1990">
-                                1990
-                            </option>
-                            <option value="1989">
-                                1989
-                            </option>
-                            <option value="1988">
-                                1988
-                            </option>
-                            <option value="1987">
-                                1987
-                            </option>
-                            <option value="1986">
-                                1986
-                            </option>
-                            <option value="1985">
-                                1985
-                            </option>
-                            <option value="1984">
-                                1984
-                            </option>
-                            <option value="1983">
-                                1983
-                            </option>
-                            <option value="1982">
-                                1982
-                            </option>
-                            <option value="1981">
-                                1981
-                            </option>
-                            <option value="1980">
-                                1980
-                            </option>
-                            <option value="1979">
-                                1979
-                            </option>
-                            <option value="1978">
-                                1978
-                            </option>
-                            <option value="1977">
-                                1977
-                            </option>
-                            <option value="1976">
-                                1976
-                            </option>
-                            <option value="1975">
-                                1975
-                            </option>
-                            <option value="1974">
-                                1974
-                            </option>
-                            <option value="1973">
-                                1973
-                            </option>
-                            <option value="1972">
-                                1972
-                            </option>
-                            <option value="1971">
-                                1971
-                            </option>
-                            <option value="1970">
-                                1970
-                            </option>
-                            <option value="1969">
-                                1969
-                            </option>
-                            <option value="1968">
-                                1968
-                            </option>
-                            <option value="1967">
-                                1967
-                            </option>
-                            <option value="1966">
-                                1966
-                            </option>
-                            <option value="1965">
-                                1965
-                            </option>
-                            <option value="1964">
-                                1964
-                            </option>
-                            <option value="1963">
-                                1963
-                            </option>
-                            <option value="1962">
-                                1962
-                            </option>
-                            <option value="1961">
-                                1961
-                            </option>
-                            <option value="1960">
-                                1960
-                            </option>
-                            <option value="1959">
-                                1959
-                            </option>
-                            <option value="1958">
-                                1958
-                            </option>
-                            <option value="1957">
-                                1957
-                            </option>
-                            <option value="1956">
-                                1956
-                            </option>
-                            <option value="1955">
-                                1955
-                            </option>
-                            <option value="1954">
-                                1954
-                            </option>
-                            <option value="1953">
-                                1953
-                            </option>
-                            <option value="1952">
-                                1952
-                            </option>
-                            <option value="1951">
-                                1951
-                            </option>
-                            <option value="1950">
-                                1950
-                            </option>
-                            <option value="1949">
-                                1949
-                            </option>
-                            <option value="1948">
-                                1948
-                            </option>
-                            <option value="1947">
-                                1947
-                            </option>
-                            <option value="1946">
-                                1946
-                            </option>
-                            <option value="1945">
-                                1945
-                            </option>
-                            <option value="1944">
-                                1944
-                            </option>
-                            <option value="1943">
-                                1943
-                            </option>
-                            <option value="1942">
-                                1942
-                            </option>
-                            <option value="1941">
-                                1941
-                            </option>
-                            <option value="1940">
-                                1940
-                            </option>
-                            <option value="1939">
-                                1939
-                            </option>
-                            <option value="1938">
-                                1938
-                            </option>
-                            <option value="1937">
-                                1937
-                            </option>
-                            <option value="1936">
-                                1936
-                            </option>
-                            <option value="1935">
-                                1935
-                            </option>
-                            <option value="1934">
-                                1934
-                            </option>
-                            <option value="1933">
-                                1933
-                            </option>
-                            <option value="1932">
-                                1932
-                            </option>
-                            <option value="1931">
-                                1931
-                            </option>
-                            <option value="1930">
-                                1930
-                            </option>
-                            <option value="1929">
-                                1929
-                            </option>
-                            <option value="1928">
-                                1928
-                            </option>
-                            <option value="1927">
-                                1927
-                            </option>
-                            <option value="1926">
-                                1926
-                            </option>
-                            <option value="1925">
-                                1925
-                            </option>
-                            <option value="1924">
-                                1924
-                            </option>
-                            <option value="1923">
-                                1923
-                            </option>
-                            <option value="1922">
-                                1922
-                            </option>
-                            <option value="1921">
-                                1921
-                            </option>
-                            <option value="1920">
-                                1920
-                            </option>
-                            <option value="1919">
-                                1919
-                            </option>
-                            <option value="1918">
-                                1918
-                            </option>
-                        </o-select-stub>
-                    </div>
-                </div>
-            </header>
-            <o-datepicker-table-stub daynames="Su,M,Tu,W,Th,F,S" monthnames="January,February,March,April,May,June,July,August,September,October,November,December" firstdayofweek="0" indicators="dots" focused="[object Object]" datecreator="() => {
-          /* istanbul ignore next */
-          cov_2jc0oiltr0.f[13]++;
-          const dateCreator =
-          /* istanbul ignore next */
-          (cov_2jc0oiltr0.s[57]++, (0, _helpers.getValueByPath)((0, _config.getOptions)(), 'datepicker.dateCreator', undefined));
-
-          /* istanbul ignore next */
-          cov_2jc0oiltr0.s[58]++;
-
-          if (typeof dateCreator === 'function') {
-            /* istanbul ignore next */
-            cov_2jc0oiltr0.b[22][0]++;
-            cov_2jc0oiltr0.s[59]++;
-            return dateCreator();
-          } else {
-            /* istanbul ignore next */
-            cov_2jc0oiltr0.b[22][1]++;
-            cov_2jc0oiltr0.s[60]++;
-            return new Date();
-          }
-        }" nearbymonthdays="true" rulesforfirstweek="4"></o-datepicker-table-stub>
-            <!---->
-            <!---->
-        </o-dropdown-item-stub>
-    </o-dropdown-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap
deleted file mode 100644
index f91ff3a25..000000000
--- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap
+++ /dev/null
@@ -1,45 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODatepickerMonth render correctly 1`] = `
-<section class="o-dpck__month">
-    <div class="o-dpck__month__body">
-        <div class="o-dpck__month__table"><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                January
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                February
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                March
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                April
-                <!---->
-            </a><a role="button" href="#" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                May
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                June
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                July
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                August
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                September
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                October
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                November
-                <!---->
-            </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable">
-                December
-                <!---->
-            </a></div>
-    </div>
-</section>
-`;
diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap
deleted file mode 100644
index 82e0b623a..000000000
--- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap
+++ /dev/null
@@ -1,16 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODatepickerTable render correctly 1`] = `
-<section class="o-dpck__table">
-    <header class="o-dpck__table__head">
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Su</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>M</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Tu</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>W</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Th</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>F</span></div>
-        <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>S</span></div>
-    </header>
-    <div class="o-dpck__table__body"></div>
-</section>
-`;
diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap
deleted file mode 100644
index 9bc0a6528..000000000
--- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap
+++ /dev/null
@@ -1,21 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODatepickerTableRow render correctly 1`] = `
-<div class="o-dpck__table__row">
-    <!----> <a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>31</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>1</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>2</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>3</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>4</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>5</span>
-        <!---->
-    </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>6</span>
-        <!---->
-    </a>
-</div>
-`;
diff --git a/packages/oruga/src/components/datepicker/examples/Datepicker.md b/packages/oruga/src/components/datepicker/examples/Datepicker.md
deleted file mode 100644
index 410d78112..000000000
--- a/packages/oruga/src/components/datepicker/examples/Datepicker.md
+++ /dev/null
@@ -1,413 +0,0 @@
-## Examples
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <o-field>
-                <o-select v-model="locale" placeholder="Locale">
-                    <option :value="undefined"></option>
-                    <option value="de-DE">de-DE</option>
-                    <option value="en-CA">en-CA</option>
-                    <option value="en-GB">en-GB</option>
-                    <option value="en-US">en-US</option>
-                    <option value="es-ES">es-ES</option>
-                    <option value="es-MX">es-MX</option>
-                    <option value="fr-CA">fr-CA</option>
-                    <option value="fr-FR">fr-FR</option>
-                    <option value="it-IT">it-IT</option>
-                    <option value="ja-JP">ja-JP</option>
-                    <option value="pt-BR">pt-BR</option>
-                    <option value="ru-RU">ru-RU</option>
-                </o-select>
-            </o-field>
-            <o-field>
-               <o-switch v-model="showWeekNumber">Show week number</o-switch>
-            </o-field>
-        </o-field>
-        <o-field label="Select a date">
-            <o-datepicker
-                v-model="selected"
-                :show-week-number="showWeekNumber"
-                :locale="locale"
-                placeholder="Click to select..."
-                icon="calendar"
-                trap-focus>
-            </o-datepicker>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                selected: new Date(),
-                showWeekNumber: false,
-                locale: undefined // Browser locale
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Min/Max date
-
-::: demo
-```html
-<template>
-    <o-field label="Select a date">
-        <o-datepicker
-            placeholder="Click to select..."
-            icon="calendar"
-            :min-date="minDate"
-            :max-date="maxDate">
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            const today = new Date()
-
-            return {
-                date: new Date(),
-                minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate()  - 7),
-                maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7)
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Range
-
-::: demo
-```html
-<template>
-    <o-field label="Select a date">
-        <o-datepicker
-            placeholder="Click to select..."
-            icon="calendar"
-            v-model="dates"
-            range>
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            dates: []
-        }
-    }
-}
-</script>
-```
-:::
-
-### Multiple
-
-::: demo
-```html
-<template>
-    <o-field label="Select a date">
-        <o-datepicker
-            placeholder="Click to select..."
-            v-model="dates"
-            multiple>
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            dates: []
-        }
-    }
-}
-</script>
-```
-:::
-
-### Trigger
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Select a date" grouped>
-            <o-datepicker v-model="selected" :mobile-native="false">
-                <template v-slot:trigger>
-                    <o-button
-                        icon-left="calendar"
-                        type="primary" />
-                </template>
-            </o-datepicker>
-            <o-input readonly :value="selectedString" />
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            selected: null
-        }
-    },
-    computed: {
-        selectedString() {
-            return this.selected ? this.selected.toDateString() : ''
-        }
-    }
-}
-</script>
-```
-:::
-
-### Programmatically
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-datepicker
-                ref="datepicker"
-                expanded
-                placeholder="Select a date">
-            </o-datepicker>
-            <o-button
-                @click="$refs.datepicker.toggle()"
-                icon-left="calendar"
-                type="primary" />
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-}
-</script>
-```
-:::
-
-### Footer slot
-
-::: demo
-```html
-<template>
-    <o-field label="Select a date">
-        <o-datepicker v-model="date"
-            :first-day-of-week="1"
-            placeholder="Click to select...">
-
-            <o-button variant="primary"
-                @click="date = new Date()">
-                <o-icon icon="calendar"></o-icon>
-                <span>Today</span>
-            </o-button>
-
-            <o-button variant="danger"
-                @click="date = null">
-                <o-icon icon="times"></o-icon>
-                <span>Clear</span>
-            </o-button>
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                date: new Date()
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Header slot
-
-::: demo
-```html
-<template>
-    <o-field label="Select a date">
-        <o-datepicker :focused-date="date"
-            :first-day-of-week="1"
-            placeholder="Click to select...">
-
-            <template slot="header">
-                <o-field>
-                    <o-autocomplete
-                        open-on-focus
-                        readonly
-                        v-model="month"
-                        :data="months"
-                        field="name"
-                        @select="selectMonth">
-                    </o-autocomplete>
-                    <o-button disabled>{{ date.getFullYear() }}</o-button>
-                </o-field>
-            </template>
-
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                date: new Date(),
-                month: null,
-                months: [
-                    { name: 'January', value: 0 },
-                    { name:'February', value: 1 },
-                    { name:'March', value: 2 },
-                    { name:'April', value: 3 },
-                    { name:'May', value: 4 },
-                    { name:'June', value: 5 },
-                    { name:'July', value: 6 },
-                    { name:'August', value: 7 },
-                    { name:'September', value: 8 },
-                    { name:'October', value: 9 },
-                    { name:'November', value: 10 },
-                    { name:'December', value: 11 }
-                ]
-            }
-        },
-        methods: {
-            selectMonth(option) {
-                if (option) {
-                    this.date = new Date(this.date)
-                    this.date.setMonth(option.value)
-                }
-            }
-        },
-        mounted() {
-            this.month = this.months.filter((item) =>
-                item.value == this.date.getMonth()
-            )[0].name
-        }
-    }
-</script>
-```
-:::
-
-### Events
-
-::: demo
-```html
-<template>
-    <span>
-        <o-field>
-            <o-switch v-model="bars">Bars</o-switch>
-        </o-field>
-        <o-datepicker
-            inline
-            v-model="date"
-            :events="events"
-            :indicators="indicators">
-        </o-datepicker>
-    </span>
-</template>
-
-<script>
-    const thisMonth = new Date().getMonth()
-
-    export default {
-        computed: {
-            indicators() {
-                return this.bars ? 'bars' : 'dots'
-            }
-        },
-        data() {
-            return {
-                date: new Date(2017, thisMonth, 1),
-                events: [
-                    new Date(2017, thisMonth, 2),
-                    new Date(2017, thisMonth, 6),
-                    {
-                        date: new Date(2017, thisMonth, 6),
-                        type: 'info'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 8),
-                        type: 'danger'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 10),
-                        type: 'success'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 10),
-                        type: 'link'
-                    },
-                    new Date(2017, thisMonth, 12),
-                    {
-                        date: new Date(2017, thisMonth, 12),
-                        type: 'warning'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 16),
-                        type: 'danger'
-                    },
-                    new Date(2017, thisMonth, 20),
-                    {
-                        date: new Date(2017, thisMonth, 29),
-                        type: 'success'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 29),
-                        type: 'warning'
-                    },
-                    {
-                        date: new Date(2017, thisMonth, 29),
-                        type: 'info'
-                    }
-                ],
-                bars: false
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Month picker
-
-::: demo
-```html
-<template>
-    <o-field label="Select a month">
-        <o-datepicker
-            placeholder="Click to select..."
-            icon="calendar"
-            type="month"
-            v-model="dates">
-        </o-datepicker>
-    </o-field>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            dates: undefined
-        }
-    }
-}
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/datepicker/index.js b/packages/oruga/src/components/datepicker/index.js
deleted file mode 100644
index 87ddbad5e..000000000
--- a/packages/oruga/src/components/datepicker/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Datepicker from './Datepicker'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Datepicker)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Datepicker as ODatepicker
-}
diff --git a/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js b/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js
deleted file mode 100644
index 4e0f4a77b..000000000
--- a/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import { shallowMount, mount } from '@vue/test-utils'
-import Datetimepicker from '@components/datetimepicker/Datetimepicker'
-
-let wrapper
-
-const defaultLocale = 'it-IT'
-
-describe('Datetimepicker', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(Datetimepicker, {
-            propsData: {
-                locale: defaultLocale
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ODatetimepicker')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('react accordingly when setting a new value', async () => {
-        const date = new Date()
-        wrapper.setProps({ value: date })
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.vm.newValue).toEqual(date)
-    })
-
-    it('react accordingly when setting computedValue', async () => {
-        const date = new Date()
-        wrapper.vm.computedValue = date
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(date)
-    })
-
-    it('react accordingly when handling native picker', () => {
-        const date = new Date(2020, 0, 1, 12, 30, 0)
-        wrapper.vm.onChangeNativePicker({ target: { value: '2020-01-01T12:30' } })
-        expect(wrapper.emitted()['input']).toEqual([[date]])
-    })
-
-    it('react accordingly when handling native picker clear', () => {
-        wrapper.vm.onChangeNativePicker({ target: { value: '' } })
-        expect(wrapper.emitted()['input']).toEqual([[null]])
-    })
-
-    it('react accordingly when setting minDateTime prop and computedValue', () => {
-        const min = new Date(2019, 9, 20, 8, 0, 0, 0)
-        const date = new Date(2019, 9, 18, 0, 0, 0, 0)
-        wrapper.setProps({
-            minDatetime: min
-        })
-        wrapper.vm.computedValue = date
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(min)
-    })
-
-    it('react accordingly when setting maxDateTime prop and computedValue', () => {
-        const max = new Date(2019, 9, 18, 0, 0, 0, 0)
-        const date = new Date(2019, 9, 20, 8, 0, 0, 0)
-        wrapper.setProps({
-            maxDatetime: max
-        })
-        wrapper.vm.computedValue = date
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(max)
-    })
-
-    it('should format date time', async () => {
-        const datetimeToFormat = new Date(2019, 9, 1, 8, 30, 0, 0)
-        wrapper = mount(Datetimepicker, {
-            propsData: {
-                value: datetimeToFormat,
-                locale: defaultLocale
-            },
-            stubs: {
-                transition: false
-            }
-        })
-        const datepicker = wrapper.find({ ref: 'datepicker' })
-        await wrapper.vm.$nextTick()
-        expect(datepicker.vm.formattedValue).toEqual('1/10/2019, 08:30')
-        wrapper.setProps({
-            datetimeFormatter: (date) => `${date.getFullYear()}`
-        })
-        expect(datepicker.vm.formattedValue).toEqual('2019')
-    })
-
-    /*
-    it('should format date time with seconds', async () => {
-        wrapper = mount(Datetimepicker, {
-            propsData: {
-                locale: defaultLocale,
-                timepicker: {
-                    enableSeconds: true,
-                    locale: defaultLocale
-                }
-            },
-            stubs: {
-                transition: false
-            }
-        })
-        await wrapper.vm.$nextTick()
-        const datetimeToFormat = new Date(2019, 9, 1, 8, 30, 0, 0)
-        const formattedDatetime = wrapper.vm.defaultDatetimeFormatter(datetimeToFormat)
-        expect(formattedDatetime).toEqual('1/10/2019, 08:30:00')
-    })
-    */
-
-    it('should format date time according init value', async () => {
-        const date = new Date(2019, 9, 1, 8, 30, 0, 0)
-        wrapper = mount(Datetimepicker, {
-            propsData: {
-                locale: defaultLocale,
-                value: date
-            },
-            stubs: {
-                transition: false
-            }
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find('input').element.value).toEqual('1/10/2019, 08:30')
-    })
-
-    it('should parse date time', async () => {
-        wrapper = mount(Datetimepicker, {
-            stubs: {
-                transition: false
-            }
-        })
-        const datepicker = wrapper.find({ ref: 'datepicker' })
-
-        let expectedDatetime = new Date(2019, 9, 1, 9, 30, 0, 0)
-        datepicker.vm.onChange('2019-10-1 09:30')
-        expect(wrapper.vm.computedValue).toEqual(expectedDatetime)
-
-        expectedDatetime = new Date(2019, 9, 1, 9, 30, 0, 0)
-        wrapper.setProps({
-            datetimeParser: () => expectedDatetime
-        })
-        datepicker.vm.onChange('Whatever!')
-        expect(datepicker.vm.computedValue).toEqual(expectedDatetime)
-    })
-})
diff --git a/packages/oruga/src/components/datetimepicker/Datetimepicker.vue b/packages/oruga/src/components/datetimepicker/Datetimepicker.vue
deleted file mode 100644
index 25807a825..000000000
--- a/packages/oruga/src/components/datetimepicker/Datetimepicker.vue
+++ /dev/null
@@ -1,449 +0,0 @@
-<template>
-    <o-datepicker
-        v-if="!isMobile || inline"
-        ref="datepicker"
-        v-model="computedValue"
-        v-bind="datepicker"
-        :class="datepickerWrapperClasses"
-        :rounded="rounded"
-        :open-on-focus="openOnFocus"
-        :position="position"
-        :inline="inline"
-        :editable="editable"
-        :expanded="expanded"
-        :close-on-click="false"
-        :date-formatter="defaultDatetimeFormatter"
-        :date-parser="defaultDatetimeParser"
-        :min-date="minDate"
-        :max-date="maxDate"
-        :icon="icon"
-        :icon-right="iconRight"
-        :icon-right-clickable="iconRightClickable"
-        :icon-pack="iconPack"
-        :size="datepickerSize"
-        :placeholder="placeholder"
-        :range="false"
-        :disabled="disabled"
-        :mobile-native="isMobileNative"
-        :locale="locale"
-        :append-to-body="appendToBody"
-        @focus="onFocus"
-        @blur="onBlur"
-        @active-change="$emit('active-change', $event)"
-        @icon-right-click="$emit('icon-right-click')"
-        @change-month="$emit('change-month', $event)"
-        @change-year="$emit('change-year', $event)">
-        <template #footer>
-            <div :class="timepickerWrapperClasses">
-                <o-timepicker
-                    ref="timepicker"
-                    v-bind="timepicker"
-                    v-model="computedValue"
-                    inline
-                    :editable="editable"
-                    :min-time="minTime"
-                    :max-time="maxTime"
-                    :size="timepickerSize"
-                    :disabled="timepickerDisabled"
-                    :mobile-native="isMobileNative"
-                    :locale="locale"
-                />
-            </div>
-            <template v-if="$slots.footer !== undefined">
-                <slot name="footer" />
-            </template>
-        </template>
-    </o-datepicker>
-    <o-input
-        v-else
-        ref="input"
-        type="datetime-local"
-        autocomplete="off"
-        :value="formatNative(computedValue)"
-        :placeholder="placeholder"
-        :size="datepickerSize"
-        :icon="icon"
-        :icon-pack="iconPack"
-        :rounded="rounded"
-        :max="formatNative(maxDate)"
-        :min="formatNative(minDate)"
-        :disabled="disabled"
-        :readonly="false"
-        v-bind="$attrs"
-        :use-html5-validation="useHtml5Validation"
-        @change.native="onChangeNativePicker"
-        @focus="onFocus"
-        @blur="onBlur"
-        @invalid="onInvalid" />
-</template>
-
-<script>
-import FormElementMixin from '../../utils/FormElementMixin'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getValueByPath, isMobile, matchWithGroups } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-import Datepicker from '../datepicker/Datepicker'
-import Timepicker from '../timepicker/Timepicker'
-
-const AM = 'AM'
-const PM = 'PM'
-
-/**
- * An input with a simple dropdown/modal for selecting a date and time, uses native datetimepicker for mobile
- * @displayName Datetimepicker
- * @example ./examples/Datetimepicker.md
- */
-export default {
-    name: 'ODatetimepicker',
-    components: {
-        [Datepicker.name]: Datepicker,
-        [Timepicker.name]: Timepicker
-    },
-    configField: 'datetimepicker',
-    mixins: [FormElementMixin, BaseComponentMixin],
-    inheritAttrs: false,
-    props: {
-        /* @model */
-        value: {
-            type: Date
-        },
-        /* Enable input/typing. Note that you might have to set a custom datetime parser */
-        editable: {
-            type: Boolean,
-            default: false
-        },
-        /**
-         * Size of button, optional
-         * @values small, medium, large
-         */
-        size: String,
-        placeholder: String,
-        disabled: Boolean,
-        /**
-         * 	Icon name to be added on the right side
-         */
-        iconRight: String,
-        /**
-         * Make the icon right clickable
-         */
-        iconRightClickable: Boolean,
-        /* Datimepicker is shown inline, input is removed */
-        inline: Boolean,
-        /* Open datetimepicker on input focus */
-        openOnFocus: Boolean,
-        /**
-         * Optional, position of the datepicker relative to the input
-         * @values top-right, top-left, bottom-left
-         */
-        position: String,
-        /* Enable native datetimepicker on mobile */
-        mobileNative: {
-            type: Boolean,
-            default: true
-        },
-        /* Earliest datetime available for selection */
-        minDatetime: Date,
-        /* Latest datetime available for selection */
-        maxDatetime: Date,
-        /* Function to format datetime (Date type) to a string for displaying in the input */
-        datetimeFormatter: {
-            type: Function
-        },
-        /* Function to parse string to a datetime (Date type) for setting the component's datetime from the input */
-        datetimeParser: {
-            type: Function
-        },
-        /* Function used internally to create a new Date instance */
-        datetimeCreator: {
-            type: Function,
-            default: (date) => {
-                const datetimeCreator = getValueByPath(getOptions(), 'datetimepicker.datetimeCreator', undefined)
-                if (typeof datetimeCreator === 'function') {
-                    return datetimeCreator(date)
-                } else {
-                    return date
-                }
-            }
-        },
-        /**
-         * Properties and classes to bind to the internal DatePicker
-         */
-        datepicker: Object,
-        /**
-         * Properties and classes to bind to the internal TimePicker
-         */
-        timepicker: Object,
-        /* Accept a string with a BCP 47 language tag, or an array of such strings. See Unicode BCP 47 locale identifier */
-        locale: {
-            type: [String, Array],
-            default: () => {
-                return getValueByPath(getOptions(), 'locale')
-            }
-        },
-        /* Append datetimepicker calendar to body */
-        appendToBody: Boolean,
-        datepickerWrapperClass: [String, Function, Array],
-        timepickerWrapperClass: [String, Function, Array],
-    },
-    data() {
-        return {
-            newValue: this.value
-        }
-    },
-    computed: {
-        datepickerWrapperClasses() {
-            return [
-                this.computedClass('datepickerWrapperClass', 'o-dtpck__date')
-            ]
-        },
-        timepickerWrapperClasses() {
-            return [
-                this.computedClass('timepickerWrapperClass', 'o-dtpck__time')
-            ]
-        },
-        computedValue: {
-            get() {
-                return this.newValue
-            },
-            set(value) {
-                if (value) {
-                    let val = new Date(value.getTime())
-                    if (this.newValue) {
-                        // restore time part
-                        if ((value.getDate() !== this.newValue.getDate() ||
-                            value.getMonth() !== this.newValue.getMonth() ||
-                            value.getFullYear() !== this.newValue.getFullYear()) &&
-                            value.getHours() === 0 &&
-                            value.getMinutes() === 0 &&
-                            value.getSeconds() === 0) {
-                            val.setHours(this.newValue.getHours(),
-                                this.newValue.getMinutes(),
-                                this.newValue.getSeconds(), 0)
-                        }
-                    } else {
-                        val = this.datetimeCreator(value)
-                    }
-                    // check min and max range
-                    if (this.minDatetime && val < this.minDatetime) {
-                        val = this.minDatetime
-                    } else if (this.maxDatetime && val > this.maxDatetime) {
-                        val = this.maxDatetime
-                    }
-                    this.newValue = new Date(val.getTime())
-                } else {
-                    this.newValue = value
-                }
-                this.$emit('input', this.newValue)
-            }
-        },
-        localeOptions() {
-            return new Intl.DateTimeFormat(this.locale, {
-                year: 'numeric',
-                month: 'numeric',
-                day: 'numeric',
-                hour: 'numeric',
-                minute: 'numeric',
-                second: this.enableSeconds() ? 'numeric' : undefined
-            }).resolvedOptions()
-        },
-        dtf() {
-            return new Intl.DateTimeFormat(this.locale, {
-                year: this.localeOptions.year || 'numeric',
-                month: this.localeOptions.month || 'numeric',
-                day: this.localeOptions.day || 'numeric',
-                hour: this.localeOptions.hour || 'numeric',
-                minute: this.localeOptions.minute || 'numeric',
-                second: this.enableSeconds() ? this.localeOptions.second || 'numeric' : undefined,
-                hourCycle: !this.isHourFormat24() ? 'h12' : 'h23'
-            })
-        },
-        isMobileNative() {
-            return this.mobileNative
-        },
-        isMobile() {
-            return this.isMobileNative && isMobile.any()
-        },
-        minDate() {
-            if (!this.minDatetime) {
-                return this.datepicker ? this.datepicker.minDate : null
-            }
-            return new Date(this.minDatetime.getFullYear(),
-                this.minDatetime.getMonth(),
-                this.minDatetime.getDate(), 0, 0, 0, 0)
-        },
-        maxDate() {
-            if (!this.maxDatetime) {
-                return this.datepicker ? this.datepicker.maxDate : null
-            }
-            return new Date(this.maxDatetime.getFullYear(),
-                this.maxDatetime.getMonth(),
-                this.maxDatetime.getDate(), 0, 0, 0, 0)
-        },
-        minTime() {
-            if (!this.minDatetime || (this.newValue === null || typeof this.newValue === 'undefined')
-                || this.newValue.getFullYear() != this.minDatetime.getFullYear()
-                || this.newValue.getMonth() != this.minDatetime.getMonth()
-                || this.newValue.getDate() != this.minDatetime.getDate() ) {
-                return this.timepicker ? this.timepicker.minTime : null
-            }
-            return this.minDatetime
-        },
-        maxTime() {
-            if (!this.maxDatetime || (this.newValue === null || typeof this.newValue === 'undefined')
-                || this.newValue.getFullYear() != this.maxDatetime.getFullYear()
-                || this.newValue.getMonth() != this.maxDatetime.getMonth()
-                || this.newValue.getDate() != this.maxDatetime.getDate() ) {
-                return this.timepicker ? this.timepicker.maxTime : null
-            }
-            return this.maxDatetime
-        },
-        datepickerSize() {
-            return this.datepicker && this.datepicker.size
-                ? this.datepicker.size : this.size
-        },
-        timepickerSize() {
-            return this.timepicker && this.timepicker.size
-                ? this.timepicker.size : this.size
-        },
-        timepickerDisabled() {
-            return this.timepicker && this.timepicker.disabled
-                ? this.timepicker.disabled : this.disabled
-        }
-    },
-    watch: {
-        value() {
-            this.newValue = this.value
-        }
-    },
-    methods: {
-        enableSeconds() {
-            if (this.$refs.timepicker) {
-                return this.$refs.timepicker.enableSeconds
-            }
-            return false
-        },
-        isHourFormat24() {
-            if (this.$refs.timepicker) {
-                return this.$refs.timepicker.isHourFormat24
-            }
-            return !this.localeOptions.hour12
-        },
-        defaultDatetimeParser(date) {
-            const datetimeParser = getValueByPath(getOptions(), 'datetimepicker.datetimeParser', undefined)
-            if (typeof this.datetimeParser === 'function') {
-                return this.datetimeParser(date)
-            } else if (typeof datetimeParser === 'function') {
-                return datetimeParser(date)
-            } else {
-                if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                    let dayPeriods = [AM, PM, AM.toLowerCase(), PM.toLowerCase()]
-                    if (this.$refs.timepicker) {
-                        dayPeriods.push(this.$refs.timepicker.amString)
-                        dayPeriods.push(this.$refs.timepicker.pmString)
-                    }
-                    const parts = this.dtf.formatToParts(new Date())
-                    const formatRegex = parts.map((part, idx) => {
-                        if (part.type === 'literal') {
-                            if (idx + 1 < parts.length && parts[idx + 1].type === 'hour') {
-                                return `[^\\d]+`
-                            }
-                            return part.value.replace(/ /g, '\\s?')
-                        } else if (part.type === 'dayPeriod') {
-                            return `((?!=<${part.type}>)(${dayPeriods.join('|')})?)`
-                        }
-                        return `((?!=<${part.type}>)\\d+)`
-                    }).join('')
-                    const datetimeGroups = matchWithGroups(formatRegex, date)
-
-                    // We do a simple validation for the group.
-                    // If it is not valid, it will fallback to Date.parse below
-                    if (
-                        datetimeGroups.year &&
-                        datetimeGroups.year.length === 4 &&
-                        datetimeGroups.month &&
-                        datetimeGroups.month <= 12 &&
-                        datetimeGroups.day &&
-                        datetimeGroups.day <= 31 &&
-                        datetimeGroups.hour &&
-                        datetimeGroups.hour >= 0 &&
-                        datetimeGroups.hour < 24 &&
-                        datetimeGroups.minute &&
-                        datetimeGroups.minute >= 0 &&
-                        datetimeGroups.minute <= 59
-                    ) {
-                        const d = new Date(
-                            datetimeGroups.year,
-                            datetimeGroups.month - 1,
-                            datetimeGroups.day,
-                            datetimeGroups.hour,
-                            datetimeGroups.minute,
-                            datetimeGroups.second || 0)
-                        return d
-                    }
-                }
-
-                return new Date(Date.parse(date))
-            }
-        },
-        defaultDatetimeFormatter(date) {
-             const datetimeFormatter = getValueByPath(getOptions(), 'datetimepicker.datetimeFormatter', undefined)
-            if (typeof this.datetimeFormatter === 'function') {
-                return this.datetimeFormatter(date)
-            } else if (typeof datetimeFormatter === 'function') {
-                return datetimeFormatter(date)
-            } else {
-                return this.dtf.format(date)
-            }
-        },
-        /*
-        * Parse date from string
-        */
-        onChangeNativePicker(event) {
-            const date = event.target.value
-            const s = date ? date.split(/\D/) : []
-            if (s.length >= 5) {
-                const year = parseInt(s[0], 10)
-                const month = parseInt(s[1], 10) - 1
-                const day = parseInt(s[2], 10)
-                const hours = parseInt(s[3], 10)
-                const minutes = parseInt(s[4], 10)
-                // Seconds are omitted intentionally; they are unsupported by input
-                // type=datetime-local and cause the control to fail native validation
-                this.computedValue = new Date(year, month, day, hours, minutes)
-            } else {
-                this.computedValue = null
-            }
-        },
-        formatNative(value) {
-            const date = new Date(value)
-            if (value && !isNaN(date)) {
-                const year = date.getFullYear()
-                const month = date.getMonth() + 1
-                const day = date.getDate()
-                const hours = date.getHours()
-                const minutes = date.getMinutes()
-                const seconds = date.getSeconds()
-                return year + '-' +
-                    ((month < 10 ? '0' : '') + month) + '-' +
-                    ((day < 10 ? '0' : '') + day) + 'T' +
-                    ((hours < 10 ? '0' : '') + hours) + ':' +
-                    ((minutes < 10 ? '0' : '') + minutes) + ':' +
-                    ((seconds < 10 ? '0' : '') + seconds)
-            }
-            return ''
-        },
-        toggle() {
-            this.$refs.datepicker.toggle()
-        }
-    },
-    mounted() {
-        if (!this.isMobile || this.inline) {
-            // $refs attached, it's time to refresh datepicker (input)
-            if (this.newValue) {
-                this.$refs.datepicker.$forceUpdate()
-            }
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/datetimepicker/Inspector.vue b/packages/oruga/src/components/datetimepicker/Inspector.vue
deleted file mode 100644
index 6e1ade46e..000000000
--- a/packages/oruga/src/components/datetimepicker/Inspector.vue
+++ /dev/null
@@ -1,53 +0,0 @@
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select datetime">
-                    <o-datetimepicker
-                        v-bind="s"
-                        placeholder="Click to select..."
-                        icon="calendar"
-                        horizontal-time-picker
-                        ref="datetimepicker"
-                    >
-                    </o-datetimepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openDatetimePicker() {
-            setTimeout(() => {
-                this.$refs.datetimepicker.$el.getElementsByClassName('o-drop__trigger')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "datepickerWrapperClass",
-                    description: "Class of the Datepicker wrapper",
-                },
-                {
-                    class: "timepickerWrapperClass",
-                    description: "Class of the Timepicker wrapper",
-                    action: () => {
-                        this.openDatetimePicker();
-                    }
-                }
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
diff --git a/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md b/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md
deleted file mode 100644
index 49be55a88..000000000
--- a/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md
+++ /dev/null
@@ -1,130 +0,0 @@
-
-## Examples
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <div class="control">
-                <o-switch v-model="showWeekNumber">Show week number</o-switch>
-            </div>
-            <div class="control">
-                <o-switch v-model="enableSeconds">Enable seconds</o-switch>
-            </div>
-            <o-field label="Locale">
-                <o-select v-model="locale">
-                    <option :value="undefined"></option>
-                    <option value="de-DE">de-DE</option>
-                    <option value="en-CA">en-CA</option>
-                    <option value="en-GB">en-GB</option>
-                    <option value="en-US">en-US</option>
-                    <option value="es-ES">es-ES</option>
-                    <option value="es-MX">es-MX</option>
-                    <option value="fr-CA">fr-CA</option>
-                    <option value="fr-FR">fr-FR</option>
-                    <option value="it-IT">it-IT</option>
-                    <option value="ja-JP">ja-JP</option>
-                    <option value="pt-BR">pt-BR</option>
-                    <option value="ru-RU">ru-RU</option>
-                    <option value="zn-CN">zn-CN</option>
-                </o-select>
-            </o-field>
-            <o-field label="Hour format">
-                <o-select v-model="hourFormat">
-                    <option :value="undefined"></option>
-                    <option value="12">12</option>
-                    <option value="24">24</option>
-                </o-select>
-            </o-field>
-        </o-field>
-        <o-field label="Select datetime">
-            <o-datetimepicker
-                rounded
-                placeholder="Click to select..."
-                icon="calendar"
-                :locale="locale"
-                :datepicker="{ showWeekNumber }"
-                :timepicker="{ enableSeconds, hourFormat }">
-            </o-datetimepicker>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            showWeekNumber: false,
-            enableSeconds: false,
-            hourFormat: undefined, // Browser locale
-            locale: undefined // Browser locale
-        }
-    }
-}
-</script>
-```
-:::
-
-### Footer slot
-
-::: demo
-```html
-<template>
-    <o-field label="Select datetime">
-        <o-datetimepicker v-model="datetime"
-            placeholder="Click to select...">
-            <div class="buttons-footer">
-                <o-button variant="primary"
-                    @click="datetime = new Date()">
-                    <o-icon icon="calendar"></o-icon>
-                    <span>Today</span>
-                </o-button>
-                <o-button variant="danger"
-                    @click="datetime = null">
-                    <o-icon icon="times"></o-icon>
-                    <span>Clear</span>
-                </o-button>
-            </div>
-        </o-datetimepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                datetime: new Date()
-            }
-        }
-    }
-</script>
-
-<style>
-.buttons-footer {
-    margin-top: 1rem;
-}
-</style>
-```
-:::
-
-### Inline
-
-
-::: demo
-```html
-<template>
-    <o-datetimepicker v-model="datetime" inline></o-datetimepicker>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                datetime: new Date()
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/datetimepicker/index.js b/packages/oruga/src/components/datetimepicker/index.js
deleted file mode 100644
index 1899ac674..000000000
--- a/packages/oruga/src/components/datetimepicker/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Datetimepicker from './Datetimepicker'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Datetimepicker)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Datetimepicker as BDatetimepicker
-}
diff --git a/packages/oruga/src/components/dropdown/Dropdown.spec.js b/packages/oruga/src/components/dropdown/Dropdown.spec.js
deleted file mode 100644
index 700bc93e5..000000000
--- a/packages/oruga/src/components/dropdown/Dropdown.spec.js
+++ /dev/null
@@ -1,223 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODropdown from '@components/dropdown/Dropdown'
-
-describe('ODropdown', () => {
-    const val1 = 'val1'
-    const val2 = 'val2'
-    let wrapper
-
-    beforeEach(() => {
-        wrapper = shallowMount(ODropdown, {
-            slots: {
-                trigger: '<button class="trigger">trigger</button>'
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ODropdown')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage props validator', () => {
-        const position = wrapper.vm.$options.props.position
-
-        expect(position.type).toBe(String)
-        expect(position.validator && position.validator('top')).toBeFalsy()
-        expect(position.validator && position.validator('top-left')).toBeTruthy()
-        expect(position.validator && position.validator('top-right')).toBeTruthy()
-        expect(position.validator && position.validator('bottom-left')).toBeTruthy()
-    })
-
-    it('react accordingly when changing v-model', async () => {
-        const value = 'value'
-        wrapper.setProps({ value })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.selected).toBe(value)
-    })
-
-    it('emit activity when it changes', async () => {
-        wrapper.vm.updateAppendToBody = jest.fn(() => wrapper.vm.updateAppendToBody)
-        wrapper.setProps({ appendToBody: true })
-
-        wrapper.vm.isActive = true
-        await wrapper.vm.$nextTick()
-        expect(wrapper.emitted()['active-change']).toBeTruthy()
-
-        expect(wrapper.vm.updateAppendToBody).toHaveBeenCalled()
-    })
-
-    it('react accordingly on mouse over', () => {
-        const trigger = wrapper.find({ ref: 'trigger' })
-        trigger.trigger('mouseenter')
-        expect(wrapper.vm.isHoverable).toBeFalsy()
-
-        wrapper.setProps({ triggers: ['hover'] })
-        trigger.trigger('mouseenter')
-        expect(wrapper.vm.isHoverable).toBeTruthy()
-    })
-
-    it('react accordingly when new item is selected', () => {
-        jest.useFakeTimers()
-
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([val1])
-        expect(wrapper.emitted().change).toHaveLength(1)
-        expect(wrapper.emitted().change[0]).toEqual([val1])
-
-        wrapper.setProps({
-            hoverable: true,
-            closeOnClick: true
-        })
-
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(2)
-        expect(wrapper.emitted().input[1]).toEqual([val2])
-        expect(wrapper.emitted().change).toHaveLength(2)
-        expect(wrapper.emitted().change[1]).toEqual([val2])
-
-        expect(wrapper.vm.isHoverable).toBeFalsy()
-    })
-
-    it('react accordingly when same item is selected', () => {
-        jest.useFakeTimers()
-
-        // will emit only input event
-        wrapper.setProps({ value: val1 })
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([val1])
-    })
-
-    it('react accordingly when an item is selected with multiple prop', () => {
-        jest.useFakeTimers()
-        wrapper.setProps({
-            multiple: true
-        })
-        wrapper.vm.selected = null
-
-        // no initial value, will return an array with the only selected option
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([[val1]])
-        expect(wrapper.emitted().change).toHaveLength(1)
-        expect(wrapper.emitted().change[0]).toEqual([[val1]])
-
-        // will return an array with the new value appended
-        wrapper.setProps({ value: [val1] })
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(2)
-        expect(wrapper.emitted().input[1]).toEqual([[val1, val2]])
-        expect(wrapper.emitted().change).toHaveLength(2)
-        expect(wrapper.emitted().change[1]).toEqual([[val1, val2]])
-
-        // will remove the last selection since it was part of the list
-        wrapper.setProps({ value: [val1, val2] })
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(3)
-        expect(wrapper.emitted().input[2]).toEqual([[val1]])
-        expect(wrapper.emitted().change).toHaveLength(3)
-        expect(wrapper.emitted().change[2]).toEqual([[val1]])
-    })
-
-    it('manage the whitelisted items accordingly', () => {
-        let el = wrapper.vm.$refs.dropdownMenu
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        // el = wrapper.vm.$refs.dropdownMenu.childNodes[0]
-        // expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        wrapper.vm.$refs.dropdownMenu = undefined
-
-        el = wrapper.vm.$refs.trigger
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        el = wrapper.vm.$refs.trigger.querySelector('.trigger')
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        wrapper.vm.$refs.trigger = undefined
-
-        el = document.createElement('div')
-        expect(wrapper.vm.isInWhiteList(el)).toBeFalsy()
-    })
-
-    it('manage clicking outside accordingly', () => {
-        const el = document.createElement('div')
-        const event = {
-            target: el
-        }
-
-        wrapper.vm.isActive = true
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        wrapper.vm.isActive = true
-        wrapper.vm.clickedOutside({
-            target: wrapper.vm.$refs.trigger
-        })
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ inline: true })
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ canClose: false })
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('close on escape', () => {
-        wrapper.vm.isActive = true
-        const event = new KeyboardEvent('keyup', { 'key': 'Escape' })
-        wrapper.vm.keyPress({})
-        wrapper.vm.keyPress(event)
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ canClose: ['click'] })
-        wrapper.vm.keyPress(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('manage toggle function accordingly', (done) => {
-        wrapper.vm.isActive = true
-        wrapper.setProps({ disabled: true })
-        wrapper.vm.toggle()
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.setProps({ disabled: false })
-        wrapper.vm.toggle()
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        jest.useFakeTimers()
-        wrapper.vm.isActive = false
-        wrapper.vm.toggle()
-        wrapper.vm.$nextTick(() => {
-            expect(setTimeout).toHaveBeenCalled()
-            jest.advanceTimersByTime(1)
-            expect(wrapper.vm.isActive).toBeTruthy()
-            done()
-        })
-    })
-
-    it('reset events before destroy', () => {
-        document.removeEventListener = jest.fn()
-
-        wrapper.destroy()
-
-        expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function))
-        expect(document.removeEventListener).toBeCalledWith('keyup', expect.any(Function))
-    })
-
-    it('has configurable menu tag', () => {
-        wrapper.setProps({menuTag: 'ul'})
-        wrapper.find('ul.o-drop__menu').exists()
-    })
-})
diff --git a/packages/oruga/src/components/dropdown/Dropdown.vue b/packages/oruga/src/components/dropdown/Dropdown.vue
deleted file mode 100644
index c9f01886d..000000000
--- a/packages/oruga/src/components/dropdown/Dropdown.vue
+++ /dev/null
@@ -1,481 +0,0 @@
-<template>
-    <div
-        ref="dropdown"
-        :class="rootClasses"
-    >
-        <div
-            v-if="!inline"
-            :tabindex="disabled ? null : triggerTabindex"
-            ref="trigger"
-            :class="triggerClasses"
-            @click="onClick"
-            @contextmenu.prevent="onContextMenu"
-            @mouseenter="onHover"
-            @mouseleave="isHoverable = false"
-            @focus.capture="onFocus"
-            aria-haspopup="true">
-            <slot name="trigger" :active="isActive"/>
-        </div>
-
-        <transition :name="animation">
-            <div
-                v-if="isMobileModal"
-                v-show="isActive"
-                :class="menuMobileOverlayClasses"
-                :aria-hidden="!isActive"
-            />
-        </transition>
-        <transition :name="animation">
-            <div
-                v-show="(!disabled && (isActive || isHoverable)) || inline"
-                ref="dropdownMenu"
-                :is="menuTag"
-                :class="menuClasses"
-                :aria-hidden="!isActive"
-                :role="ariaRole"
-                :aria-modal="!inline"
-                :style="menuStyle"
-                @mouseenter="onHover"
-                @mouseleave="isHoverable = false"
-                v-trap-focus="trapFocus">
-                <slot/>
-            </div>
-        </transition>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import trapFocus from '../../directives/trapFocus'
-import { getOptions } from '../../utils/config'
-import { removeElement, createAbsoluteElement, toCssDimension, getValueByPath } from '../../utils/helpers'
-
-/**
- * Dropdowns are very versatile, can used as a quick menu or even like a select for discoverable content
- * @displayName Dropdown
- * @requires ./DropdownItem.vue
- * @example ./examples/Dropdown.md
- * @style _dropdown.scss
- */
-export default {
-    name: 'ODropdown',
-    directives: {
-        trapFocus
-    },
-    configField: 'dropdown',
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    provide() {
-        return {
-            $dropdown: this
-        }
-    },
-    props: {
-        /** @model */
-        value: {
-            type: [String, Number, Boolean, Object, Array],
-            default: null
-        },
-        /**
-         * Dropdown disabled
-         */
-        disabled: Boolean,
-        /**
-         * Dropdown content (items) are shown inline, trigger is removed
-         */
-        inline: Boolean,
-        /**
-         * Dropdown content will be scrollable
-         */
-        scrollable: Boolean,
-        /**
-         * Max height of dropdown content
-         */
-        maxHeight: {
-            type: [String, Number],
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.maxHeight', 200)
-            }
-        },
-        /**
-         * Optional, position of the dropdown relative to the trigger
-         * @values top-right, top-left, bottom-left
-         */
-        position: {
-            type: String,
-            validator(value) {
-                return [
-                    'top-right',
-                    'top-left',
-                    'bottom-left',
-                    'bottom-right'
-                ].indexOf(value) > -1
-            }
-        },
-        /**
-         * Dropdown content (items) are shown into a modal on mobile
-         */
-        mobileModal: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.mobileModal', true)
-            }
-        },
-        /**
-         * Role attribute to be passed to list container for better accessibility. Use menu only in situations where your dropdown is related to navigation menus
-         * @values list, menu, dialog
-         */
-        ariaRole: {
-            type: String,
-            validator(value) {
-                return [
-                    'menu',
-                    'list',
-                    'dialog'
-                ].indexOf(value) > -1
-            },
-            default: null
-        },
-        /**
-         * Custom animation (transition name)
-         */
-        animation: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.animation', 'fade')
-            }
-        },
-        /**
-         * Allows multiple selections
-         */
-        multiple: Boolean,
-        /**
-         * Trap focus inside the dropdown.
-         */
-        trapFocus: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.trapFocus', true)
-            }
-        },
-        /**
-         * Close dropdown when content is clicked
-         */
-        closeOnClick: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Can close dropdown by pressing escape or by clicking outside
-         * @values escape, outside
-         */
-        canClose: {
-            type: [Array, Boolean],
-            default: true
-        },
-        /**
-         * Dropdown will be expanded (full-width)
-         */
-        expanded: Boolean,
-        /**
-         * Dropdown will be triggered by any events
-         * @values click, hover, contextmenu, focus
-         */
-        triggers: {
-            type: Array,
-            default: () => ['click']
-        },
-        /**
-         * Dropdown menu tag name
-         */
-        menuTag: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.menuTag', 'div')
-            }
-        },
-        /**
-         * Set the tabindex attribute on the dropdown trigger div (-1 to prevent selection via tab key)
-         */
-         triggerTabindex: {
-            type: Number,
-            default: 0
-        },
-        /**
-         * Append dropdown content to body
-         */
-        appendToBody: Boolean,
-        /**
-        * @ignore
-        */
-        appendToBodyCopyParent: Boolean,
-        rootClass: [String, Function, Array],
-        triggerClass: [String, Function, Array],
-        inlineClass: [String, Function, Array],
-        menuMobileOverlayClass: [String, Function, Array],
-        menuClass: [String, Function, Array],
-        menuPositionClass: [String, Function, Array],
-        menuActiveClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        expandedClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            selected: this.value,
-            isActive: false,
-            isHoverable: false,
-            bodyEl: undefined // Used to append to body
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-drop'),
-                { [this.computedClass('disabledClass', 'o-drop--disabled')]: this.disabled },
-                { [this.computedClass('expandedClass', 'o-drop--expanded')]: this.expanded },
-                { [this.computedClass('inlineClass', 'o-drop--inline')]: this.inline },
-                { [this.computedClass('mobileClass', 'o-drop--mobile')]: this.isMobileModal && this.isMatchMedia && !this.hoverable },
-            ]
-        },
-        triggerClasses() {
-            return [
-                this.computedClass('triggerClass', 'o-drop__trigger')
-            ]
-        },
-        menuMobileOverlayClasses() {
-            return [
-                this.computedClass('menuMobileOverlayClass', 'o-drop__overlay')
-            ]
-        },
-        menuClasses() {
-            return [
-                this.computedClass('menuClass', 'o-drop__menu'),
-                { [this.computedClass('menuPositionClass', 'o-drop__menu--', this.position)]: this.position },
-                { [this.computedClass('menuActiveClass', 'o-drop__menu--active')]: (this.isActive || this.inline) }
-            ]
-        },
-        isMobileModal() {
-            return this.mobileModal && !this.inline
-        },
-        cancelOptions() {
-            return typeof this.canClose === 'boolean'
-                ? this.canClose
-                    ? ['escape', 'outside']
-                    : []
-                : this.canClose
-        },
-        menuStyle() {
-            return {
-                maxHeight: this.scrollable ? toCssDimension(this.maxHeight) : null,
-                overflow: this.scrollable ? 'auto' : null
-            }
-        },
-        hoverable() {
-            return this.triggers.indexOf('hover') >= 0
-        }
-    },
-    watch: {
-        /**
-        * When v-model is changed set the new selected item.
-        */
-        value(value) {
-            this.selected = value
-        },
-        /**
-        * Emit event when isActive value is changed.
-        */
-        isActive(value) {
-            this.$emit('active-change', value)
-            if (this.appendToBody) {
-                this.$nextTick(() => {
-                    this.updateAppendToBody()
-                })
-            }
-        }
-    },
-    methods: {
-        /**
-         * Click listener from DropdownItem.
-         *   1. Set new selected item.
-         *   2. Emit input event to update the user v-model.
-         *   3. Close the dropdown.
-         */
-        selectItem(value) {
-            if (this.multiple) {
-                if (this.selected) {
-                    if (this.selected.indexOf(value) === -1) {
-                        // Add value
-                        this.selected = [...this.selected, value]
-                    } else {
-                        // Remove value
-                        this.selected = this.selected.filter((val) => val !== value)
-                    }
-                } else {
-                    this.selected = [value]
-                }
-                this.$emit('change', this.selected)
-            } else {
-                if (this.selected !== value) {
-                    this.selected = value
-                    this.$emit('change', this.selected)
-                }
-            }
-            this.$emit('input', this.selected)
-            if (!this.multiple) {
-                this.isActive = !this.closeOnClick
-                if (this.hoverable && this.closeOnClick) {
-                    this.isHoverable = false
-                }
-            }
-        },
-
-        /**
-        * White-listed items to not close when clicked.
-        */
-        isInWhiteList(el) {
-            if (el === this.$refs.dropdownMenu) return true
-            if (el === this.$refs.trigger) return true
-            // All chidren from dropdown
-            if (this.$refs.dropdownMenu !== undefined) {
-                const children = this.$refs.dropdownMenu.querySelectorAll('*')
-                for (const child of children) {
-                    if (el === child) {
-                        return true
-                    }
-                }
-            }
-            // All children from trigger
-            if (this.$refs.trigger !== undefined) {
-                const children = this.$refs.trigger.querySelectorAll('*')
-                for (const child of children) {
-                    if (el === child) {
-                        return true
-                    }
-                }
-            }
-            return false
-        },
-
-        /**
-        * Close dropdown if clicked outside.
-        */
-        clickedOutside(event) {
-            if (this.cancelOptions.indexOf('outside') < 0) return
-            if (this.inline) return
-
-            if (!this.isInWhiteList(event.target)) this.isActive = false
-        },
-
-        /**
-         * Keypress event that is bound to the document
-         */
-        keyPress({ key }) {
-            if (this.isActive && (key === 'Escape' || key === 'Esc')) {
-                if (this.cancelOptions.indexOf('escape') < 0) return
-                this.isActive = false
-            }
-        },
-
-        onClick() {
-            if (this.triggers.indexOf('click') < 0) return
-            this.toggle()
-        },
-        onContextMenu() {
-            if (this.triggers.indexOf('contextmenu') < 0) return
-            this.toggle()
-        },
-        onHover() {
-            if (this.triggers.indexOf('hover') < 0) return
-            this.isHoverable = true
-        },
-        onFocus() {
-            if (this.triggers.indexOf('focus') < 0) return
-            this.toggle()
-        },
-
-        /**
-        * Toggle dropdown if it's not disabled.
-        */
-        toggle() {
-            if (this.disabled) return
-
-            if (!this.isActive) {
-                // if not active, toggle after clickOutside event
-                // this fixes toggling programmatic
-                this.$nextTick(() => {
-                    const value = !this.isActive
-                    this.isActive = value
-                    // Vue 2.6.x ???
-                    setTimeout(() => (this.isActive = value))
-                })
-            } else {
-                this.isActive = !this.isActive
-            }
-        },
-
-        updateAppendToBody() {
-            const dropdownMenu = this.$refs.dropdownMenu
-            const trigger = this.$refs.trigger
-            if (dropdownMenu && trigger) {
-                // update wrapper dropdown
-                const dropdown = this.$data.bodyEl.children[0]
-                dropdown.classList.forEach((item) => dropdown.classList.remove(...item.split(' ')))
-                this.rootClasses.forEach((item) => {
-                    if (item) {
-                        if (typeof item === 'object') {
-                            Object.keys(item).filter(key => key && item[key]).forEach(
-                                key => dropdown.classList.add(key))
-                        } else {
-                            dropdown.classList.add(...item.split(' '))
-                        }
-                    }
-                })
-                if (this.appendToBodyCopyParent) {
-                    const parentNode = this.$refs.dropdown.parentNode
-                    const parent = this.$data.bodyEl
-                    parent.classList.forEach((item) => parent.classList.remove(...item.split(' ')))
-                    parentNode.classList.forEach((item) => parent.classList.add(...item.split(' ')))
-                }
-                const rect = trigger.getBoundingClientRect()
-                let top = rect.top + window.scrollY
-                let left = rect.left + window.scrollX
-                if (!this.position || this.position.indexOf('bottom') >= 0) {
-                    top += trigger.clientHeight
-                } else {
-                    top -= dropdownMenu.clientHeight
-                }
-                if (this.position && this.position.indexOf('left') >= 0) {
-                    left -= (dropdownMenu.clientWidth - trigger.clientWidth)
-                }
-                dropdownMenu.style.position = 'absolute'
-                dropdownMenu.style.top = `${top}px`
-                dropdownMenu.style.left = `${left}px`
-                dropdownMenu.style.zIndex = '9999'
-            }
-        }
-    },
-    mounted() {
-        if (this.appendToBody) {
-            this.$data.bodyEl = createAbsoluteElement(this.$refs.dropdownMenu)
-            this.updateAppendToBody()
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('click', this.clickedOutside)
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('click', this.clickedOutside)
-            document.removeEventListener('keyup', this.keyPress)
-        }
-        if (this.appendToBody) {
-            removeElement(this.$data.bodyEl)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/dropdown/DropdownItem.spec.js b/packages/oruga/src/components/dropdown/DropdownItem.spec.js
deleted file mode 100644
index 29753a606..000000000
--- a/packages/oruga/src/components/dropdown/DropdownItem.spec.js
+++ /dev/null
@@ -1,218 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ODropdown from '@components/dropdown/Dropdown'
-
-describe('ODropdown', () => {
-    const val1 = 'val1'
-    const val2 = 'val2'
-    let wrapper
-
-    beforeEach(() => {
-        wrapper = shallowMount(ODropdown, {
-            slots: {
-                trigger: '<button class="trigger">trigger</button>'
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ODropdown')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage props validator', () => {
-        const position = wrapper.vm.$options.props.position
-
-        expect(position.type).toBe(String)
-        expect(position.validator && position.validator('top')).toBeFalsy()
-        expect(position.validator && position.validator('top-left')).toBeTruthy()
-        expect(position.validator && position.validator('top-right')).toBeTruthy()
-        expect(position.validator && position.validator('bottom-left')).toBeTruthy()
-    })
-
-    it('react accordingly when changing v-model', async () => {
-        const value = 'value'
-        wrapper.setProps({ value })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.selected).toBe(value)
-    })
-
-    it('emit activity when it changes', async () => {
-        wrapper.vm.updateAppendToBody = jest.fn(() => wrapper.vm.updateAppendToBody)
-        wrapper.setProps({ appendToBody: true })
-
-        wrapper.vm.isActive = true
-        await wrapper.vm.$nextTick()
-        expect(wrapper.emitted()['active-change']).toBeTruthy()
-
-        expect(wrapper.vm.updateAppendToBody).toHaveBeenCalled()
-    })
-
-    it('react accordingly on mouse over', () => {
-        const trigger = wrapper.find({ ref: 'trigger' })
-        trigger.trigger('mouseenter')
-        expect(wrapper.vm.isHoverable).toBeFalsy()
-
-        wrapper.setProps({ triggers: ['hover'] })
-        trigger.trigger('mouseenter')
-        expect(wrapper.vm.isHoverable).toBeTruthy()
-    })
-
-    it('react accordingly when new item is selected', () => {
-        jest.useFakeTimers()
-
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([val1])
-        expect(wrapper.emitted().change).toHaveLength(1)
-        expect(wrapper.emitted().change[0]).toEqual([val1])
-
-        wrapper.setProps({
-            hoverable: true,
-            closeOnClick: true
-        })
-
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(2)
-        expect(wrapper.emitted().input[1]).toEqual([val2])
-        expect(wrapper.emitted().change).toHaveLength(2)
-        expect(wrapper.emitted().change[1]).toEqual([val2])
-
-        expect(wrapper.vm.isHoverable).toBeFalsy()
-    })
-
-    it('react accordingly when same item is selected', () => {
-        jest.useFakeTimers()
-
-        // will emit only input event
-        wrapper.setProps({ value: val1 })
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([val1])
-    })
-
-    it('react accordingly when an item is selected with multiple prop', () => {
-        jest.useFakeTimers()
-        wrapper.setProps({
-            multiple: true
-        })
-        wrapper.vm.selected = null
-
-        // no initial value, will return an array with the only selected option
-        wrapper.vm.selectItem(val1)
-        expect(wrapper.emitted().input).toHaveLength(1)
-        expect(wrapper.emitted().input[0]).toEqual([[val1]])
-        expect(wrapper.emitted().change).toHaveLength(1)
-        expect(wrapper.emitted().change[0]).toEqual([[val1]])
-
-        // will return an array with the new value appended
-        wrapper.setProps({ value: [val1] })
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(2)
-        expect(wrapper.emitted().input[1]).toEqual([[val1, val2]])
-        expect(wrapper.emitted().change).toHaveLength(2)
-        expect(wrapper.emitted().change[1]).toEqual([[val1, val2]])
-
-        // will remove the last selection since it was part of the list
-        wrapper.setProps({ value: [val1, val2] })
-        wrapper.vm.selectItem(val2)
-        expect(wrapper.emitted().input).toHaveLength(3)
-        expect(wrapper.emitted().input[2]).toEqual([[val1]])
-        expect(wrapper.emitted().change).toHaveLength(3)
-        expect(wrapper.emitted().change[2]).toEqual([[val1]])
-    })
-
-    it('manage the whitelisted items accordingly', () => {
-        let el = wrapper.vm.$refs.dropdownMenu
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        // el = wrapper.vm.$refs.dropdownMenu.childNodes[0]
-        // expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        wrapper.vm.$refs.dropdownMenu = undefined
-
-        el = wrapper.vm.$refs.trigger
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        el = wrapper.vm.$refs.trigger.querySelector('.trigger')
-        expect(wrapper.vm.isInWhiteList(el)).toBeTruthy()
-
-        wrapper.vm.$refs.trigger = undefined
-
-        el = document.createElement('div')
-        expect(wrapper.vm.isInWhiteList(el)).toBeFalsy()
-    })
-
-    it('manage clicking outside accordingly', () => {
-        const el = document.createElement('div')
-        const event = {
-            target: el
-        }
-
-        wrapper.vm.isActive = true
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        wrapper.vm.isActive = true
-        wrapper.vm.clickedOutside({
-            target: wrapper.vm.$refs.trigger
-        })
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ inline: true })
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ canClose: false })
-        wrapper.vm.clickedOutside(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('close on escape', () => {
-        wrapper.vm.isActive = true
-        const event = new KeyboardEvent('keyup', { 'key': 'Escape' })
-        wrapper.vm.keyPress({})
-        wrapper.vm.keyPress(event)
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        wrapper.vm.isActive = true
-        wrapper.setProps({ canClose: ['click'] })
-        wrapper.vm.keyPress(event)
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('manage toggle function accordingly', (done) => {
-        wrapper.vm.isActive = true
-        wrapper.setProps({ disabled: true })
-        wrapper.vm.toggle()
-        expect(wrapper.vm.isActive).toBeTruthy()
-
-        wrapper.setProps({ disabled: false })
-        wrapper.vm.toggle()
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        jest.useFakeTimers()
-        wrapper.vm.isActive = false
-        wrapper.vm.toggle()
-        wrapper.vm.$nextTick(() => {
-            expect(setTimeout).toHaveBeenCalled()
-            jest.advanceTimersByTime(1)
-            expect(wrapper.vm.isActive).toBeTruthy()
-            done()
-        })
-    })
-
-    it('reset events before destroy', () => {
-        document.removeEventListener = jest.fn()
-
-        wrapper.destroy()
-
-        expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function))
-        expect(document.removeEventListener).toBeCalledWith('keyup', expect.any(Function))
-    })
-})
\ No newline at end of file
diff --git a/packages/oruga/src/components/dropdown/DropdownItem.vue b/packages/oruga/src/components/dropdown/DropdownItem.vue
deleted file mode 100644
index 8dfafebdd..000000000
--- a/packages/oruga/src/components/dropdown/DropdownItem.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
-    <component
-        :is="tag"
-        :class="rootClasses"
-        @click="selectItem"
-        :role="ariaRoleItem"
-        :tabindex="tabindex">
-        <slot/>
-    </component>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * @displayName Dropdown Item
- */
-export default {
-    name: 'ODropdownItem',
-    mixins: [BaseComponentMixin],
-    configField: 'dropdown',
-    inject: ["$dropdown"],
-    props: {
-        /**
-         * The value that will be returned on events and v-model
-         */
-        value: {
-            type: [String, Number, Boolean, Object, Array],
-            default: null
-        },
-        /**
-         * Item is disabled
-         */
-        disabled: Boolean,
-        /**
-         * Item is clickable and emit an event
-         */
-        clickable: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Dropdown item tag name
-         */
-        tag: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'dropdown.itemTag', 'div')
-            }
-        },
-        tabindex: {
-            type: [Number, String],
-            default: 0
-        },
-        ariaRole: {
-            type: String,
-            default: ''
-        },
-        itemClass: [String, Function, Array],
-        itemActiveClass: [String, Function, Array],
-        itemDisabledClass: [String, Function, Array],
-    },
-    computed: {
-        parent() {
-            return this.$dropdown
-        },
-        rootClasses() {
-            return [
-                this.computedClass('itemClass', 'o-drop__item'),
-                { [this.computedClass('itemDisabledClass', 'o-drop__item--disabled')]: (this.parent.disabled || this.disabled) },
-                { [this.computedClass('itemActiveClass', 'o-drop__item--active')]: this.isActive }
-            ]
-        },
-        ariaRoleItem() {
-            return this.ariaRole === 'menuitem' || this.ariaRole === 'listitem' ? this.ariaRole : null
-        },
-        isClickable() {
-            return !this.parent.disabled && !this.disabled && this.clickable
-        },
-        isActive() {
-            if (this.parent.selected === null) return false
-            if (this.parent.multiple) return this.parent.selected.indexOf(this.value) >= 0
-            return this.value === this.parent.selected
-        }
-    },
-    methods: {
-        /**
-        * Click listener, select the item.
-        */
-        selectItem() {
-            if (!this.isClickable) return
-
-            this.parent.selectItem(this.value)
-            this.$emit('click')
-        }
-    },
-    created() {
-        if (!this.parent) {
-            throw new Error('You should wrap oDropdownItem on a oDropdown')
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/dropdown/Inspector.vue b/packages/oruga/src/components/dropdown/Inspector.vue
deleted file mode 100644
index d3552ed0b..000000000
--- a/packages/oruga/src/components/dropdown/Inspector.vue
+++ /dev/null
@@ -1,148 +0,0 @@
-<template>
-  <div>
-    <doc-wrapper>
-        <template v-slot:default="s">
-            <o-dropdown v-model="currentMenu" v-bind="s" aria-role="list">
-                <o-button variant="primary" slot="trigger" slot-scope="{ active }" ref="dropdownbtn">
-                    <span>Click me!</span>
-                    <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon>
-                </o-button>
-                <o-dropdown-item v-bind="s" value="ac1" aria-role="listitem">Action</o-dropdown-item>
-                <o-dropdown-item v-bind="s" value="ac2" aria-role="listitem">Another action</o-dropdown-item>
-                <o-dropdown-item v-bind="s" value="ac3" disabled aria-role="listitem">Something else</o-dropdown-item>
-            </o-dropdown>
-        </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            currentMenu: '',
-            subitem: 'dropdown-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "triggerClass",
-                    description: "Class of the trigger element"
-                },
-                {
-                    class: "menuMobileOverlayClass",
-                    description: "Class of the overlay when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "menuClass",
-                    description: "Class of the dropdown menu",
-                    specificity: "when <b>inlineClass</b> or <b>mobileClass</b> or <b>expandedClass</b> is applied",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class of dropdown when disabled",
-                    properties: ['disabled'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "menuActiveClass",
-                    description: "Class of dropdown menu when active",
-                    properties: ['inline'],
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "inlineClass",
-                    description: "Class of dropdown menu when inline",
-                    properties: ['inline'],
-                    action: (cmp) => {
-                        cmp.data.inline = true;
-                    }
-                },
-                {
-                    class: "menuPositionClass",
-                    description: "Class of dropdown menu position",
-                    properties: ['position'],
-                    suffixes: ['top-right', 'top-left', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of dropdown when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of dropdown when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the dropdown item",
-                    subitem: true,
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "itemActiveClass",
-                    description: "Class of the dropdown item when active",
-                    subitem: true,
-                    action: () => {
-                        setTimeout(() => {
-                            this.currentMenu = 'ac1'
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-                {
-                    class: "itemDisabledClass",
-                    subitem: true,
-                    description: "Class of the dropdown item when disabled",
-                    properties: ['disabled'],
-                    action: () => {
-                        setTimeout(() => {
-                            this.$refs.dropdownbtn.$el.click()
-                        }, 300);
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap b/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap
deleted file mode 100644
index 569464d85..000000000
--- a/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap
+++ /dev/null
@@ -1,13 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODropdown render correctly 1`] = `
-<div class="o-drop">
-    <div tabindex="0" aria-haspopup="true" class="o-drop__trigger"><button class="trigger">trigger</button></div>
-    <transition-stub name="fade">
-        <div aria-hidden="true" class="o-drop__overlay" style="display: none;"></div>
-    </transition-stub>
-    <transition-stub name="fade">
-        <div aria-hidden="true" aria-modal="true" class="o-drop__menu" style="display: none;"></div>
-    </transition-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap b/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap
deleted file mode 100644
index 569464d85..000000000
--- a/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap
+++ /dev/null
@@ -1,13 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ODropdown render correctly 1`] = `
-<div class="o-drop">
-    <div tabindex="0" aria-haspopup="true" class="o-drop__trigger"><button class="trigger">trigger</button></div>
-    <transition-stub name="fade">
-        <div aria-hidden="true" class="o-drop__overlay" style="display: none;"></div>
-    </transition-stub>
-    <transition-stub name="fade">
-        <div aria-hidden="true" aria-modal="true" class="o-drop__menu" style="display: none;"></div>
-    </transition-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/dropdown/examples/Dropdown.md b/packages/oruga/src/components/dropdown/examples/Dropdown.md
deleted file mode 100644
index 3a795e1df..000000000
--- a/packages/oruga/src/components/dropdown/examples/Dropdown.md
+++ /dev/null
@@ -1,210 +0,0 @@
-
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-
-        <o-dropdown aria-role="list">
-            <o-button variant="primary" slot="trigger" slot-scope="{ active }">
-                <span>Click me!</span>
-                <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon>
-            </o-button>
-
-            <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-        </o-dropdown>
-
-        <o-dropdown :triggers="['hover']" aria-role="list">
-            <o-button variant="info" slot="trigger">
-                <span>Hover me!</span>
-                <o-icon icon="caret-down"></o-icon>
-            </o-button>
-
-            <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-        </o-dropdown>
-
-        <o-dropdown disabled aria-role="list">
-            <o-button slot="trigger">
-                <span>Disabled</span>
-                <o-icon icon="caret-down"></o-icon>
-            </o-button>
-
-            <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-        </o-dropdown>
-
-        <o-dropdown aria-role="list">
-            <div slot="trigger">
-                Custom
-                <o-icon
-                    variant="success"
-                    icon="caret-down"
-                    slot="trigger"
-                    role="button">
-                </o-icon>
-            </div>
-
-            <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-        </o-dropdown>
-
-        <o-dropdown :triggers="['contextmenu']" aria-role="list">
-            <o-button
-                slot="trigger"
-                role="button">
-                Right click
-            </o-button>
-
-            <o-dropdown-item aria-role="listitem">Action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item>
-            <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item>
-        </o-dropdown>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Multiple
-
-::: demo
-```html
-<template>
-    <section>
-        <p class="content"><b>selected</b>: {{ selectedOptions }}</p>
-        <o-dropdown
-            v-model="selectedOptions"
-            multiple
-            aria-role="list">
-            <o-button variant="primary" type="button" slot="trigger">
-                <span>Selected ({{ selectedOptions.length }})</span>
-                <o-icon icon="caret-down"></o-icon>
-            </o-button>
-
-            <o-dropdown-item value="option1" aria-role="listitem">
-                <span>Option 1</span>
-            </o-dropdown-item>
-
-            <o-dropdown-item value="option2" aria-role="listitem">
-                <span>Option 2</span>
-            </o-dropdown-item>
-
-            <o-dropdown-item value="option3" aria-role="listitem">
-                <span>Option 3</span>
-            </o-dropdown-item>
-        </o-dropdown>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                selectedOptions: []
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Scrollable
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-field>
-                <o-switch v-model="isScrollable">Scrollable</o-switch>
-            </o-field>
-        </div>
-
-        <br>
-        
-        <o-dropdown
-            :scrollable="isScrollable"
-            :max-height="maxHeight"
-            v-model="currentMenu"
-            aria-role="list"
-        >
-            <o-button variant="primary" type="button" slot="trigger">
-                <template>
-                    <o-icon :icon="currentMenu.icon"></o-icon>
-                    <span>{{currentMenu.text}}</span>
-                </template>
-                <o-icon icon="caret-down"></o-icon>
-            </o-button>
-
-            <o-dropdown-item 
-                v-for="(menu, index) in menus"
-                :key="index"
-                :value="menu" aria-role="listitem">
-                <div class="media">
-                    <o-icon class="media-left" :icon="menu.icon"></o-icon>
-                    <div class="media-content">
-                        <span>{{menu.text}}</span>
-                    </div>
-                </div>
-            </o-dropdown-item>
-        </o-dropdown>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isScrollable: true,
-                maxHeight: 200,
-                currentMenu: { icon: 'users', text: 'People' },
-                menus: [
-                    { icon: 'users', text: 'People' },
-                    { icon: 'box', text: 'Orders' },
-                    { icon: 'credit-card', text: 'Payments' },
-                    { icon: 'dolly', text: 'Logistics' },
-                    { icon: 'business-time', text: 'Jobs' },
-                    { icon: 'shopping-cart', text: 'Cart' },
-                    { icon: 'cog', text: 'Configuration' }
-                ]
-            }
-        }
-    }
-</script>
-
-<style>
-    .media {
-        align-items: flex-start;
-        display: flex;
-        text-align: left;
-    }
-    .media-content {
-        flex-basis: auto;
-        flex-grow: 1;
-        flex-shrink: 1;
-        text-align: left;
-        overflow-y: hidden;
-        overflow-x: auto;
-    }
-    .media-left {
-        margin-right: 1rem;
-        flex-basis: auto;
-        flex-grow: 0;
-        flex-shrink: 0;
-    }
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/dropdown/index.js b/packages/oruga/src/components/dropdown/index.js
deleted file mode 100644
index 2505fa224..000000000
--- a/packages/oruga/src/components/dropdown/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Dropdown from './Dropdown'
-import DropdownItem from './DropdownItem'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Dropdown)
-        registerComponent(Vue, DropdownItem)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Dropdown as ODropdown,
-    DropdownItem as ODropdownItem
-}
diff --git a/packages/oruga/src/components/field/Field.spec.js b/packages/oruga/src/components/field/Field.spec.js
deleted file mode 100644
index e944c653e..000000000
--- a/packages/oruga/src/components/field/Field.spec.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import { shallowMount, mount, createLocalVue } from '@vue/test-utils'
-import OField from '@components/field/Field'
-import OFieldBody from '@components/field/FieldBody'
-import OInput from '@components/input/Input'
-
-const localVue = createLocalVue()
-localVue.component('o-field', OField)
-localVue.component('o-field__body', OFieldBody)
-localVue.component('o-input', OInput)
-
-describe('OField', () => {
-    it('is called', () => {
-        const wrapper = shallowMount(OField)
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        const wrapper = shallowMount(OField)
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('sets input class with type value when prop "variant" is changed dynamically', async () => {
-        const variant = { danger: true }
-        const wrapper = mount(OField, {
-            localVue,
-            slots: { default: [OInput] }
-        })
-        wrapper.setProps({ variant })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find('.o-ctrl-input').find('.o-icon').classes()).toContain('o-icon--danger')
-    })
-
-    describe('Passing a message prop', () => {
-        const generateMountOptions = ({message}) => {
-            return {
-                propsData: {message},
-                localVue,
-                slots: {
-                    default: [OInput, '<button class="button">Button</button>']
-                }
-            }
-        }
-
-        it('adds a help <p> element in the root div.field when "message" prop is passed', () => {
-            const message = 'Some string message'
-            const mountOptions = generateMountOptions({message})
-            const wrapper = shallowMount(OField, mountOptions)
-            expect(wrapper.find('.o-field').find('p.o-field__message').text()).toEqual(message)
-        })
-
-        it('changes the <p> element content in the root div.field when "message" prop is changed dynamically', async () => {
-            const message = 'Some string message'
-            const mountOptions = generateMountOptions({ message: 'initial message' })
-            const wrapper = shallowMount(OField, mountOptions)
-            wrapper.setProps({ message })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.find('.o-field').find('p.o-field__message').text()).toEqual(message)
-        })
-    })
-
-    describe('managing groups', () => {
-        const mountOptions = {
-            propsData: {
-                grouped: true
-            },
-            localVue,
-            slots: {
-                default: [OInput, '<button class="button">Button</button>']
-            }
-        }
-
-        it('contains "o-field--grouped" when prop "grouped" is set', () => {
-            const {propsData} = mountOptions
-            const wrapper = mount(OField, {
-                ...mountOptions,
-                propsData: {
-                    ...propsData,
-                    grouped: true
-                }
-            })
-            const innerField = wrapper.find('.o-field__body').find('.o-field')
-            expect(innerField.classes()).toContain('o-field--grouped')
-        })
-
-        it('contains "o-field--grouped-multiline" when prop "groupMultiline" is set', () => {
-            const {propsData} = mountOptions
-            const wrapper = mount(OField, {
-                ...mountOptions,
-                propsData: {
-                    ...propsData,
-                    groupMultiline: true
-                }
-            })
-            const innerField = wrapper.find('.o-field__body').find('.o-field')
-            expect(innerField.classes()).toContain('o-field--grouped-multiline')
-        })
-
-        it('adds a label element under the root div.field when "label" prop is passed', () => {
-            const {propsData} = mountOptions
-            const wrapper = shallowMount(OField, {
-                ...mountOptions,
-                propsData: {
-                    ...propsData,
-                    label: 'Some label'
-                }
-            })
-            expect(wrapper.find('.o-field').find('label').isVisible()).toBe(true)
-        })
-    })
-})
diff --git a/packages/oruga/src/components/field/Field.vue b/packages/oruga/src/components/field/Field.vue
deleted file mode 100644
index 3ffbb865f..000000000
--- a/packages/oruga/src/components/field/Field.vue
+++ /dev/null
@@ -1,242 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <div
-            v-if="horizontal"
-            :class="labelHorizontalClasses">
-            <label
-                v-if="hasLabel"
-                :for="labelFor"
-                :class="labelClasses">
-                <slot v-if="hasLabelSlot" name="label"/>
-                <template v-else>{{ label }}</template>
-            </label>
-        </div>
-        <template v-else>
-            <label
-                v-if="hasLabel"
-                :for="labelFor"
-                :class="labelClasses">
-                <slot v-if="hasLabelSlot" name="label"/>
-                <template v-else>{{ label }}</template>
-            </label>
-        </template>
-        <o-field-body v-if="horizontal">
-            <slot/>
-        </o-field-body>
-        <div v-else-if="hasInnerField" :class="bodyClasses">
-            <div :class="innerFieldClasses">
-                <slot/>
-            </div>
-        </div>
-        <template v-else>
-            <slot />
-        </template>
-        <p
-            v-if="hasMessage && !horizontal"
-            :class="messageClasses"
-        >
-            <slot v-if="hasMessageSlot" name="message"/>
-            <template v-else>{{ newMessage }}</template>
-        </p>
-    </div>
-</template>
-
-<script>
-import FieldBody from './FieldBody'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-/**
- * Fields are used to add functionality to controls and to attach/group components and elements together
- * @displayName Field
- * @example ./examples/Field.md
- * @style _field.scss
- */
-export default {
-    name: 'OField',
-    components: {
-        [FieldBody.name]: FieldBody
-    },
-    configField: 'field',
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    provide() {
-        return {
-            $field: this
-        }
-    },
-    inject: {
-        $field: { name: '$field', default: false }
-    },
-    props: {
-        /**
-         * 	Color of the field and help message, also adds a matching icon, optional. Used by Input, Select and Autocomplete
-         *  @values primary, info, success, warning, danger, and any other custom color
-         */
-        variant: String,
-        /**
-         * Field label
-         */
-        label: String,
-        /**
-         * Same as native for set on the label
-         */
-        labelFor: String,
-        /**
-         * Help message text
-         */
-        message: String,
-        /**
-         * Direct child components/elements of Field will be grouped horizontally (see which ones at the top of the page)
-         */
-        grouped: Boolean,
-        /**
-         * Allow controls to fill up multiple lines, making it responsive
-         */
-        groupMultiline: Boolean,
-        /**
-         * Group label and control on the same line for horizontal forms
-         */
-        horizontal: Boolean,
-        /**
-         * Field automatically attach controls together
-         */
-        addons: {
-            type: Boolean,
-            default: true
-        },
-         /**
-         * Vertical size of input, optional
-         * @values small, medium, large
-         */
-        labelSize: String,
-        rootClass: [String, Function, Array],
-        horizontalClass: [String, Function, Array],
-        groupedClass: [String, Function, Array],
-        groupMultilineClass: [String, Function, Array],
-        labelClass: [String, Function, Array],
-        labelSizeClass: [String, Function, Array],
-        labelHorizontalClass: [String, Function, Array],
-        bodyClass: [String, Function, Array],
-        bodyHorizontalClass: [String, Function, Array],
-        addonsClass: [String, Function, Array],
-        messageClass: [String, Function, Array],
-        variantMessageClass: [String, Function, Array],
-        variantLabelClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        focusedClass: [String, Function, Array],
-        filledClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            newVariant: this.variant,
-            newMessage: this.message,
-            isFocused: false,
-            isFilled: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-field'),
-                { [this.computedClass('horizontalClass', 'o-field--horizontal')]: this.horizontal },
-                { [this.computedClass('mobileClass', 'o-field--mobile')]: this.isMatchMedia },
-                { [this.computedClass('focusedClass', 'o-field--focused')]: this.isFocused },
-                { [this.computedClass('filledClass', 'o-field--filled')]: this.isFilled }
-            ]
-        },
-        messageClasses() {
-            return [
-                this.computedClass('messageClass', 'o-field__message'),
-                { [this.computedClass('variantMessageClass', 'o-field__message-', this.newVariant)]: this.newVariant }
-            ]
-        },
-        labelClasses() {
-            return [
-                this.computedClass('labelClass', 'o-field__label'),
-                { [this.computedClass('labelSizeClass', 'o-field__label-', this.labelSize)]: this.labelSize },
-                { [this.computedClass('variantLabelClass', 'o-field__label-', this.newVariant)]: this.newVariant }
-            ]
-        },
-        labelHorizontalClasses() {
-            return [
-                this.computedClass('labelHorizontalClass', 'o-field__horizontal-label')
-            ]
-        },
-        bodyClasses() {
-            return [
-                this.computedClass('bodyClass', 'o-field__body')
-            ]
-        },
-        bodyHorizontalClasses() {
-            return [
-                this.computedClass('bodyHorizontalClass', 'o-field__horizontal-body')
-            ]
-        },
-        innerFieldClasses() {
-            return [
-                this.computedClass('rootClass', 'o-field'),
-                { [this.computedClass('groupMultilineClass', 'o-field--grouped-multiline')]: this.groupMultiline },
-                { [this.computedClass('groupedClass', 'o-field--grouped')]: this.grouped },
-                { [this.computedClass('addonsClass', 'o-field--addons')]: !this.grouped && this.hasAddons() },
-            ]
-        },
-        parent() {
-            return this.$field
-        },
-        hasLabelSlot() {
-            return this.$slots.label
-        },
-        hasMessageSlot() {
-            return this.$slots.message
-        },
-        hasLabel() {
-            return this.label || this.hasLabelSlot
-        },
-        hasMessage() {
-            return ((!this.parent || !this.parent.hasInnerField) && this.newMessage) || this.hasMessageSlot
-        },
-        hasInnerField() {
-            return this.grouped || this.groupMultiline || this.hasAddons()
-        }
-    },
-    watch: {
-        /**
-        * Set internal variant when prop change.
-        */
-        variant(value) {
-            this.newVariant = value
-        },
-
-        /**
-        * Set internal message when prop change.
-        */
-        message(value) {
-            this.newMessage = value
-        },
-
-        /**
-        * Set parent message if we use Field in Field.
-        */
-        newMessage(value) {
-            if (this.parent && this.parent.hasInnerField) {
-                if (!this.parent.variant) {
-                    this.parent.newVariant = this.newVariant
-                }
-                if (!this.parent.message) {
-                    this.parent.newMessage = value
-                }
-            }
-        }
-    },
-    methods: {
-        hasAddons() {
-            let renderedNode = 0
-            if (this.$slots.default) {
-                renderedNode = this.$slots.default.reduce((i, node) => node.tag ? i + 1 : i, 0)
-            }
-            return (renderedNode > 1 && this.addons && !this.horizontal)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/field/FieldBody.spec.js b/packages/oruga/src/components/field/FieldBody.spec.js
deleted file mode 100644
index 1752ff1e3..000000000
--- a/packages/oruga/src/components/field/FieldBody.spec.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import { shallowMount, createLocalVue } from '@vue/test-utils'
-import OFieldBody from '@components/field/FieldBody'
-import OField from '@components/field/Field'
-
-const localVue = createLocalVue()
-localVue.component('o-field', OField)
-
-describe('OFieldBody', () => {
-    it('is called', () => {
-        const wrapper = shallowMount(OFieldBody, {
-            slots: {
-                default: 'content'
-            }
-        })
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        const wrapper = shallowMount(OFieldBody, {
-            slots: {
-                default: 'content'
-            }
-        })
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('should render the text when the child is a text', () => {
-        const text = 'text'
-        const wrapper = shallowMount(OFieldBody, {
-            slots: {
-                default: text
-            }
-        })
-        expect(wrapper.text()).toBe(text)
-    })
-})
diff --git a/packages/oruga/src/components/field/FieldBody.vue b/packages/oruga/src/components/field/FieldBody.vue
deleted file mode 100644
index 021fbaaee..000000000
--- a/packages/oruga/src/components/field/FieldBody.vue
+++ /dev/null
@@ -1,34 +0,0 @@
-<script>
-export default {
-    name: 'OFieldBody',
-    inject: {
-        $field: { name: '$field', default: false }
-    },
-    configField: 'field',
-    computed: {
-        parent() {
-            return this.$field
-        }
-    },
-    render(h) {
-        let first = true
-        return h(
-            'div',
-            { attrs: { 'class': this.parent.bodyHorizontalClasses } },
-            this.$slots.default.map((element) => {
-                // skip returns and comments
-                if (!element.tag) {
-                    return element
-                }
-                let message
-                if (first) {
-                    message = this.parent.newMessage
-                    first = false
-                }
-                return h('o-field',
-                    { attrs: { variant: this.parent.newVariant, message } }, [element])
-            })
-        )
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/field/Inspector.vue b/packages/oruga/src/components/field/Inspector.vue
deleted file mode 100644
index dc0da6a36..000000000
--- a/packages/oruga/src/components/field/Inspector.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field v-bind="s" label="Field">
-                    <o-input v-model="name" name="name" placeholder="Name" expanded></o-input>
-                    <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            name: '',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of file component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "horizontalClass",
-                    description: "Class to align label and control in horizontal forms",
-                    properties: ['horizontal'],
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "groupedClass",
-                    description: "Class when fields are grouped together",
-                    properties: ['grouped'],
-                    action: (cmp) => {
-                        cmp.data.grouped = true;
-                    }
-                },
-                {
-                    class: "groupMultilineClass",
-                    description: "Class when fields fill up multiple lines",
-                    properties: ['groupMultiline'],
-                    action: (cmp) => {
-                        cmp.data.groupMultiline = true;
-                    }
-                },
-                {
-                    class: "labelClass",
-                    description: "Class for field label"
-                },
-                {
-                    class: "labelSizeClass",
-                    description: "Class for field label size",
-                    properties: ['labelSize'],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.labelSize = "large";
-                    }
-                },
-                {
-                    class: "labelHorizontalClass",
-                    description: "Class for field label when horizontal",
-                    properties: ['horizontal'],
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "bodyClass",
-                    description: "Class for field body"
-                },
-                {
-                    class: "bodyHorizontalClass",
-                    description: "Class for field body when horizontal",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    properties: ['horizontal'],
-                    action: (cmp) => {
-                        cmp.data.horizontal = true;
-                    }
-                },
-                {
-                    class: "addonsClass",
-                    description: "Class for components automatically attached together when inside a field",
-                    warning: "Use the <code>expanded</code> prop on the control to fill up the remaining space",
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "messageClass",
-                    description: "Class for the field message",
-                    properties: ["message"],
-                    action: (cmp) => {
-                        cmp.data.message = 'This is a message for the field';
-                    }
-                },
-                {
-                    class: "variantMessageClass",
-                    description: "Class of the message field variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "info";
-                        cmp.data.message = 'This is a message for the field';
-                    }
-                },
-                {
-                    class: "variantLabelClass",
-                    description: "Class of the label field variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "info";
-                    }
-                },
-                {
-                    class: "focusedClass",
-                    description: "Class for the focused field",
-                    warning: "focus event emitted by form elements",
-                    action: (cmp) => {
-                        cmp.$el.focus()
-                    }
-                },
-                {
-                    class: "filledClass",
-                    description: "Class for the filled field",
-                    warning: "when it contains a input",
-                    action: () => {
-                        this.name = 'Oruga'
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap b/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap
deleted file mode 100644
index 8ed2b6418..000000000
--- a/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap
+++ /dev/null
@@ -1,8 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OField render correctly 1`] = `
-<div class="o-field">
-    <!---->
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap b/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap
deleted file mode 100644
index a809b6c5e..000000000
--- a/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OFieldBody render correctly 1`] = `<div>content</div>`;
diff --git a/packages/oruga/src/components/field/examples/Field.md b/packages/oruga/src/components/field/examples/Field.md
deleted file mode 100644
index 7af29bd14..000000000
--- a/packages/oruga/src/components/field/examples/Field.md
+++ /dev/null
@@ -1,256 +0,0 @@
-
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Name">
-            <o-input value="Kevin Garvey"></o-input>
-        </o-field>
-
-        <o-field label="Email"
-            variant="danger"
-            message="This email is invalid">
-            <o-input type="email"
-                value="john@"
-                maxlength="30">
-            </o-input>
-        </o-field>
-
-        <o-field label="Username"
-            variant="success"
-            message="This username is available">
-            <o-input value="johnsilver" maxlength="30"></o-input>
-        </o-field>
-
-        <o-field label="Password"
-            variant="warning">
-            <o-input value="123" type="password" maxlength="30"></o-input>
-        </o-field>
-
-        <o-field label="Subject">
-            <o-select placeholder="Select a subject">
-                <option value="1">Option 1</option>
-                <option value="2">Option 2</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Wrong subject"
-            variant="danger"
-            message="Selected subject is wrong">
-            <o-select placeholder="Select a subject">
-                <option value="1">Option 1</option>
-                <option value="2">Option 2</option>
-            </o-select>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Addons
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field variant="danger">
-            <o-input placeholder="Search..."
-                type="search"
-                icon="search">
-            </o-input>
-            <o-button variant="primary">Search</o-button>
-        </o-field>
-
-        <o-field>
-            <o-input placeholder="This is expanded" expanded></o-input>
-            <o-button>@gmail.com</o-button>
-        </o-field>
-
-        <hr>
-
-        <o-field>
-            <o-select placeholder="Currency">
-                <option>$</option>
-                <option>ยฃ</option>
-                <option>โ‚ฌ</option>
-            </o-select>
-            <o-input type="number" placeholder="0,00"></o-input>
-            <o-button variant="success">Transfer</o-button>
-        </o-field>
-
-        <o-field>
-            <o-button icon-left="bold"></o-button>
-            <o-button icon-left="italic"></o-button>
-            <o-button icon-left="underline"></o-button>
-            <o-button icon-left="align-left"></o-button>
-            <o-button icon-left="align-center"></o-button>
-            <o-button icon-left="align-right"></o-button>
-            
-            <o-input placeholder="Search..." type="search" icon="search"></o-input>
-        </o-field>
-
-        <o-field>
-            <o-button variant="primary">
-                Button
-            </o-button>
-             <o-dropdown>
-                <o-button
-                    variant="primary"
-                    icon-right="caret-down"
-                    slot="trigger">
-                </o-button>
-
-                <o-dropdown-item>Action</o-dropdown-item>
-                <o-dropdown-item>Another action</o-dropdown-item>
-                <o-dropdown-item>Something else</o-dropdown-item>
-            </o-dropdown>
-        </o-field>
-
-        <o-field>
-            <o-dropdown>
-                <o-button icon-right="caret-down" slot="trigger">
-                    Filters
-                </o-button>
-
-                <o-dropdown-item value="open_issues">Open Issues and Pull Requests</o-dropdown-item>
-                <o-dropdown-item value="your_issues">Your Issues</o-dropdown-item>
-                <o-dropdown-item value="pull_requests">Your Pull Requests</o-dropdown-item>
-                <o-dropdown-item value="everything">Everything</o-dropdown-item>
-            </o-dropdown>
-            <o-input icon="search" type="search" placeholder="Search..."></o-input>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Grouped
-
-::: demo
-```html
-<template>
-    <section>
-
-        <o-field grouped variant="danger" message="What do you want to search?">
-            <o-input placeholder="Search..."></o-input>
-            <o-button variant="primary">Search</o-button>
-        </o-field>
-
-        <o-field grouped message="What do you want to search?">
-            <o-input placeholder="Search..." expanded></o-input>
-            <o-button variant="primary">Search</o-button>
-        </o-field>
-
-        <o-field grouped group-multiline>
-            <o-input></o-input>
-            <o-button>First</o-button>
-            <o-button>Second</o-button>
-            <o-button>Third</o-button>
-            <o-button>Fourth</o-button>
-            <o-button>Fifth</o-button>
-            <o-button>Sixth</o-button>
-            <o-button>Seventh</o-button>
-            <o-button>Eighth</o-button>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-
-### Horizontal
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field horizontal label="Subject" variant="danger" message="Please enter a subject">
-            <o-input name="subject" expanded></o-input>
-        </o-field>
-
-        <o-field horizontal label="From">
-            <o-input name="name" placeholder="Name" expanded></o-input>
-            <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input>
-        </o-field>
-
-        <o-field horizontal label="Topic">
-            <o-select placeholder="Select a topic">
-                <option value="1">Oruga</option>
-                <option value="2">Vue.js</option>
-                <option value="3">UI</option>
-            </o-select>
-        </o-field>
-
-        <o-field horizontal label="Message">
-            <o-input type="textarea"></o-input>
-        </o-field>
-
-        <o-field horizontal><!-- Label left empty for spacing -->
-            <o-button variant="primary">
-              Send message
-            </o-button>
-        </o-field>
-
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Slots
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field horizontal>
-            <template slot="label">
-               With tooltip
-                <o-tooltip label="Help text here for explanation">
-                    <o-icon size="small" icon="question-circle"></o-icon>
-                </o-tooltip>
-            </template>
-            <o-input size="medium"></o-input>
-        </o-field>
-
-        <o-field>
-            <template slot="label">
-                Label with custom <i>style</i>
-            </template>
-            <o-input></o-input>
-            <template slot="message">
-                Message with custom <b>style</b>
-            </template>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/field/index.js b/packages/oruga/src/components/field/index.js
deleted file mode 100644
index 0a81b9bb1..000000000
--- a/packages/oruga/src/components/field/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Field from './Field'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Field)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Field as OField
-}
diff --git a/packages/oruga/src/components/icon/Icon.spec.js b/packages/oruga/src/components/icon/Icon.spec.js
deleted file mode 100644
index f50589ceb..000000000
--- a/packages/oruga/src/components/icon/Icon.spec.js
+++ /dev/null
@@ -1,92 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OIcon from '@components/icon/Icon'
-
-describe('OIcon', () => {
-    it('render correctly', () => {
-        const wrapper = shallowMount(OIcon)
-
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('is vue instance', () => {
-        const wrapper = shallowMount(OIcon)
-
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render icon when icon property is passed', () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: { icon: 'eye' }
-        })
-
-        expect(wrapper.classes()).toContain('o-icon')
-        expect(wrapper.find('i').classes()).toContain('mdi', 'mdi-eye', 'mdi-24px')
-    })
-
-    it('returns correct color for newVariant when type is passed as an object', () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: {
-                icon: 'eye',
-                variant: {'primary': true}
-            }
-        })
-
-        expect(wrapper.classes()).toContain('o-icon--primary')
-        expect(wrapper.vm.newVariant).toEqual('primary')
-    })
-
-    it('render icon package correctly when the pack property is is passed.', () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: {
-                icon: 'eye',
-                pack: 'fa'
-            }
-        })
-
-        expect(wrapper.find('i').classes()).toContain('fa-eye')
-    })
-
-    it('display size when size propery is passed', async () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: {
-                icon: 'eye'
-            }
-        })
-        expect(wrapper.find('i').classes()).toContain('mdi-24px')
-
-        wrapper.setProps({ size: 'small' })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find('i').classes()).toContainEqual('mdi', 'mdi-eye')
-
-        wrapper.setProps({ size: 'medium' })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find('i').classes()).toContain('mdi-36px')
-
-        wrapper.setProps({ size: 'large' })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find('i').classes()).toContain('mdi-48px')
-    })
-
-    it('overrides icon font size when customSize property is passed', () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: {
-                icon: 'eye',
-                pack: 'fa',
-                customSize: 'fa-2x'
-            }
-        })
-
-        expect(wrapper.find('i').classes()).toContainEqual('fa', 'fa-2x')
-    })
-
-    it('render custom classes when customClass property is passed', () => {
-        const wrapper = shallowMount(OIcon, {
-            propsData: {
-                icon: 'eye',
-                customClass: 'foo-bar'
-            }
-        })
-
-        expect(wrapper.find('i').classes()).toContain('foo-bar')
-    })
-})
diff --git a/packages/oruga/src/components/icon/Icon.vue b/packages/oruga/src/components/icon/Icon.vue
deleted file mode 100644
index 3fdbdc43e..000000000
--- a/packages/oruga/src/components/icon/Icon.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-<template>
-    <span
-        :class="rootClasses"
-        :style="rootStyle">
-        <i
-            v-if="!useIconComponent"
-            :class="[newPack, newIcon, newCustomSize, customClass]"/>
-        <!-- custom icon component -->
-        <component
-            v-else
-            :is="useIconComponent"
-            :icon="[newPack, newIcon]"
-            :size="newCustomSize"
-            :class="[customClass]" />
-    </span>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getOptions } from '../../utils/config'
-import getIcons from '../../utils/icons'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * Icons take an important role of any application
- * @displayName Icon
- * @example ./examples/Icon.md
- * @style _icon.scss
- */
-export default {
-    name: 'OIcon',
-    mixins: [BaseComponentMixin],
-    configField: 'icon',
-    props: {
-        /**
-         * 	Color of the icon, optional
-         *  @values primary, info, success, warning, danger, and any other custom color
-         */
-        variant: [String, Object],
-        /**
-         * Icon component name
-         */
-        component: String,
-        /**
-         * Icon pack to use
-         * @values mdi, fa, fas and any other custom icon pack
-         */
-        pack: String,
-        /**
-         * Icon name
-         */
-        icon: String,
-        /**
-         * Icon size, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-         * Overrides icon font size, optional
-         * @values Depends on library: null (smallest), fa-lg, fa-2x, fa-3x, fa-4x, fa-5x, mdi-18px, mdi-24px, mdi-36px, mdi-48px
-         */
-        customSize: String,
-        /**
-         * Add class to icon font, optional. See here for MDI, here for FontAwesome 4 and here for FontAwesome 5 custom classes
-         */
-        customClass: String,
-        /**
-         * When true makes icon clickable
-         */
-        clickable: Boolean,
-        /** Enable spin effect on icon */
-        spin: Boolean,
-        /** Rotation 0-360 */
-        rotation: [Number, String],
-        /** @ignore */
-        both: Boolean, // This is used internally
-        rootClass: [String, Function, Array],
-        clickableClass: [String, Function, Array],
-        spinClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-icon'),
-                { [this.computedClass('clickableClass', 'o-icon--clickable')]: this.clickable },
-                { [this.computedClass('spinClass', 'o-icon--spin')]: this.spin },
-                { [this.computedClass('sizeClass', 'o-icon--', this.size)]: this.size },
-                { [this.computedClass('variantClass', 'o-icon--', this.newVariant)]: this.newVariant }
-            ]
-        },
-        rootStyle() {
-            const style = {}
-            if (this.rotation) {
-                style['transform'] = `rotate(${this.rotation}deg)`
-            }
-            return style
-        },
-        iconConfig() {
-            return getIcons()[this.newPack]
-        },
-        iconPrefix() {
-            if (this.iconConfig && this.iconConfig.iconPrefix) {
-                return this.iconConfig.iconPrefix
-            }
-            return ''
-        },
-        /**
-        * Internal icon name based on the pack.
-        * If pack is 'fa', gets the equivalent FA icon name of the MDI,
-        * internal icons are always MDI.
-        */
-        newIcon() {
-            return `${this.iconPrefix}${this.getEquivalentIconOf(this.icon)}`
-        },
-        newPack() {
-            return this.pack || getValueByPath(getOptions(), 'iconPack', 'mdi')
-        },
-        newVariant() {
-            if (!this.variant) return
-            let newVariant = ''
-            if (typeof this.variant === 'string') {
-                newVariant = this.variant
-            } else {
-                newVariant = Object.keys(this.variant).filter(key => this.variant[key])[0]
-            }
-            return newVariant
-        },
-        newCustomSize() {
-            return this.customSize || this.customSizeByPack
-        },
-        customSizeByPack() {
-            if (this.iconConfig && this.iconConfig.sizes) {
-                if (this.size && this.iconConfig.sizes[this.size] !== undefined) {
-                    return this.iconConfig.sizes[this.size]
-                } else if (this.iconConfig.sizes.default) {
-                    return this.iconConfig.sizes.default
-                }
-            }
-            return null
-        },
-        useIconComponent() {
-            if (this.component) return this.component
-            const component = getValueByPath(getOptions(), 'iconComponent')
-            if (component) return component
-            return null;
-        }
-    },
-    methods: {
-        /**
-        * Equivalent icon name of the MDI.
-        */
-        getEquivalentIconOf(value) {
-            // Only transform the class if the both prop is set to true
-            if (!this.both) {
-                return value
-            }
-            if (this.iconConfig &&
-                this.iconConfig.internalIcons &&
-                this.iconConfig.internalIcons[value]) {
-                return this.iconConfig.internalIcons[value]
-            }
-            return value
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/icon/Inspector.vue b/packages/oruga/src/components/icon/Inspector.vue
deleted file mode 100644
index ef9d37672..000000000
--- a/packages/oruga/src/components/icon/Inspector.vue
+++ /dev/null
@@ -1,59 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-icon v-bind="s" pack="fas" icon="home"></o-icon>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "clickableClass",
-                    description: "Class of the icon when clickable",
-                    properties: ['clickable'],
-                    action: (cmp) => {
-                        cmp.data.clickable = true;
-                    }
-                },
-                {
-                    class: "spinClass",
-                    description: "Class of the element when spin",
-                    properties: ['spin'],
-                    action: (cmp) => {
-                        cmp.data.spin = true;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description : 'Class of the icon size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = "large";
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the icon variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = "warning";
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap b/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap
deleted file mode 100644
index 9e52122ea..000000000
--- a/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OIcon render correctly 1`] = `<span class="o-icon"><i class="mdi mdi-undefined mdi-24px"></i></span>`;
diff --git a/packages/oruga/src/components/icon/examples/Icon.md b/packages/oruga/src/components/icon/examples/Icon.md
deleted file mode 100644
index b5eb818e5..000000000
--- a/packages/oruga/src/components/icon/examples/Icon.md
+++ /dev/null
@@ -1,334 +0,0 @@
-
-## Examples
-
-Oruga is compatible with both <a href="https://materialdesignicons.com/" target="_blank">Material Design Icons</a>
-and <a href="https://fontawesome.com/" target="_blank">FontAwesome 5</a> but you can also add your own custom icon pack.<br>
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-icon
-                pack="fas"
-                icon="user"
-                size="small">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="home"
-                size="small">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="tachometer-alt"
-                size="small">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="fas"
-                icon="user">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="home">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="tachometer-alt">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="fas"
-                icon="user"
-                size="medium">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="home"
-                size="medium">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="tachometer-alt"
-                size="medium">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="fas"
-                icon="user"
-                size="large"
-                variant="success">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="home"
-                size="large"
-                variant="info">
-            </o-icon>
-            <o-icon
-                pack="fas"
-                icon="tachometer-alt"
-                size="large"
-                variant="primary">
-            </o-icon>
-        </div>
-
-        <o-button variant="success">
-            <o-icon pack="fas" icon="check"></o-icon>
-            <span>Finish</span>
-        </o-button>
-
-        <o-button variant="warning">
-            <o-icon pack="fas" icon="check"></o-icon>
-            <span>Finish</span>
-        </o-button>
-
-        <o-button variant="warning">
-            <o-icon
-                pack="fas"
-                icon="sync-alt"
-                spin>
-            </o-icon>
-            <span>Refresh</span>
-        </o-button>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Custom icon pack
-
-<p>
-    You can also add it during Oruga import as default config.
-</p>
-
-::: tip
-Take a look at below example code (click on "Show code") to know all internal icons to replace with the releated icons of your custom icon pack
-:::
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-icon
-                pack="ionicons"
-                icon="person"
-                size="small">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="home"
-                size="small">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="apps"
-                size="small">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="ionicons"
-                icon="person">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="home">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="apps">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="ionicons"
-                icon="person"
-                size="medium">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="home"
-                size="medium">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="apps"
-                size="medium">
-            </o-icon>
-        </div>
-
-        <div class="block">
-            <o-icon
-                pack="ionicons"
-                icon="person"
-                size="large"
-                variant="success">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="home"
-                size="large"
-                variant="info">
-            </o-icon>
-            <o-icon
-                pack="ionicons"
-                icon="apps"
-                size="large"
-                variant="primary">
-            </o-icon>
-        </div>
-
-        <o-button variant="primary">
-            <o-icon pack="ionicons" icon="checkmark"></o-icon>
-            <span>Finish</span>
-        </o-button>
-
-        <o-button variant="warning">
-            <o-icon pack="ionicons" icon="checkmark"></o-icon>
-            <span>Finish</span>
-        </o-button>
-
-        <o-button variant="warning">
-            <o-icon
-                spin
-                pack="ionicons"
-                icon="refresh">
-            </o-icon>
-            <span>Refresh</span>
-        </o-button>
-    </section>
-</template>
-
-<script>
-    const customIconConfig = {
-        iconComponent: undefined,
-        customIconPacks: {
-            'ionicons': {
-                sizes: {
-                    'default': 'is-size-5',
-                    'small': '',
-                    'medium': 'is-size-3',
-                    'large': 'is-size-1'
-                },
-                iconPrefix: 'ion-md-',
-                internalIcons: {
-                    'check': 'checkmark',
-                    'information': 'information',
-                    'alert': 'alert',
-                    'alert-circle': 'alert',
-                    'arrow-up': 'arrow-up',
-                    'chevron-right': 'arrow-forward',
-                    'chevron-left': 'arrow-back',
-                    'chevron-down': 'arrow-down',
-                    'eye': 'eye',
-                    'eye-off': 'eye-off',
-                    'caret-down': 'arrow-dropdown',
-                    'caret-up': 'arrow-dropup',
-                    'loading': 'reload-outline',
-                    'times': 'close-outline',
-                    'close-circle': 'close-circle-outline'
-                }
-            }
-        }
-    }
-    export default {
-        data() {
-            return {
-                docsIcon: undefined
-            }
-        },
-        created() {
-            this.$oruga.config.setOptions(customIconConfig)
-        },
-        beforeCreate() {
-            // only for docs purpose
-            const docsIcon = this.$oruga.config.getOptions().iconComponent
-            if (typeof window !== 'undefined') {
-                window.requestAnimationFrame(() => {
-                    this.$oruga.config.setOptions({
-                        iconComponent: docsIcon
-                    })
-                })
-            }
-        }
-    }
-</script>
-
-<style>
-    @import "https://unpkg.com/ionicons@4.5.10-0/dist/css/ionicons.min.css";
-</style>
-```
-:::
-
-### Override icon pack
-
-<p>
-    You can also customize some properties of the default icon packs. In this example, default sizes for FontAwesome have been modified.
-</p>
-
-```js
-const customIconConfig = {
-    customIconPacks: {
-        'fas': {
-            sizes: {
-                'default': null,
-                'small': null,
-                'medium': 'fa-lg',
-                'large': 'fa-2x'
-            }
-        }
-    }
-}
-export default {
-    created() {
-        // only for docs purpose, you can set in globally
-        this.$oruga.config.setOptions(customIconConfig)
-    }
-}
-```
-
-### Custom icon component
-
-::: tip
-You can set the `iconComponent` config option to render icons with the vue-fontawesome component (it should work with other Vue icon components as well).
-:::
-
-```js
-import { library } from '@fortawesome/fontawesome-svg-core';
-// internal icons
-import { faCheck, faCheckCircle, faInfoCircle, faExclamationTriangle, faExclamationCircle,
-    faArrowUp, faAngleRight, faAngleLeft, faAngleDown,
-    faEye, faEyeSlash, faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
-
-library.add(faCheck, faCheckCircle, faInfoCircle, faExclamationTriangle, faExclamationCircle,
-    faArrowUp, faAngleRight, faAngleLeft, faAngleDown,
-    faEye, faEyeSlash, faCaretDown, faCaretUp);
-Vue.component('vue-fontawesome', FontAwesomeIcon);
-
-// ...
-
-import Oruga from '@oruga-ui/oruga'
-Vue.use(Oruga, {
-  iconComponent: 'vue-fontawesome',
-  iconPack: 'fas'
-});
-```
diff --git a/packages/oruga/src/components/icon/index.js b/packages/oruga/src/components/icon/index.js
deleted file mode 100644
index 54ee1a82d..000000000
--- a/packages/oruga/src/components/icon/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Icon from './Icon'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Icon)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Icon as OIcon
-}
diff --git a/packages/oruga/src/components/index.js b/packages/oruga/src/components/index.js
deleted file mode 100644
index 7880324c9..000000000
--- a/packages/oruga/src/components/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export * from './autocomplete'
-export * from './button'
-export * from './carousel'
-export * from './checkbox'
-export * from './collapse'
-export * from './datepicker'
-export * from './datetimepicker'
-export * from './dropdown'
-export * from './field'
-export * from './icon'
-export * from './input'
-export * from './inputitems'
-export * from './loading'
-export * from './notification'
-export * from './notification'
-export * from './menu'
-export * from './modal'
-export * from './pagination'
-export * from './radio'
-export * from './select'
-export * from './skeleton'
-export * from './sidebar'
-export * from './slider'
-export * from './steps'
-export * from './switch'
-export * from './table'
-export * from './tabs'
-export * from './timepicker'
-export * from './tooltip'
-export * from './upload'
diff --git a/packages/oruga/src/components/input/Input.spec.js b/packages/oruga/src/components/input/Input.spec.js
deleted file mode 100644
index 3750fb1ca..000000000
--- a/packages/oruga/src/components/input/Input.spec.js
+++ /dev/null
@@ -1,149 +0,0 @@
-import { shallowMount, mount } from '@vue/test-utils'
-import OInput from '@components/input/Input'
-
-let wrapper
-
-describe('OInput', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OInput)
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('renders input element by default', () => {
-        expect(wrapper.contains('input')).toBeTruthy()
-        expect(wrapper.classes()).toContain('o-ctrl-input')
-    })
-
-    it('render textarea element when type is textarea', async () => {
-        wrapper.setProps({ type: 'textarea' })
-        await wrapper.vm.$nextTick()
-
-        const target = wrapper.find('textarea')
-        expect(target.exists()).toBeTruthy()
-        expect(target.classes()).toContain('o-input')
-        expect(target.attributes().style).toBeFalsy()
-    })
-
-    it('add inline style and call resize for textarea when autosize is true', async () => {
-        wrapper.vm.resize = jest.fn()
-        wrapper.setProps({ type: 'textarea', autosize: true, value: 'test' })
-        await wrapper.vm.$nextTick()
-
-        const target = wrapper.find('textarea')
-        expect(target.attributes().style).toBeTruthy()
-
-        wrapper.setProps({ type: 'textarea', autosize: true, value: 'test2' })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.resize).toHaveBeenCalled()
-    })
-
-    /*
-    it('set height to certain px when resized', async () => {
-        wrapper.setProps({ type: 'textarea', autosize: true, value: 'test' })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.height).toContain('px')
-    })
-    */
-
-    it('render field password when the type property is password', () => {
-        const wrapper = shallowMount(OInput, {
-            propsData: {
-                type: 'password',
-                passwordReveal: true
-            }
-        })
-
-        const target = wrapper.find('input')
-        expect(target.exists()).toBeTruthy()
-        expect(target.attributes().type).toBe('password')
-    })
-
-    it('toggles the visibility of the password to true when the togglePasswordVisibility method is called', async () => {
-        const wrapper = mount(OInput, {
-            propsData: {
-                value: 'foo',
-                type: 'password',
-                passwordReveal: true
-            }
-        })
-
-        wrapper.setProps({ value: 'bar' })
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.find('input').exists()).toBeTruthy()
-        expect(wrapper.vm.newType).toBe('password')
-        expect(wrapper.vm.isPasswordVisible).toBeFalsy()
-        expect(wrapper.find('input').attributes().type).toBe('password')
-
-        const visibilityIcon = wrapper.find('.o-icon--clickable')
-        expect(visibilityIcon.exists()).toBeTruthy()
-
-        visibilityIcon.trigger('click')
-        wrapper.setProps({ passwordReveal: false })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.newType).toBe('text')
-        expect(wrapper.vm.isPasswordVisible).toBeTruthy()
-        expect(wrapper.find('input').attributes().type).toBe('text')
-    })
-
-    it('render the placeholder and readonly attribute when passed', () => {
-        const wrapper = shallowMount(OInput, {
-            attrs: { placeholder: 'Awesome!', readonly: true }
-        })
-        const target = wrapper.find('input')
-
-        expect(target.element.getAttribute('placeholder')).toBe('Awesome!')
-        expect(target.element.getAttribute('readonly')).toBe('readonly')
-    })
-
-    it('expands input when expanded property is passed', async () => {
-        wrapper.setProps({ expanded: true })
-        await wrapper.vm.$nextTick()
-
-        expect(wrapper.classes()).toContain('o-ctrl-input--expanded')
-    })
-
-    it('keep its value on blur', async () => {
-        const wrapper = mount(OInput, {
-            propsData: {
-                value: 'foo'
-            },
-            methods: {
-                checkHtml5Validity: () => true
-            }
-        })
-
-        const input = wrapper.find('input')
-
-        input.element.value = 'bar'
-        input.trigger('input')
-        input.trigger('blur')
-
-        expect(input.element.value).toBe('bar')
-    })
-
-    it('manage the click on icon', async () => {
-        const wrapper = mount(OInput, {
-            propsData: {
-                icon: 'magnify',
-                iconClickable: true
-            }
-        })
-
-        expect(wrapper.find('input').exists()).toBeTruthy()
-
-        const visibilityIcon = wrapper.find('.o-icon--clickable')
-        expect(visibilityIcon.exists()).toBeTruthy()
-
-        visibilityIcon.trigger('click')
-        await wrapper.vm.$nextTick()
-        expect(wrapper.emitted()['icon-click']).toBeTruthy()
-    })
-})
diff --git a/packages/oruga/src/components/input/Input.vue b/packages/oruga/src/components/input/Input.vue
deleted file mode 100644
index 5424646fb..000000000
--- a/packages/oruga/src/components/input/Input.vue
+++ /dev/null
@@ -1,337 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <input
-            v-if="type !== 'textarea'"
-            ref="input"
-            :class="inputClasses"
-            :type="newType"
-            :autocomplete="newAutocomplete"
-            :maxlength="maxlength"
-            v-bind="$attrs"
-            :value="computedValue"
-            @input="computedValue = $event.target.value"
-            @blur="onBlur"
-            @focus="onFocus"
-            @invalid="onInvalid" />
-
-        <textarea
-            v-else
-            ref="textarea"
-            :class="inputClasses"
-            :maxlength="maxlength"
-            v-bind="$attrs"
-            :value="computedValue"
-            @input="computedValue = $event.target.value"
-            @blur="onBlur"
-            @focus="onFocus"
-            @invalid="onInvalid"
-            :style="computedStyles"
-            />
-
-        <o-icon
-            v-if="icon"
-            :class="iconLeftClasses"
-            :clickable="iconClickable"
-            :icon="icon"
-            :pack="iconPack"
-            :size="size"
-            @click.native="iconClick('icon-click', $event)"/>
-
-        <o-icon
-            v-if="hasIconRight"
-            :class="iconRightClasses"
-            :clickable="passwordReveal || clearable || iconRightClickable"
-            :icon="rightIcon"
-            :pack="iconPack"
-            :size="size"
-            :variant="rightIconVariant"
-            both
-            @click.native="rightIconClick"/>
-
-        <small
-            v-if="maxlength && hasCounter && isFocused && type !== 'number'"
-            :class="counterClasses">
-            {{ valueLength }} / {{ maxlength }}
-        </small>
-    </div>
-</template>
-
-<script>
-import Icon from '../icon/Icon'
-
-import { getOptions } from '../../utils/config'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import FormElementMixin from '../../utils/FormElementMixin'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * Get user Input. Use with Field to access all functionalities
- * @displayName Input
- * @example ./examples/Input.md
- * @style _input.scss
- */
-export default {
-    name: 'OInput',
-    components: {
-        [Icon.name]: Icon
-    },
-    mixins: [BaseComponentMixin, FormElementMixin],
-    configField: 'input',
-    inheritAttrs: false,
-    props: {
-        /** @model */
-        value: [Number, String],
-        /**
-         * Input type, like native
-         * @values Any native input type, and textarea
-         */
-        type: {
-            type: String,
-            default: 'text'
-        },
-        /**
-         * Vertical size of input, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: String,
-        /**
-         * 	Adds the reveal password functionality
-         */
-        passwordReveal: Boolean,
-        /**
-         * Makes the icon clickable
-         */
-        iconClickable: Boolean,
-        /**
-         * Show character counter when maxlength prop is passed
-         */
-        hasCounter: {
-            type: Boolean,
-            default: () => { return getValueByPath(getOptions(), 'input.counter', false) }
-        },
-        /**
-         * Automatically adjust height in textarea
-         */
-        autosize: {
-            type: Boolean,
-            default: false
-        },
-        /**
-         * 	Icon name to be added on the right side
-         */
-        iconRight: String,
-        /**
-         * Make the icon right clickable
-         */
-        iconRightClickable: Boolean,
-        /** Variant of right icon */
-        iconRightVariant: String,
-        /** Add a button/icon to clear the inputed text */
-        clearable: {
-            type: Boolean,
-            default: () => { return getValueByPath(getOptions(), 'input.clearable', false) }
-        },
-        /**
-         * Icon name to be added on the clear button
-         */
-        clearIcon: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'input.clearIcon', 'close-circle')
-            }
-        },
-        rootClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        iconLeftSpaceClass: [String, Function, Array],
-        iconRightSpaceClass: [String, Function, Array],
-        inputClass: [String, Function, Array],
-        roundedClass: [String, Function, Array],
-        iconLeftClass: [String, Function, Array],
-        iconRightClass: [String, Function, Array],
-        counterClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            newValue: this.value,
-            newType: this.type,
-            newAutocomplete: this.autocomplete || getValueByPath(getOptions(), 'input.autocompletete', 'off'),
-            isPasswordVisible: false,
-            height: 'auto'
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-ctrl-input'),
-                { [this.computedClass('expandedClass', 'o-ctrl-input--expanded')]: this.expanded }
-            ]
-        },
-        inputClasses() {
-            return [
-                this.computedClass('inputClass', 'o-input'),
-                { [this.computedClass('roundedClass', 'o-input--rounded')]: this.rounded },
-                { [this.computedClass('sizeClass', 'o-input--', this.size)]: this.size },
-                { [this.computedClass('variantClass', 'o-input--', (this.statusVariant || this.variant))]: (this.statusVariant || this.variant) },
-                { [this.computedClass('textareaClass', 'o-input__textarea')]: this.type === 'textarea' },
-                { [this.computedClass('iconLeftSpaceClass', 'o-input-iconspace-left')]: this.icon },
-                { [this.computedClass('iconRightSpaceClass', 'o-input-iconspace-right')]: this.hasIconRight }
-            ]
-        },
-        iconLeftClasses() {
-            return [
-                this.computedClass('iconLeftClass', 'o-input__icon-left')
-            ]
-        },
-        iconRightClasses() {
-            return [
-                this.computedClass('iconRightClass', 'o-input__icon-right')
-            ]
-        },
-        counterClasses() {
-            return [
-                this.computedClass('counterClass', 'o-input__counter')
-            ]
-        },
-        computedValue: {
-            get() {
-                return this.newValue
-            },
-            set(value) {
-                this.newValue = value
-                this.$emit('input', this.newValue)
-                this.syncFilled(this.newValue)
-                !this.isValid && this.checkHtml5Validity()
-            }
-        },
-        hasIconRight() {
-            return this.passwordReveal
-                || (this.statusIcon && this.statusVariantIcon)
-                || (this.clearable && this.newValue && this.clearIcon)
-                || this.iconRight
-        },
-        rightIcon() {
-            if (this.passwordReveal) {
-                return this.passwordVisibleIcon
-            } else if (this.clearable && this.newValue && this.clearIcon) {
-                return this.clearIcon
-            } else if (this.iconRight) {
-                return this.iconRight
-            }
-            return this.statusVariantIcon
-        },
-        rightIconVariant() {
-            if (this.passwordReveal || this.iconRight) {
-                return this.iconRightVariant || this.variant || null
-            }
-            return this.statusVariant
-        },
-
-        /**
-        * Check if have any message prop from parent if it's a Field.
-        */
-        hasMessage() {
-            return !!this.statusMessage
-        },
-
-        /**
-        * Current password-reveal icon name.
-        */
-        passwordVisibleIcon() {
-            return !this.isPasswordVisible ? 'eye' : 'eye-off'
-        },
-        /**
-        * Get value length
-        */
-        valueLength() {
-            if (typeof this.computedValue === 'string') {
-                return this.computedValue.length
-            } else if (typeof this.computedValue === 'number') {
-                return this.computedValue.toString().length
-            }
-            return 0
-        },
-        /**
-        * Computed inline styles for autoresize
-        */
-        computedStyles () {
-            if (!this.autosize) return {}
-            return {
-                resize: 'none',
-                height: this.height,
-                overflow: 'hidden'
-            }
-        },
-
-        $elementRef() {
-            return this.type === 'textarea'
-                ? 'textarea'
-                : 'input'
-        }
-    },
-    watch: {
-        /**
-        * When v-model is changed:
-        *   1. Set internal value.
-        */
-        value: {
-            immediate: true,
-            handler(value) {
-                this.newValue = value
-                this.syncFilled(this.newValue)
-                if(this.autosize) {
-                    this.resize()
-                }
-            }
-        },
-        type(type) {
-            this.newType = type
-        }
-    },
-    methods: {
-        /**
-        * Toggle the visibility of a password-reveal input
-        * by changing the type and focus the input right away.
-        */
-        togglePasswordVisibility() {
-            this.isPasswordVisible = !this.isPasswordVisible
-            this.newType = this.isPasswordVisible ? 'text' : 'password'
-
-            this.$nextTick(() => {
-                this.focus()
-            })
-        },
-
-        iconClick(emit, event) {
-            this.$emit(emit, event)
-            this.$nextTick(() => {
-                this.focus()
-            })
-        },
-
-        rightIconClick(event) {
-            if (this.passwordReveal) {
-                this.togglePasswordVisibility()
-            } else if (this.clearable) {
-                this.computedValue = ''
-            } else if (this.iconRightClickable) {
-                this.iconClick('icon-right-click', event)
-            }
-        },
-
-        resize() {
-            this.height = 'auto'
-            this.$nextTick(() => {
-                const scrollHeight = this.$refs.textarea.scrollHeight
-                this.height = scrollHeight + 'px'
-            })
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/input/Inspector.vue b/packages/oruga/src/components/input/Inspector.vue
deleted file mode 100644
index ed9507489..000000000
--- a/packages/oruga/src/components/input/Inspector.vue
+++ /dev/null
@@ -1,109 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field :variant="s.fieldvariant">
-                    <o-input v-bind="s" placeholder="Input"></o-input>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of input when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "iconLeftSpaceClass",
-                    description: "Class of the left icon space inside the input",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                    }
-                },
-                {
-                    class: "iconRightSpaceClass",
-                    description: "Class of the right icon space inside the input",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                    }
-                },
-                {
-                    class: "inputClass",
-                    description: "Class of the native input element"
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of input when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    }
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the left icon",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                    }
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the right icon",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                    }
-                },
-                {
-                    class: "counterClass",
-                    description: "Class of the counter element",
-                    properties: ['hasCounter', 'maxlength'],
-                    action: (cmp) => {
-                        cmp.data.hasCounter = true;
-                        cmp.data.maxlength = 10;
-                        let el = cmp.$el.querySelector('input')
-                        el.dispatchEvent(new Event('focus'));
-                    }
-                },
-               {
-                    class: "sizeClass",
-                    description : 'Class of the input size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = "large";
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the input variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    warning: "Variant property should be applied to the wrapping field",
-                    action: (cmp) => {
-                        cmp.data.fieldvariant = "warning";
-                    }
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap b/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap
deleted file mode 100644
index c8a28cd39..000000000
--- a/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap
+++ /dev/null
@@ -1,9 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OInput render correctly 1`] = `
-<div class="o-ctrl-input"><input type="text" autocomplete="off" class="o-input">
-    <!---->
-    <!---->
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/input/examples/Input.md b/packages/oruga/src/components/input/examples/Input.md
deleted file mode 100644
index 08774dd73..000000000
--- a/packages/oruga/src/components/input/examples/Input.md
+++ /dev/null
@@ -1,140 +0,0 @@
-
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Name">
-            <o-input v-model="name"></o-input>
-        </o-field>
-
-        <o-field label="Email"
-            variant="danger"
-            message="This email is invalid">
-            <o-input type="email"
-                value="john@"
-                maxlength="30">
-            </o-input>
-        </o-field>
-
-        <o-field label="Username"
-            variant="success"
-            message="This username is available">
-            <o-input value="johnsilver" maxlength="30"></o-input>
-        </o-field>
-
-        <o-field label="Password">
-            <o-input type="password"
-                value="iwantmytreasure"
-                password-reveal>
-            </o-input>
-        </o-field>
-
-        <o-field label="Message">
-            <o-input maxlength="200" type="textarea"></o-input>
-        </o-field>
-
-        <o-field>
-            <o-input placeholder="No label"></o-input>
-        </o-field>
-
-        <o-field label="Rounded">
-            <o-input placeholder="No label" rounded></o-input>
-        </o-field>
-
-        <o-field label="Success" variant="success">
-            <o-input placeholder="Success"></o-input>
-        </o-field>
-
-        <o-field label="Error"
-            variant="danger"
-            message="You can have a message too">
-            <o-input placeholder="Error"></o-input>
-        </o-field>
-
-        <o-field label="Info" variant="info">
-            <o-input placeholder="Info"></o-input>
-        </o-field>
-
-        <o-field label="Warning" variant="warning">
-            <o-input placeholder="Warning"></o-input>
-        </o-field>
-
-        <o-field label="Disabled">
-            <o-input placeholder="Disabled" disabled></o-input>
-        </o-field>
-
-        <o-field>
-            <o-input placeholder="Large"
-                size="large"
-                icon="user">
-            </o-input>
-        </o-field>
-
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                name: 'John Silver'
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <h3 class="subtitle">With Icons</h3>
-        <o-field>
-            <o-input placeholder="Search..."
-                type="search"
-                icon="search"
-                icon-clickable
-                @icon-click="searchIconClick">
-            </o-input>
-        </o-field>
-
-        <o-field>
-            <o-input placeholder="Email"
-                v-model="email"
-                type="email"
-                icon="envelope"
-                icon-right="times-circle"
-                icon-right-clickable
-                @icon-right-click="clearIconClick">
-            </o-input>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                email: ''
-            }
-        },
-        methods: {
-            searchIconClick() {
-                alert('You wanna make a search?')
-            },
-            clearIconClick() {
-                this.email = '';
-                alert('Email cleared!')
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/input/index.js b/packages/oruga/src/components/input/index.js
deleted file mode 100644
index 9bf6534a7..000000000
--- a/packages/oruga/src/components/input/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Input from './Input'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Input)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Input as OInput
-}
diff --git a/packages/oruga/src/components/inputitems/Inputitems.spec.js b/packages/oruga/src/components/inputitems/Inputitems.spec.js
deleted file mode 100644
index ae4fe165d..000000000
--- a/packages/oruga/src/components/inputitems/Inputitems.spec.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OInputitems from '@components/inputitems/Inputitems'
-
-describe('OInputitems', () => {
-    it('is called', () => {
-        const wrapper = shallowMount(OInputitems)
-        expect(wrapper.name()).toBe('OInputitems')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        const wrapper = shallowMount(OInputitems)
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-
-})
diff --git a/packages/oruga/src/components/inputitems/Inputitems.vue b/packages/oruga/src/components/inputitems/Inputitems.vue
deleted file mode 100644
index 7b6c5ca5a..000000000
--- a/packages/oruga/src/components/inputitems/Inputitems.vue
+++ /dev/null
@@ -1,453 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <div
-            :class="containerClasses"
-            @click="hasInput && focus($event)">
-            <slot name="selected" :items="items">
-                <span
-                    v-for="(item, index) in items"
-                    :key="getNormalizedItemText(item) + index"
-                    :class="itemClasses"
-                >
-                    <span>{{ getNormalizedItemText(item) }}</span>
-                    <o-icon
-                        v-if="closable"
-                        :class="closeClasses"
-                        clickable
-                        both
-                        :pack="iconPack"
-                        :icon="closeIcon"
-                        @click.native="removeItem(index, $event)"
-                        :aria-label="ariaCloseLabel"
-                    />
-                </span>
-            </slot>
-
-            <o-autocomplete
-                ref="autocomplete"
-                v-if="hasInput"
-                v-model="newItem"
-                v-bind="autocompleteBind"
-                :data="data"
-                :field="field"
-                :icon="icon"
-                :icon-pack="iconPack"
-                :maxlength="maxlength"
-                :has-counter="false"
-                :size="size"
-                :disabled="disabled"
-                :loading="loading"
-                :autocomplete="nativeAutocomplete"
-                :open-on-focus="openOnFocus"
-                :keep-first="keepFirst"
-                :keep-open="openOnFocus"
-                :group-field="groupField"
-                :group-options="groupOptions"
-                :use-html5-validation="useHtml5Validation"
-                :check-infinite-scroll="checkInfiniteScroll"
-                :append-to-body="appendToBody"
-                :confirm-keys="confirmKeys"
-                @typing="onTyping"
-                @focus="onFocus"
-                @blur="customOnBlur"
-                @invalid="onInvalid"
-                @keydown.native="keydown"
-                @compositionstart.native="isComposing = true"
-                @compositionend.native="isComposing = false"
-                @select="onSelect"
-                @infinite-scroll="$emit('infinite-scroll', $event)"
-                @icon-right-click="$emit('icon-right-click', $event)">
-                <template
-                    v-if="hasHeaderSlot"
-                    #header>
-                    <slot name="header" />
-                </template>
-                <template
-                    v-if="hasDefaultSlot"
-                    #default="props">
-                    <slot
-                        :option="props.option"
-                        :index="props.index" />
-                </template>
-                <template
-                    v-if="hasEmptySlot"
-                    #empty>
-                    <slot name="empty" />
-                </template>
-                <template
-                    v-if="hasFooterSlot"
-                    #footer>
-                    <slot name="footer" />
-                </template>
-            </o-autocomplete>
-        </div>
-
-        <small
-            v-if="hasCounter && (maxitems || maxlength)"
-            :class="counterClasses">
-            <template v-if="maxlength && valueLength > 0">
-                {{ valueLength }} / {{ maxlength }}
-            </template>
-            <template v-else-if="maxitems">
-                {{ itemsLength }} / {{ maxitems }}
-            </template>
-        </small>
-    </div>
-</template>
-
-<script>
-import Autocomplete from '../autocomplete/Autocomplete'
-import Icon from '../icon/Icon'
-
-import FormElementMixin from '../../utils/FormElementMixin'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-import { getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * A simple item input field that can have autocomplete functionality
- * @displayName Inputitems
- * @example ./examples/InputItems.md
- * @style _inputitems.scss
- */
-export default {
-    name: 'OInputitems',
-    components: {
-        [Autocomplete.name]: Autocomplete,
-        [Icon.name]: Icon
-    },
-    mixins: [FormElementMixin, BaseComponentMixin],
-    inheritAttrs: false,
-    configField: 'inputitems',
-    props: {
-        /** @model */
-        value: {
-            type: Array,
-            default: () => []
-        },
-        /** Items data */
-        data: {
-            type: Array,
-            default: () => []
-        },
-        /**
-         * Color of the each items, optional
-         * @values primary, info, success, warning, danger, and any other custom color
-         */
-        variant: String,
-        /** Limits the number of items, plus item counter */
-        maxitems: {
-            type: [Number, String],
-            required: false
-        },
-        /** Show counter when maxlength or maxtags props are passed */
-        hasCounter: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.hasCounter', true)
-            }
-        },
-        /** Property of the object (if data is array of objects) to use as display text */
-        field: {
-            type: String,
-            default: 'value'
-        },
-        /** Add autocomplete feature (if true, any Autocomplete props may be used too) */
-        allowAutocomplete: Boolean,
-        /** Add autocomplete feature (if true, any Autocomplete props may be used too) */
-        autocomplete: Boolean,
-        /**  Property of the object (if data is array of objects) to use as display text of group */
-        groupField: String,
-        /**  Property of the object (if data is array of objects) to use as key to get items array of each group, optional */
-        groupOptions: String,
-        nativeAutocomplete: String,
-        /**  Opens a dropdown with choices when the input field is focused */
-        openOnFocus: Boolean,
-        /** Input will be disabled */
-        disabled: Boolean,
-        /** Add close/delete button to the item */
-        closable: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.closable', true)
-            }
-        },
-        /**
-         * Array of keys
-         * (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)
-         * which will add a item when typing (default comma, tab and enter)
-         */
-        confirmKeys: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.confirmKeys', [',', 'Tab', 'Enter'])
-            }
-        },
-        /** Allow removing last item when pressing given keys, if input is empty */
-        removeOnKeys: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.removeOnKeys', ['Backspace'])
-            }
-        },
-        /** When autocomplete, it allow to add new items */
-        allowNew: Boolean,
-        /** Array of chars used to split when pasting a new string */
-        onPasteSeparators: {
-            type: Array,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.onPasteSeparators', [','])
-            }
-        },
-        /** Function to validate the value of the item before adding */
-        beforeAdding: {
-            type: Function,
-            default: () => true
-        },
-        /** Allows adding the same item multiple time */
-        allowDuplicates: {
-            type: Boolean,
-            default: false
-        },
-        /** Makes the autocomplete component check if list reached scroll end and emit infinite-scroll event */
-        checkInfiniteScroll: {
-            type: Boolean,
-            default: false
-        },
-        /** Function to create a new item to push into v-model (items) */
-        createItem: {
-            type: Function,
-            default: (item) => item
-        },
-        /** Icon name of close icon on selected item */
-        closeIcon: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.closeIcon', 'close')
-            }
-        },
-        /** The first option will always be pre-selected (easier to just hit enter or tab) */
-        keepFirst: Boolean,
-        /** Accessibility label for the close button */
-        ariaCloseLabel: String,
-        /** Append autocomplete content to body */
-        appendToBody: Boolean,
-        rootClass: [String, Array, Function],
-        expandedClass: [String, Array, Function],
-        variantClass: [String, Array, Function],
-        closeClass: [String, Array, Function],
-        itemClass: [String, Array, Function],
-        counterClass: [String, Array, Function],
-        autocompleteClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'inputitems.autocompleteClasses', {})
-            }
-        }
-    },
-    data() {
-        return {
-            items: Array.isArray(this.value) ? this.value.slice(0) : (this.value || []),
-            newItem: '',
-            isComposing: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-inputit'),
-                { [this.computedClass('expandedClass', 'o-inputit--expanded')]: this.expanded }
-            ]
-        },
-
-        containerClasses() {
-            return [
-                this.computedClass('containerClass', 'o-inputit__container'),
-                { [this.computedClass('sizeClass', 'o-inputit__container--', this.size)]: this.size },
-            ]
-        },
-
-        itemClasses() {
-            return [
-                this.computedClass('itemClass', 'o-inputit__item'),
-                { [this.computedClass('variantClass', 'o-inputit__item--', this.variant)]: this.variant }
-            ]
-        },
-
-        closeClasses() {
-            return [
-                this.computedClass('closeClass', 'o-inputit__item__close')
-            ]
-        },
-
-        counterClasses() {
-            return [
-                this.computedClass('counterClass', 'o-inputit__counter')
-            ]
-        },
-
-        autocompleteBind() {
-            return {
-                ...this.$attrs,
-                'root-class': this.computedClass('autocompleteClasses.rootClass', 'o-inputit__autocomplete'),
-                'input-classes': {
-                    'input-class': this.computedClass('autocompleteClasses.inputClasses.inputClass', 'o-inputit__input'),
-                },
-                ...this.autocompleteClasses
-            }
-        },
-
-        valueLength() {
-            return this.newItem.trim().length
-        },
-
-        hasDefaultSlot() {
-            return !!this.$scopedSlots.default
-        },
-
-        hasEmptySlot() {
-            return !!this.$slots.empty
-        },
-
-        hasHeaderSlot() {
-            return !!this.$slots.header
-        },
-
-        hasFooterSlot() {
-            return !!this.$slots.footer
-        },
-
-        /**
-         * Show the input field if a maxitems hasn't been set or reached.
-         */
-        hasInput() {
-            return this.maxitems == null || this.itemsLength < this.maxitems
-        },
-
-        itemsLength() {
-            return this.items.length
-        },
-
-        /**
-         * If input has onPasteSeparators prop,
-         * returning new RegExp used to split pasted string.
-         */
-        separatorsAsRegExp() {
-            const sep = this.onPasteSeparators
-
-            return sep.length ? new RegExp(sep.map((s) => {
-                return s ? s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') : null
-            }).join('|'), 'g') : null
-        },
-
-        $elementRef() {
-            return 'autocomplete'
-        }
-    },
-    watch: {
-        /**
-         * When v-model is changed set internal value.
-         */
-        value(value) {
-            this.items = Array.isArray(value) ? value.slice(0) : (value || [])
-        },
-
-        hasInput() {
-            if (!this.hasInput) this.onBlur()
-        }
-    },
-    methods: {
-        addItem(item) {
-            const itemToAdd = item || this.newItem.trim()
-
-            if (itemToAdd) {
-                if (!this.allowAutocomplete) {
-                    const reg = this.separatorsAsRegExp
-                    if (reg && itemToAdd.match(reg)) {
-                        itemToAdd.split(reg)
-                            .map((t) => t.trim())
-                            .filter((t) => t.length !== 0)
-                            .map(this.addItem)
-                        return
-                    }
-                }
-                // Add the item input if it is not blank
-                // or previously added (if not allowDuplicates).
-                const add = !this.allowDuplicates ? this.items.indexOf(this.createItem(itemToAdd)) === -1 : true
-                if (add && this.beforeAdding(itemToAdd)) {
-                    this.items.push(this.createItem(itemToAdd))
-                    this.$emit('input', this.items)
-                    this.$emit('add', itemToAdd)
-                }
-            }
-            // after autocomplete events
-            requestAnimationFrame(() => {
-                this.newItem = ''
-                this.$emit('typing', '')
-            })
-        },
-
-        getNormalizedItemText(item) {
-            if (typeof item === 'object') {
-                item = getValueByPath(item, this.field)
-            }
-
-            return `${item}`
-        },
-
-        customOnBlur(event) {
-            // Add item on-blur if not select only
-            if (!this.allowAutocomplete) this.addItem()
-
-            this.onBlur(event)
-        },
-
-        onSelect(option) {
-            if (!option) return
-
-            this.addItem(option)
-            this.$nextTick(() => {
-                this.newItem = ''
-            })
-        },
-
-        removeItem(index, event) {
-            const item = this.items.splice(index, 1)[0]
-            this.$emit('input', this.items)
-            this.$emit('remove', item)
-            if (event) event.stopPropagation()
-            if (this.openOnFocus && this.$refs.autocomplete) {
-                this.$refs.autocomplete.focus()
-            }
-            return item
-        },
-
-        removeLastItem() {
-            if (this.itemsLength > 0) {
-                this.removeItem(this.itemsLength - 1)
-            }
-        },
-
-        keydown(event) {
-            const { key } = event // cannot destructure preventDefault (https://stackoverflow.com/a/49616808/2774496)
-            if (this.removeOnKeys.indexOf(key) !== -1 && !this.newItem.length) {
-                this.removeLastItem()
-            }
-            // Stop if is to accept select only
-            if (this.allowAutocomplete && !this.allowNew) return
-
-            if (this.confirmKeys.indexOf(key) >= 0) {
-                // Allow Tab to advance to next field regardless
-                if (key !== 'Tab') event.preventDefault()
-                if (key === 'Enter' && this.isComposing) return
-                this.addItem()
-            }
-        },
-
-        onTyping(event) {
-            this.$emit('typing', event.trim())
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/inputitems/Inspector.vue b/packages/oruga/src/components/inputitems/Inspector.vue
deleted file mode 100644
index 3fd77aae1..000000000
--- a/packages/oruga/src/components/inputitems/Inspector.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-inputitems
-                    v-bind="s"
-                    v-model="tags"
-                    :data="filteredTags"
-                    autocomplete
-                    field="user.first_name"
-                    icon="tag"
-                    placeholder="Add a tag"
-                    @typing="getFilteredTags">
-                </o-inputitems>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-
- const data = [
-    {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"},
-    {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"},
-    {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"},
-    {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"},
-    {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"},
-    {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"},
-    {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"},
-    {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"},
-    {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"},
-    {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"},
-    {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"},
-    {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"},
-    {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"},
-    {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"},
-    {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"},
-    {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"},
-    {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"},
-    {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"},
-    {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"},
-    {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"},
-    {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"},
-    {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"},
-    {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"},
-    {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"},
-    {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"},
-    {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"},
-    {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"},
-    {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"},
-    {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"},
-    {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"},
-    {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"},
-    {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"},
-    {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"},
-    {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"},
-    {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"},
-    {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"},
-    {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"},
-    {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"},
-    {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"},
-    {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"},
-    {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"},
-    {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"},
-    {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"},
-    {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"},
-    {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"},
-    {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"},
-    {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"},
-    {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"},
-    {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"},
-    {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"},
-    {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"},
-    {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"},
-    {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"},
-    {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"},
-    {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"},
-    {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"},
-    {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"},
-    {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"},
-    {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"},
-    {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"}
-]
-
-export default {
-    data() {
-        return {
-            filteredTags: data,
-            tags: [ data[1] ],
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of input when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the entered item"
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the entered item variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-                {
-                    class: "closeClass",
-                    properties: ["closable"],
-                    description: "Class of the close button of entered item",
-                    action: (cmp) => {
-                        cmp.data.closable = true;
-                    }
-                },
-                {
-                    class: "counterClass",
-                    description: "Class of the counter element",
-                    properties: ['hasCounter', 'maxitems'],
-                    action: (cmp) => {
-                        cmp.data.hasCounter = true;
-                        cmp.data.maxitems = 5;
-                    }
-                },
-                {
-                    class: "autocompleteClasses",
-                    realClass: "autocompleteClasses.inputClass",
-                    description: "Classes to apply on internal autocomplete.",
-                    componentRef: "Autocomplete"
-                },
-            ],
-        };
-    },
-      methods: {
-        getFilteredTags(text) {
-            this.filteredTags = data.filter((option) => {
-                return option.user.first_name
-                    .toString()
-                    .toLowerCase()
-                    .indexOf(text.toLowerCase()) >= 0
-            })
-        }
-    }
-};
-</script>
-
diff --git a/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap b/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap
deleted file mode 100644
index 0ab28004a..000000000
--- a/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OInputitems render correctly 1`] = `
-<div class="o-inputit">
-    <div class="o-inputit__container">
-        <o-autocomplete-stub usehtml5validation="true" statusicon="true" value="" data="" field="value" menuposition="auto" animation="fade" confirmkeys=",,Tab,Enter" type="text" menutag="div" itemtag="div" rootclass="o-inputit__autocomplete" inputclasses="[object Object]"></o-autocomplete-stub>
-    </div>
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/inputitems/examples/Inputitems.md b/packages/oruga/src/components/inputitems/examples/Inputitems.md
deleted file mode 100644
index dffceb388..000000000
--- a/packages/oruga/src/components/inputitems/examples/Inputitems.md
+++ /dev/null
@@ -1,247 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Add some items">
-            <o-inputitems
-                v-model="tags"
-                icon="tag"
-                placeholder="Add an item"
-                aria-close-label="Delete this item">
-            </o-inputitems>
-        </o-field>
-        <p class="content"><b>Items:</b> {{ tags }}</p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                tags: [
-                    'Pistoia',
-                    'Valdinievole'
-                ]
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Autocomplete
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-switch v-model="allowNew">
-                Allow new items
-            </o-switch>
-            <o-switch v-model="openOnFocus">
-                Open on focus
-            </o-switch>
-        </div>
-        <o-field label="Enter some items">
-            <o-inputitems
-                v-model="tags"
-                :data="filteredTags"
-                autocomplete
-                :allow-new="allowNew"
-                :open-on-focus="openOnFocus"
-                field="user.first_name"
-                icon="tag"
-                placeholder="Add an item"
-                @typing="getFilteredTags">
-            </o-inputitems>
-        </o-field>
-        <p class="content"><b>Items:</b> {{ tags }}</p>
-    </section>
-</template>
-
-<script>
-    const data = [
-        {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"},
-        {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"},
-        {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"},
-        {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"},
-        {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"},
-        {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"},
-        {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"},
-        {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"},
-        {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"},
-        {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"},
-        {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"},
-        {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"},
-        {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"},
-        {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"},
-        {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"},
-        {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"},
-        {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"},
-        {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"},
-        {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"},
-        {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"},
-        {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"},
-        {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"},
-        {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"},
-        {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"},
-        {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"},
-        {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"},
-        {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"},
-        {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"},
-        {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"},
-        {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"},
-        {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"},
-        {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"},
-        {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"},
-        {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"},
-        {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"},
-        {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"},
-        {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"},
-        {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"},
-        {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"},
-        {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"},
-        {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"},
-        {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"},
-        {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"},
-        {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"},
-        {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"},
-        {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"},
-        {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"},
-        {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"},
-        {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"},
-        {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"},
-        {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"},
-        {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"},
-        {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"},
-        {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"},
-        {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"},
-        {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"},
-        {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"},
-        {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"},
-        {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"},
-        {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"}
-    ]
-
-    export default {
-        data() {
-            return {
-                filteredTags: data,
-                tags: [],
-                allowNew: false,
-                openOnFocus: false
-            }
-        },
-        methods: {
-            getFilteredTags(text) {
-                this.filteredTags = data.filter((option) => {
-                    return option.user.first_name
-                        .toString()
-                        .toLowerCase()
-                        .indexOf(text.toLowerCase()) >= 0
-                })
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Custom selected
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Enter some items">
-            <o-inputitems
-                v-model="items"
-                ref="input"
-                icon="tag"
-                placeholder="Add an item">
-                <template #selected="{ items }">
-                    <o-button
-                        native-type="button"
-                        v-for="(item, index) in items"
-                        :key="index"
-                        :variant="getType(item)"
-                        rounded
-                        @click="$refs.input.removeItem(index, $event)">
-                        {{ item }}
-                    </o-button>
-                </template>
-            </o-inputitems>
-        </o-field>
-        <p class="content"><b>Items:</b> {{ items }}</p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                items: []
-            }
-        },
-        methods: {
-            getType(item) {
-                const random = 'Z'.charCodeAt(0) - item.toUpperCase().charCodeAt(0) 
-                if (random >= 1 && random < 5) {
-                    return 'primary'
-                } else if (random >= 6 && random < 10) {
-                    return 'danger'
-                } else if (random >= 11 && random < 15) {
-                    return 'warning'
-                } else if (random >= 15 && random < 20) {
-                    return 'success'
-                } else if (random >= 20 && random < 25) {
-                    return 'info'
-                }
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Limits
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Limited to 10 characters">
-            <o-inputitems
-                maxlength="10"
-                :value="['Oruga', 'Vue', 'CSS']">
-            </o-inputitems>
-        </o-field>
-
-        <o-field label="Limited to 5 tags">
-            <o-inputitems
-                maxitems="5"
-                :value="['One', 'Two', 'Three', 'Four']">
-            </o-inputitems>
-        </o-field>
-
-        <o-field label="Limited to 10 characters and 5 tags">
-            <o-inputitems
-                maxlength="10"
-                maxitems="5"
-                :value="['Red', 'Green', 'Blue', 'White']">
-            </o-inputitems>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/inputitems/index.js b/packages/oruga/src/components/inputitems/index.js
deleted file mode 100644
index ca887797b..000000000
--- a/packages/oruga/src/components/inputitems/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Inputitems from './Inputitems'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Inputitems)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Inputitems as OInputitems
-}
diff --git a/packages/oruga/src/components/loading/Inspector.vue b/packages/oruga/src/components/loading/Inspector.vue
deleted file mode 100644
index dd916c5b8..000000000
--- a/packages/oruga/src/components/loading/Inspector.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <p style="position: relative">
-                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-                    <o-loading v-bind="s" icon="sync-alt" :active.sync="loading" :iconSpin="true">
-                    </o-loading>
-                </p>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            loading: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the loading overlay",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "iconClass",
-                    description: "Class for the loading icon",
-                    action: (cmp) => {
-                        cmp.data.canCancel = true;
-                        cmp.data.fullPage = false;
-                        this.loading = true;
-                    }
-                },
-                {
-                    class: "fullPageClass",
-                    description: "Class for the root element when fullpage",
-                    properties: ['fullPage'],
-                    action: (cmp) => {
-                        cmp.data.fullPage = true;
-                        cmp.data.canCancel = true;
-                        this.loading = true;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/loading/Loading.spec.js b/packages/oruga/src/components/loading/Loading.spec.js
deleted file mode 100644
index 167fffb0c..000000000
--- a/packages/oruga/src/components/loading/Loading.spec.js
+++ /dev/null
@@ -1,128 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OLoading from '@components/loading/Loading'
-
-let wrapper
-
-describe('OLoading', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OLoading, {
-            stubs: {
-                transition: false
-            }
-        })
-    })
-
-    it('is inactive initially', () => {
-        expect(wrapper.vm.isActive).toBeFalsy()
-    })
-
-    describe('active', () => {
-        beforeEach(() => {
-            wrapper.setProps({active: true})
-        })
-
-        it('Is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-        })
-
-        it('render correctly', () => {
-            expect(wrapper.html()).toMatchSnapshot()
-        })
-
-        it('changes isActive when active prop is modified', async () => {
-            wrapper.setProps({active: false})
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isActive).toBeFalsy()
-
-            wrapper.setProps({active: true})
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isActive).toBeTruthy()
-        })
-
-        it('close on cancel', (done) => {
-            wrapper.setProps({canCancel: true})
-            wrapper.vm.isActive = true
-            wrapper.vm.close = jest.fn()
-            wrapper.vm.cancel()
-            wrapper.vm.$nextTick(() => {
-                expect(wrapper.vm.close).toHaveBeenCalled()
-                done()
-            })
-        })
-
-        it('close on escape', () => {
-            wrapper.vm.isActive = true
-            wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel)
-            const event = new KeyboardEvent('keyup', {'key': 'Escape'})
-            wrapper.vm.keyPress({})
-            wrapper.vm.keyPress(event)
-            expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1)
-        })
-
-        it('emit events on close', () => {
-            wrapper.vm.close()
-            expect(wrapper.emitted()['close']).toBeTruthy()
-            expect(wrapper.emitted()['update:active']).toBeTruthy()
-        })
-    })
-
-    describe('programmatic without container', () => {
-        beforeEach(() => {
-            window.document.body.appendChild = jest.fn()
-            wrapper = shallowMount(OLoading, {
-                propsData: {
-                    programmatic: true
-                },
-                stubs: {
-                    transition: false
-                },
-                attachToDocument: true
-            })
-        })
-
-        it('Is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-            expect(window.document.body.appendChild).toHaveBeenCalled()
-        })
-
-        it('manage close', (done) => {
-            jest.useFakeTimers()
-
-            wrapper.vm.$destroy = jest.fn(() => wrapper.vm.$destroy)
-            wrapper.vm.close()
-
-            expect(wrapper.vm.isActive).toBeFalsy()
-
-            window.requestAnimationFrame(() => {
-                expect(wrapper.vm.$destroy).toHaveBeenCalled()
-                done()
-            }, 150)
-        })
-    })
-
-    const component = document.createElement('div')
-    describe('programmatic with a container', () => {
-        beforeEach(() => {
-            component.appendChild = jest.fn()
-            wrapper = shallowMount(OLoading, {
-                propsData: {
-                    programmatic: true,
-                    container: component
-                },
-                stubs: {
-                    transition: false
-                },
-                attachToDocument: true
-            })
-        })
-
-        it('Is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-            expect(component.appendChild).toHaveBeenCalled()
-        })
-
-        it('Is not full page', () => {
-            expect(wrapper.vm.displayInFullPage).toBeFalsy()
-        })
-    })
-})
diff --git a/packages/oruga/src/components/loading/Loading.vue b/packages/oruga/src/components/loading/Loading.vue
deleted file mode 100644
index 8f791907a..000000000
--- a/packages/oruga/src/components/loading/Loading.vue
+++ /dev/null
@@ -1,198 +0,0 @@
-<template>
-    <transition :name="animation" >
-        <div
-            :class="rootClasses"
-            v-if="isActive">
-            <div
-                :class="overlayClasses"
-                @click="cancel('outside')"
-            />
-            <slot>
-                <o-icon
-                    :icon="icon"
-                    :spin="iconSpin"
-                    :size="iconSize"
-                    :class="iconClasses"
-                    both
-                />
-            </slot>
-        </div>
-    </transition>
-</template>
-
-<script>
-import Icon from '../icon/Icon'
-
-import { getOptions } from '../../utils/config'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { removeElement, getValueByPath, promiseObject } from '../../utils/helpers'
-import { HTMLElement } from '../../utils/ssr'
-
-/**
- * A simple loading overlay
- * @displayName Loading
- * @example ./examples/Loading.md
- * @style _loading.scss
- */
-export default {
-    name: 'OLoading',
-    components: {
-        [Icon.name]: Icon
-    },
-    mixins: [BaseComponentMixin],
-    configField: 'loading',
-    props: {
-        /** Whether modal is active or not,  use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */
-        active: Boolean,
-        /** @ignore */
-        programmatic: Object,
-        /** @ignore */
-        promise: promiseObject(),
-        container: [Object, Function, HTMLElement],
-        /** Loader will overlay the full page */
-        fullPage: {
-            type: Boolean,
-            default: true
-        },
-        /* Custom animation (transition name) */
-        animation: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'loading.animation', 'fade') }
-        },
-        /** Can close Loading by pressing escape or clicking outside */
-        canCancel: {
-            type: Boolean,
-            default: false
-        },
-        /** Callback function to call after user canceled (pressed escape / clicked outside) */
-        onCancel: {
-            type: Function,
-            default: () => {}
-        },
-        /** Icon name */
-        icon: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'loading.icon', 'loading') }
-        },
-        /** Enable spin effect on icon */
-        iconSpin: {
-            type: Boolean,
-            default: true
-        },
-        iconSize: {
-            type: String,
-            default: 'medium'
-        },
-        overlay: {
-            type: Boolean,
-            default: true
-        },
-        rootClass: [String, Function, Array],
-        overlayClass: [String, Function, Array],
-        iconClass: [String, Function, Array],
-        fullPageClass:[String, Function, Array]
-    },
-    data() {
-        return {
-            isActive: this.active || false,
-            displayInFullPage: this.fullPage
-        }
-    },
-    watch: {
-        active(value) {
-            this.isActive = value
-        },
-        fullPage(value) {
-            this.displayInFullPage = value
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-load'),
-                { [this.computedClass('fullPageClass', 'o-load--fullpage')]: this.displayInFullPage }
-            ]
-        },
-        overlayClasses() {
-            return [
-                { [this.computedClass('overlayClass', 'o-load__overlay')]: this.overlay }
-            ]
-        },
-        iconClasses() {
-            return [
-                this.computedClass('iconClass', 'o-load__icon')
-            ]
-        }
-    },
-    methods: {
-        /**
-        * Close the Modal if canCancel.
-        */
-        cancel(method) {
-            if (!this.canCancel || !this.isActive) return
-
-            this.close({action: 'cancel', method})
-        },
-        /**
-        * Emit events, and destroy modal if it's programmatic.
-        */
-        close() {
-            this.onCancel.apply(null, arguments)
-            this.$emit('close')
-            this.$emit('update:active', false)
-
-            // Timeout for the animation complete before destroying
-            if (this.programmatic) {
-                if (this.programmatic.instances) {
-                    this.programmatic.instances.remove(this)
-                }
-                if (this.programmatic.resolve) {
-                    this.programmatic.resolve.apply(null, arguments)
-                }
-                this.isActive = false
-                window.requestAnimationFrame(() => {
-                    this.$destroy()
-                    removeElement(this.$el)
-                })
-            }
-        },
-        /**
-        * Keypress event that is bound to the document.
-        */
-        keyPress({ key }) {
-            if (key === 'Escape' || key === 'Esc') this.cancel('escape')
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeMount() {
-        // Insert the Loading component in body tag
-        // only if it's programmatic
-        if (this.programmatic) {
-            if (!this.container) {
-                document.body.appendChild(this.$el)
-            } else {
-                this.displayInFullPage = false
-                this.$emit('update:full-page', false)
-                this.container.appendChild(this.$el)
-            }
-        }
-    },
-    mounted() {
-        if (this.programmatic) {
-            if (this.programmatic.instances) {
-                this.programmatic.instances.add(this)
-            }
-            this.isActive = true
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('keyup', this.keyPress)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap b/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap
deleted file mode 100644
index 4edf7a75e..000000000
--- a/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OLoading active render correctly 1`] = `
-<transition-stub name="fade">
-    <div class="o-load o-load--fullpage">
-        <div class="o-load__overlay"></div>
-        <o-icon-stub icon="loading" size="medium" spin="true" both="true" class="o-load__icon"></o-icon-stub>
-    </div>
-</transition-stub>
-`;
diff --git a/packages/oruga/src/components/loading/examples/Loading.md b/packages/oruga/src/components/loading/examples/Loading.md
deleted file mode 100644
index 2ac0d6e60..000000000
--- a/packages/oruga/src/components/loading/examples/Loading.md
+++ /dev/null
@@ -1,208 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-button size="medium" variant="primary" @click="openLoading">
-                Launch loading
-            </o-button>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-        </o-field>
-        <p style="position: relative">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-            <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"></o-loading>
-        </p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isLoading: false,
-                isFullPage: true
-            }
-        },
-        methods: {
-            openLoading() {
-                this.isLoading = true
-                setTimeout(() => {
-                    this.isLoading = false
-                }, 10 * 1000)
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Slot
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-button size="medium" variant="primary" @click="openLoading">
-                Launch loading
-            </o-button>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-        </o-field>
-        <p style="position: relative">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-            <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true">
-                <o-icon
-                    pack="fas"
-                    icon="sync-alt"
-                    size="large"
-                    spin>
-                </o-icon>
-            </o-loading>
-        </p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isLoading: false,
-                isFullPage: true
-            }
-        },
-        methods: {
-            openLoading() {
-                this.isLoading = true
-                setTimeout(() => {
-                    this.isLoading = false
-                }, 10 * 1000)
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Programmatically
-
-::: demo
-```html
-<template>
-    <div>
-        <o-field>
-            <o-button size="medium" variant="primary" @click="openLoading">
-                Launch loading
-            </o-button>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-        </o-field>
-        <p style="position: relative" ref="element">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </p>
-    </div>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isFullPage: true,
-            }
-        },
-        methods: {
-            openLoading() {
-                const loadingComponent = this.$oruga.loading.open({
-                    fullPage: this.isFullPage,
-                    container: this.isFullPage ? null : this.$refs.element
-                })
-                setTimeout(() => loadingComponent.close(), 3 * 1000)
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Programmatically (with promise)
-
-::: demo
-```html
-<template>
-    <div>
-        <o-field>
-            <div class="buttons">
-                <o-button size="medium" variant="primary" @click="openLoading">
-                    Launch loading
-                </o-button>
-                <o-button size="medium" variant="primary" @click="openLoadingCloseAll">
-                    Launch loading (closeAll)
-                </o-button>
-            </div>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isFullPage">Display loader over full page</o-switch>
-        </o-field>
-        <p style="position: relative" ref="element">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </p>
-    </div>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isFullPage: true,
-            }
-        },
-        methods: {
-            async openLoading() {
-                const loadingComponent = this.$oruga.loading.open({
-                    fullPage: this.isFullPage,
-                    container: this.isFullPage ? null : this.$refs.element,
-                    canCancel: true,
-                })
-                setTimeout(() => loadingComponent.close({action:'cancel', method: 'timeout'}), 3 * 1000)
-                // Note utilizing the promise requires Promise be supported by the browser
-                // If you are running Vue 2 on IE 11 this will not be the case unless you 
-                // add a polyfill in your build.
-                const ret = await loadingComponent.promise
-                this.$oruga.notification.open({
-                    duration: 2000,
-                    message: 'Loading returned ' + JSON.stringify(ret),
-                    variant: 'info',
-                    position: 'top',
-                })
-            },
-            async openLoadingCloseAll() {
-                const loadingComponent = this.$oruga.loading.open({
-                    fullPage: this.isFullPage,
-                    container: this.isFullPage ? null : this.$refs.element,
-                    canCancel: true,
-                })
-                setTimeout(() => this.$oruga.loading.closeAll({action:'cancel', method: 'closeAll'}), 3 * 1000)
-                // Note utilizing the promise requires Promise be supported by the browser
-                // If you are running Vue 2 on IE 11 this will not be the case unless you 
-                // add a polyfill in your build.
-                const ret = await loadingComponent.promise
-                this.$oruga.notification.open({
-                    duration: 2000,
-                    message: 'Loading returned ' + JSON.stringify(ret),
-                    variant: 'info',
-                    position: 'top',
-                })
-            },
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/loading/index.js b/packages/oruga/src/components/loading/index.js
deleted file mode 100644
index ee5d7e597..000000000
--- a/packages/oruga/src/components/loading/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import Loading from './Loading'
-
-import { VueInstance } from '../../utils/config'
-import { merge } from '../../utils/helpers'
-import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins'
-import InstanceRegistry from "../../utils/InstanceRegistry"
-
-let localVueInstance
-
-let instances = new InstanceRegistry()
-
-const LoadingProgrammatic = {
-    open(params) {
-        let parent
-
-        const defaultParam = {
-            programmatic: { instances }
-        }
-        if (params.parent) {
-            parent = params.parent
-            delete params.parent
-        }
-        const propsData = merge(defaultParam, params)
-        if (window.Promise) {
-            propsData.promise = new Promise((p1, p2) => {
-                propsData.programmatic.resolve = p1
-                propsData.programmatic.reject = p2
-            })
-        }
-        const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance
-        const LoadingComponent = vm.extend(Loading)
-        return new LoadingComponent({
-            parent,
-            el: document.createElement('div'),
-            propsData
-        })
-    },
-    closeAll() {
-        instances.walk((entry) => {
-            entry.close(...arguments)
-        })
-    }
-}
-
-const Plugin = {
-    install(Vue) {
-        localVueInstance = Vue
-        registerComponent(Vue, Loading)
-        registerComponentProgrammatic(Vue, 'loading', LoadingProgrammatic)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    LoadingProgrammatic,
-    Loading as OLoading
-}
diff --git a/packages/oruga/src/components/menu/Menu.spec.js b/packages/oruga/src/components/menu/Menu.spec.js
deleted file mode 100644
index 7ddf87ec8..000000000
--- a/packages/oruga/src/components/menu/Menu.spec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OMenu from './Menu'
-
-let wrapper
-
-describe('BMenu', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OMenu)
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('OMenu')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/menu/Menu.vue b/packages/oruga/src/components/menu/Menu.vue
deleted file mode 100644
index c2f4be092..000000000
--- a/packages/oruga/src/components/menu/Menu.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <slot />
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin';
-
-/**
- * A simple menu
- * @displayName M
- * @style _menu.scss
- */
-export default {
-    name: 'OMenu',
-    configField: 'menu',
-    mixins: [BaseComponentMixin],
-    props: {
-        accordion: {
-            type: Boolean,
-            default: true
-        },
-        activable: {
-            type: Boolean,
-            default: true
-        },
-        rootClass: [String, Array, Function]
-    },
-    data() {
-        return {
-            isMenu: true // Used by MenuItem
-        }
-    },
-    computed: {
-        rootClasses() {
-            return this.computedClass('rootClass', 'o-menu')
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/menu/MenuItem.spec.js b/packages/oruga/src/components/menu/MenuItem.spec.js
deleted file mode 100644
index 97b2f9ac2..000000000
--- a/packages/oruga/src/components/menu/MenuItem.spec.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OMenuItem from './MenuItem'
-
-let wrapper
-
-describe('OMenuItem', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OMenuItem)
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('OMenuItem')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage onClick', () => {
-        wrapper.vm.reset = jest.fn()
-
-        wrapper.setProps({disabled: true})
-        wrapper.vm.onClick()
-
-        wrapper.setProps({disabled: false})
-        wrapper.vm.onClick()
-
-        expect(wrapper.vm.reset).toHaveBeenCalledTimes(1)
-        expect(wrapper.vm.newExpanded).toBeTruthy()
-        expect(wrapper.emitted()['update:expanded'][0]).toContainEqual(true)
-    })
-})
diff --git a/packages/oruga/src/components/menu/MenuItem.vue b/packages/oruga/src/components/menu/MenuItem.vue
deleted file mode 100644
index 6edcbd210..000000000
--- a/packages/oruga/src/components/menu/MenuItem.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-    <li
-        :role="ariaRoleMenu"
-        :class="wrapperClasses"
-    >
-        <component
-            :is="tag"
-            v-bind="$attrs"
-            :class="itemClasses"
-            @click="onClick()"
-            v-on="$listeners">
-            <o-icon
-                v-if="icon"
-                :icon="icon"
-                :pack="iconPack"
-                :size="size"
-            />
-            <span v-if="label"> {{ label }} </span>
-            <slot
-                v-else
-                name="label"
-                :expanded="newExpanded"
-                :active="newActive"
-            />
-        </component>
-        <!-- sub menu items -->
-        <template v-if="$slots.default">
-            <transition :name="animation">
-                <ul
-                    :class="submenuClasses"
-                    v-show="newExpanded"
-                >
-                    <slot />
-                </ul>
-            </transition>
-        </template>
-    </li>
-</template>
-
-<script>
-import Icon from '../icon/Icon'
-import BaseComponentMixin from '../../utils/BaseComponentMixin';
-
-export default {
-    name: 'OMenuItem',
-    components: {
-        [Icon.name]: Icon
-    },
-    mixins: [BaseComponentMixin],
-    configField: 'menu',
-    inheritAttrs: false,
-    props: {
-        label: String,
-        active: Boolean,
-        expanded: Boolean,
-        disabled: Boolean,
-        iconPack: String,
-        icon: String,
-        animation: {
-            type: String,
-            default: 'slide'
-        },
-        tag: {
-            type: String,
-            default: 'a'
-        },
-        ariaRole: {
-            type: String,
-            default: ''
-        },
-        /**
-         * Icon size, optional
-         * @values small, medium, large
-         */
-        size: String,
-        itemClass: [String, Array, Function],
-        itemActiveClass: [String, Array, Function],
-        itemDisabledClass: [String, Array, Function],
-        itemIconTextClass: [String, Array, Function],
-        itemSubmenuClass: [String, Array, Function],
-        itemWrapperClass: [String, Array, Function],
-    },
-    data() {
-        return {
-            newActive: this.active,
-            newExpanded: this.expanded
-        }
-    },
-    computed: {
-        ariaRoleMenu() {
-            return this.ariaRole === 'menuitem' ? this.ariaRole : null
-        },
-        itemClasses() {
-            return {
-                [this.computedClass('itemClass', 'o-menu-item')]: true,
-                [this.computedClass('itemActiveClass', 'o-menu-item--active')]: this.newActive,
-                [this.computedClass('itemDisabledClass', 'o-menu-item--disabled')]: this.disabled,
-                [this.computedClass('itemIconTextClass', 'o-menu-item--icon-text')]: this.icon,
-            }
-        },
-        submenuClasses() {
-            return this.computedClass('itemSubmenuClass', 'o-menu-item__submenu')
-        },
-        wrapperClasses() {
-            return this.computedClass('itemWrapperClass', 'o-menu-item__wrapper')
-        },
-    },
-    watch: {
-        active(value) {
-            this.newActive = value
-        },
-        expanded(value) {
-            this.newExpanded = value
-        }
-    },
-    methods: {
-        onClick() {
-            if (this.disabled) return
-            const menu = this.getMenu()
-            this.reset(this.$parent, menu)
-            this.newExpanded = this.$props.expanded || !this.newExpanded
-            this.$emit('update:expanded', this.newExpanded)
-            if (menu && menu.activable) {
-                this.newActive = true
-                this.$emit('update:active', this.newActive)
-            }
-        },
-        reset(parent, menu) {
-            const items = parent.$children.filter((c) => c.name === this.name)
-            items.forEach((item) => {
-                if (item !== this) {
-                    this.reset(item, menu)
-                    if (!parent.$data.isMenu || (parent.$data.isMenu && parent.accordion)) {
-                        item.newExpanded = false
-                        item.$emit('update:expanded', item.newActive)
-                    }
-                    if (menu && menu.activable) {
-                        item.newActive = false
-                        item.$emit('update:active', item.newActive)
-                    }
-                }
-            })
-        },
-        getMenu() {
-            let parent = this.$parent
-            while (parent && !parent.$data.isMenu) {
-                parent = parent.$parent
-            }
-            return parent
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/menu/MenuList.spec.js b/packages/oruga/src/components/menu/MenuList.spec.js
deleted file mode 100644
index 601d20817..000000000
--- a/packages/oruga/src/components/menu/MenuList.spec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OMenuList from './MenuList'
-
-let wrapper
-
-describe('OMenuList', () => {
-    beforeEach(() => {
-        const Menu = {
-            components: { OMenuList },
-            template: `
-            <div>
-                <o-menu-list label="Test">
-                </o-menu-list>
-            </div>
-            `
-        }
-        wrapper = mount(Menu)
-    })
-
-    it('is called', () => {
-        expect(wrapper.findAll('.o-menu-label').at(0).text()).toBe('Test')
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('slot label', () => {
-        expect(wrapper.findAll('.o-menu-label').at(0).text()).toBe('Test')
-    })
-})
diff --git a/packages/oruga/src/components/menu/MenuList.vue b/packages/oruga/src/components/menu/MenuList.vue
deleted file mode 100644
index 5a5cb7d6e..000000000
--- a/packages/oruga/src/components/menu/MenuList.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
-    <div>
-        <div
-            v-if="label || $slots.label"
-            :class="labelClasses"
-        >
-            <o-icon
-                v-if="label && icon"
-                :icon="icon"
-                :pack="iconPack"
-                :size="size"
-            />
-            <span v-if="label">{{ label }}</span>
-            <slot
-                v-else
-                name="label"
-            />
-        </div>
-        <ul
-            :class="listClasses"
-            :role="computedAriaRole"
-        >
-            <slot />
-        </ul>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin';
-
-export default {
-    name: 'OMenuList',
-    configField: 'menu',
-    mixins: [BaseComponentMixin],
-    props: {
-        ariaRole: String,
-        label: String,
-        icon: String,
-        iconPack: String,
-        /**
-         * Icon size, optional
-         * @values small, medium, large
-         */
-        size: String,
-        listClass: [String, Array, Function],
-        listLabelClass: [String, Array, Function],
-    },
-    computed: {
-        listClasses() {
-            return this.computedClass('listClass', 'o-menu-list');
-        },
-        labelClasses() {
-            return this.computedClass('listLabelClass', 'o-menu-label');
-        },
-        computedAriaRole() {
-            return this.ariaRole === 'menu' ? this.ariaRole : null;
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap
deleted file mode 100644
index 42d79f742..000000000
--- a/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`BMenu render correctly 1`] = `<div class="o-menu"></div>`;
diff --git a/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap
deleted file mode 100644
index 80f61a4e8..000000000
--- a/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap
+++ /dev/null
@@ -1,9 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OMenuItem render correctly 1`] = `
-<li><a class="o-menu-item">
-        <!---->
-    </a>
-    <!---->
-</li>
-`;
diff --git a/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap
deleted file mode 100644
index 378ecb7ce..000000000
--- a/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap
+++ /dev/null
@@ -1,12 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OMenuList render correctly 1`] = `
-<div>
-    <div>
-        <div class="o-menu-label">
-            <!----> <span>Test</span>
-        </div>
-        <ul class="o-menu-list"></ul>
-    </div>
-</div>
-`;
diff --git a/packages/oruga/src/components/menu/index.js b/packages/oruga/src/components/menu/index.js
deleted file mode 100644
index 2c1f3e655..000000000
--- a/packages/oruga/src/components/menu/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import Menu from './Menu'
-import MenuList from './MenuList'
-import MenuItem from './MenuItem'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Menu)
-        registerComponent(Vue, MenuList)
-        registerComponent(Vue, MenuItem)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Menu as OMenu,
-    MenuList as OMenuList,
-    MenuItem as OMenuItem
-}
diff --git a/packages/oruga/src/components/modal/Inspector.vue b/packages/oruga/src/components/modal/Inspector.vue
deleted file mode 100644
index 864ec0c42..000000000
--- a/packages/oruga/src/components/modal/Inspector.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-modal v-bind="s" :active.sync="isImageModalActive">
-                    <p style="text-align: center">
-                        <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" />
-                    </p>
-                </o-modal>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            isImageModalActive: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of modal component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the modal overlay",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the modal content",
-                    specificity: "when <b>mobileClass</b> is applied",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "closeClass",
-                    description: "Class of the close button",
-                    action: () => {
-                        this.isImageModalActive = true;
-                    }
-                },
-                {
-                    class: "fullScreenClass",
-                    description: "Class of the modal when fullscreen",
-                    properties: ['fullScreen'],
-                    action: (cmp) => {
-                        this.isImageModalActive = true;
-                        cmp.data.fullScreen = true;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/modal/Modal.spec.js b/packages/oruga/src/components/modal/Modal.spec.js
deleted file mode 100644
index 972cf4de9..000000000
--- a/packages/oruga/src/components/modal/Modal.spec.js
+++ /dev/null
@@ -1,84 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OModal from '@components/modal/Modal'
-
-let wrapper
-
-describe('OModal', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OModal, {
-            propsData: {
-                active: true
-            },
-            stubs: {
-                transition: false
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage props validator', () => {
-        const ariaRole = wrapper.vm.$options.props.ariaRole
-
-        expect(ariaRole.type).toBe(String)
-        expect(ariaRole.validator && ariaRole.validator('d')).toBeFalsy()
-        expect(ariaRole.validator && ariaRole.validator('dialog')).toBeTruthy()
-        expect(ariaRole.validator && ariaRole.validator('alertdialog')).toBeTruthy()
-    })
-
-    it('sets isActive when active prop is changed', async () => {
-        wrapper.setProps({active: false})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.isActive).toBeFalsy()
-    })
-
-    it('manage cancel options', () => {
-        wrapper.setProps({canCancel: true})
-        expect(wrapper.vm.cancelOptions).toEqual(['escape', 'x', 'outside', 'button'])
-
-        wrapper.setProps({canCancel: false})
-        expect(wrapper.vm.cancelOptions).toEqual([])
-
-        const options = ['escape']
-        wrapper.setProps({canCancel: options})
-        expect(wrapper.vm.cancelOptions).toEqual(options)
-
-        wrapper.vm.close = jest.fn(() => wrapper.vm.close)
-        wrapper.vm.cancel()
-        wrapper.vm.cancel('escape')
-        expect(wrapper.vm.close).toHaveBeenCalledTimes(1)
-    })
-
-    it('close on escape', () => {
-        wrapper.setProps({canCancel: true})
-        wrapper.setProps({active: true})
-        wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel)
-        const event = new KeyboardEvent('keyup', {'key': 'Escape'})
-        wrapper.vm.keyPress({})
-        wrapper.vm.keyPress(event)
-        expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1)
-    })
-
-    it('emit events on close', (done) => {
-        wrapper.vm.$destroy = jest.fn(() => wrapper.vm.$destroy)
-        wrapper.vm.close()
-        expect(wrapper.emitted()['close']).toBeTruthy()
-        expect(wrapper.emitted()['update:active']).toBeTruthy()
-
-        wrapper.setProps({programmatic: true})
-        wrapper.vm.close()
-        expect(wrapper.vm.isActive).toBeFalsy()
-
-        window.requestAnimationFrame(() => {
-            expect(wrapper.vm.$destroy).toHaveBeenCalled()
-            done()
-        }, 150)
-
-    })
-})
diff --git a/packages/oruga/src/components/modal/Modal.vue b/packages/oruga/src/components/modal/Modal.vue
deleted file mode 100644
index 0aacb6fae..000000000
--- a/packages/oruga/src/components/modal/Modal.vue
+++ /dev/null
@@ -1,386 +0,0 @@
-<template>
-    <transition
-        :name="animation"
-        @after-enter="afterEnter"
-        @before-leave="beforeLeave"
-        @after-leave="afterLeave"
-    >
-        <div
-            v-if="!destroyed"
-            v-show="isActive"
-            :class="rootClasses"
-            v-trap-focus="trapFocus"
-            tabindex="-1"
-            :role="ariaRole"
-            :aria-label="ariaLabel"
-            :aria-modal="ariaModal">
-            <div :class="overlayClasses" @click="cancel('outside')"/>
-            <div
-                :class="contentClasses"
-                :style="customStyle">
-                <component
-                    v-if="component"
-                    v-bind="props"
-                    v-on="events"
-                    :is="component"
-                    @close="close"/>
-                <div v-else-if="content"> {{ content }} </div>
-                <slot v-else/>
-                <o-icon
-                    v-if="showX"
-                    v-show="!animating"
-                    clickable
-                    both
-                    :class="closeClasses"
-                    :icon="closeIcon"
-                    :size="closeIconSize"
-                    @click.native="cancel('x')"/>
-            </div>
-        </div>
-    </transition>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import trapFocus from '../../directives/trapFocus'
-import { removeElement, getValueByPath, toCssDimension, promiseObject } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-import Icon from '../icon/Icon'
-
-/**
- * Classic modal overlay to include any content you may need
- * @displayName Modal
- * @example ./examples/Modal.md
- * @style _modal.scss
- */
-export default {
-    name: 'OModal',
-    components: {
-        [Icon.name]: Icon
-    },
-    configField: 'modal',
-    directives: {
-        trapFocus
-    },
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    props: {
-        /** Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */
-        active: Boolean,
-        /** Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ€” this.$emit('close') */
-        component: [Object, Function],
-        /** Text content */
-        content: String,
-        /** @ignore */
-        programmatic: Object,
-        /** @ignore */
-        promise: promiseObject(),
-        /** Props to be binded to the injected component */
-        props: Object,
-         /** Events to be binded to the injected component */
-        events: Object,
-        /** Width of the Modal */
-        width: {
-            type: [String, Number],
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.width', 960)
-            }
-        },
-        /** Custom animation (transition name) */
-        animation: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.animation', 'zoom-out')
-            }
-        },
-        /**
-         * Can close Modal by clicking 'X', pressing escape or clicking outside
-         * @values escape, x, outside, button
-         */
-        canCancel: {
-            type: [Array, Boolean],
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.canCancel', ['escape', 'x', 'outside', 'button'])
-            }
-        },
-        /** Callback function to call after user canceled (clicked 'X' / pressed escape / clicked outside) */
-        onCancel: {
-            type: Function,
-            default: () => {}
-        },
-        /** Callback function to call after close (programmatically close or user canceled) */
-        onClose: {
-            type: Function,
-            default: () => {}
-        },
-        /**
-         * clip to remove the body scrollbar, keep to have a non scrollable scrollbar to avoid shifting background, but will set body to position fixed, might break some layouts
-         * @values keep, clip
-         */
-        scroll: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.scroll', 'keep')
-            }
-        },
-        /** Display modal as full screen */
-        fullScreen: Boolean,
-        /** Trap focus inside the modal. */
-        trapFocus: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.trapFocus', true)
-            }
-        },
-        ariaRole: {
-            type: String,
-            validator: (value) => {
-                return [ 'dialog', 'alertdialog' ].indexOf(value) >= 0
-            }
-        },
-        ariaModal: Boolean,
-        ariaLabel: String,
-        /** Destroy modal on hide */
-        destroyOnHide: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.destroyOnHide', true)
-            }
-        },
-        /** Automatically focus modal when active */
-        autoFocus: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.autoFocus', true)
-            }
-        },
-        /** Icon name */
-        closeIcon: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'modal.closeIcon', 'close')
-            }
-        },
-        closeIconSize: {
-            type: String,
-            default: 'medium'
-        },
-        rootClass: [String, Function, Array],
-        overlayClass: [String, Function, Array],
-        contentClass: [String, Function, Array],
-        closeClass: [String, Function, Array],
-        fullScreenClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        scrollClipClass: [String, Function, Array],
-        noScrollClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            isActive: this.active || false,
-            savedScrollTop: null,
-            newWidth: toCssDimension(this.width),
-            animating: !this.active,
-            destroyed: !this.active
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-modal'),
-                { [this.computedClass('mobileClass', 'o-modal--mobile')]: this.isMatchMedia },
-            ]
-        },
-        overlayClasses() {
-            return [
-                this.computedClass('overlayClass', 'o-modal__overlay')
-            ]
-        },
-        contentClasses() {
-            return [
-                this.computedClass('contentClass', 'o-modal__content'),
-                { [this.computedClass('fullScreenClass', 'o-modal__content--full-screen')]: this.fullScreen }
-            ]
-        },
-        closeClasses() {
-            return [
-                this.computedClass('closeClass', 'o-modal__close')
-            ]
-        },
-        scrollClass() {
-            if (this.scroll === 'clip') {
-                return this.computedClass('scrollClipClass', 'o-clipped')
-            }
-            return this.computedClass('noScrollClass', 'o-noscroll')
-        },
-        cancelOptions() {
-            return typeof this.canCancel === 'boolean'
-                ? this.canCancel
-                    ? getValueByPath(getOptions(), 'modal.canCancel', ['escape', 'x', 'outside', 'button'])
-                    : []
-                : this.canCancel
-        },
-        showX() {
-            return this.cancelOptions.indexOf('x') >= 0
-        },
-        customStyle() {
-            if (!this.fullScreen) {
-                return { maxWidth: this.newWidth }
-            }
-            return null
-        }
-    },
-    watch: {
-        active(value) {
-            this.isActive = value
-        },
-        isActive(value) {
-            if (value) this.destroyed = false
-            this.handleScroll()
-            this.$nextTick(() => {
-                if (value && this.$el && this.$el.focus && this.autoFocus) {
-                    this.$el.focus()
-                }
-            })
-        }
-    },
-    methods: {
-        handleScroll() {
-            if (typeof window === 'undefined') return
-
-            if (this.scroll === 'clip') {
-                if (this.scrollClass) {
-                    if (this.isActive) {
-                        document.documentElement.classList.add(this.scrollClass)
-                    } else {
-                        document.documentElement.classList.remove(this.scrollClass)
-                    }
-                    return
-                }
-            }
-
-            this.savedScrollTop = !this.savedScrollTop
-                ? document.documentElement.scrollTop
-                : this.savedScrollTop
-
-            if (this.scrollClass) {
-                if (this.isActive) {
-                    document.body.classList.add(this.scrollClass)
-                } else {
-                    document.body.classList.remove(this.scrollClass)
-                }
-            }
-
-            if (this.isActive) {
-                document.body.style.top = `-${this.savedScrollTop}px`
-                return
-            }
-
-            document.documentElement.scrollTop = this.savedScrollTop
-            document.body.style.top = null
-            this.savedScrollTop = null
-        },
-
-        /**
-        * Close the Modal if canCancel and call the onCancel prop (function).
-        */
-        cancel(method) {
-            if (this.cancelOptions.indexOf(method) < 0) return
-
-            this.onCancel.apply(null, arguments)
-            this.close({action: 'cancel', method});
-        },
-
-        /**
-        * Call the onCancel prop (function).
-        * Emit events, and destroy modal if it's programmatic.
-        */
-        close() {
-            this.isActive = false
-            this.$emit('close')
-            this.$emit('update:active', false)
-            this.onClose.apply(null, arguments)
-
-            // Waiting for the animation complete before destroying
-            if (this.programmatic) {
-                if (this.programmatic.instances) {
-                    this.programmatic.instances.remove(this)
-                }
-                if (this.programmatic.resolve) {
-                    this.programmatic.resolve.apply(null, arguments)
-                }
-
-                window.requestAnimationFrame(() => {
-                    this.$destroy()
-                    removeElement(this.$el)
-                })
-            }
-        },
-
-        /**
-        * Keypress event that is bound to the document.
-        */
-        keyPress({ key }) {
-            if (this.isActive && (key === 'Escape' || key === 'Esc')) this.cancel('escape')
-        },
-
-        /**
-        * Transition after-enter hook
-        */
-        afterEnter() {
-            this.animating = false
-        },
-
-        /**
-        * Transition before-leave hook
-        */
-        beforeLeave() {
-            this.animating = true
-        },
-
-        /**
-        * Transition after-leave hook
-        */
-        afterLeave() {
-            if (this.destroyOnHide) {
-                this.destroyed = true
-            }
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeMount() {
-        // Insert the Modal component in body tag
-        // only if it's programmatic
-        this.programmatic && document.body.appendChild(this.$el)
-    },
-    mounted() {
-        if (this.programmatic) {
-            if (this.programmatic.instances) {
-                this.programmatic.instances.add(this)
-            }
-            this.isActive = true
-        }
-        else if (this.isActive) this.handleScroll()
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('keyup', this.keyPress)
-            // reset scroll
-            const savedScrollTop = !this.savedScrollTop
-                ? document.documentElement.scrollTop
-                : this.savedScrollTop
-            if (this.scrollClass) {
-                document.body.classList.remove(this.scrollClass)
-                document.documentElement.classList.remove(this.scrollClass)
-            }
-            document.documentElement.scrollTop = savedScrollTop
-            document.body.style.top = null
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap b/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap
deleted file mode 100644
index bcecd1968..000000000
--- a/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap
+++ /dev/null
@@ -1,12 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OModal render correctly 1`] = `
-<transition-stub name="zoom-out">
-    <div tabindex="-1" class="o-modal">
-        <div class="o-modal__overlay"></div>
-        <div class="o-modal__content" style="max-width: 960px;">
-            <o-icon-stub icon="close" size="medium" clickable="true" both="true" class="o-modal__close"></o-icon-stub>
-        </div>
-    </div>
-</transition-stub>
-`;
diff --git a/packages/oruga/src/components/modal/examples/Modal.md b/packages/oruga/src/components/modal/examples/Modal.md
deleted file mode 100644
index 61f1c4122..000000000
--- a/packages/oruga/src/components/modal/examples/Modal.md
+++ /dev/null
@@ -1,365 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button size="medium" variant="primary"
-                @click="isImageModalActive = true">
-                Open modal
-            </o-button>
-            <o-button size="medium" variant="primary"
-                @click="isCardModalActive = true">
-                Open modal (clip scroll)
-            </o-button>
-        </div>
-
-        <o-modal :active.sync="isImageModalActive">
-            <p style="text-align: center">
-                <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4">
-            </p>
-        </o-modal>
-
-        <o-modal :active.sync="isCardModalActive" :width="640" scroll="clip">
-            <p>
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sodales leo nec convallis rutrum. Vivamus pharetra molestie arcu at dictum. Nulla faucibus leo eget enim egestas, in tempus justo venenatis. Duis dictum suscipit erat, a dapibus eros lobortis ac. Praesent tempor rhoncus convallis. Nullam in ipsum convallis, rutrum elit eget, dictum ipsum. Nunc sagittis aliquet massa. Etiam lacus sapien, eleifend non eros quis, finibus ornare nisl. Ut laoreet sit amet lacus non dignissim. Sed convallis mattis enim, sed interdum risus molestie ut. Praesent vel ex hendrerit, cursus lectus a, blandit felis. Nam luctus orci nec varius commodo.
-            </p>
-            <p>
-                Sed vulputate metus purus, ut egestas erat congue et. Donec tellus orci, malesuada eget dolor sed, pellentesque bibendum nunc. In eu egestas diam. Integer sed congue massa. Sed a urna quam. Morbi vulputate dolor eleifend ligula lobortis venenatis. Aenean pellentesque risus sit amet faucibus molestie. Aliquam eu lorem aliquet, aliquam nulla in, vestibulum lorem. Donec mollis mi at sollicitudin tristique. Nullam id nibh pulvinar, dignissim nisl id, gravida risus. Nulla arcu elit, scelerisque in sollicitudin et, laoreet et metus. Aenean placerat turpis nec tincidunt tempus.
-            </p>
-        </o-modal>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                isImageModalActive: false,
-                isCardModalActive: false
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Programmatically
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button size="medium" variant="primary"
-                @click="imageModal()">
-                Open modal (HTML)
-            </o-button>
-            <o-button size="medium" variant="primary"
-                @click="cardModal()">
-                Open modal (Component)
-            </o-button>
-        </div>
-    </section>
-</template>
-
-<script>
-    const ModalForm = {
-        props: ['email', 'password'],
-        template: `
-            <form action="">
-                <div class="modal-card" style="width: auto">
-                    <header class="modal-card-head">
-                        <p class="modal-card-title">Login</p>
-                        <o-icon
-                            clickable
-                            native-type="button"
-                            icon="times"
-                            @click.native="$emit('close')"/>
-                    </header>
-                    <section class="modal-card-body">
-                        <o-field label="Email">
-                            <o-input
-                                type="email"
-                                :value="email"
-                                placeholder="Your email"
-                                required>
-                            </o-input>
-                        </o-field>
-
-                        <o-field label="Password">
-                            <o-input
-                                type="password"
-                                :value="password"
-                                password-reveal
-                                placeholder="Your password"
-                                required>
-                            </o-input>
-                        </o-field>
-
-                        <o-field>
-                            <o-checkbox>Remember me</o-checkbox>
-                        </o-field>
-                    </section>
-                    <footer class="modal-card-foot">
-                        <o-button type="button" @click="$emit('close')">Close</o-button>
-                        <o-button variant="primary">Login</o-button>
-                    </footer>
-                </div>
-            </form>
-        `
-    }
-
-    export default {
-        methods: {
-            imageModal() {
-                const h = this.$createElement
-                const vnode = h('p', { style: { 'text-align': 'center' }}, [
-                    h('img', { attrs: { src: 'https://avatars2.githubusercontent.com/u/66300512?s=200&v=4' }})
-                ])
-                this.$oruga.modal.open({
-                    content: [ vnode ]
-                })
-            },
-            cardModal() {
-                this.$oruga.modal.open({
-                    // parent is only for Vue2. in Vue 3 omit this option
-                    parent: this,
-                    component: ModalForm,
-                    trapFocus: true
-                })
-            }
-        }
-    }
-</script>
-
-<style>
-.modal-card {
-    display: flex;
-    flex-direction: column;
-    max-height: calc(100vh - 40px);
-    overflow: hidden;
-}
-@media screen and (min-width: 769px) {
-    .modal-card {
-        margin: 0 auto;
-        max-height: calc(100vh - 40px);
-        width: 640px;
-    }
-}
-.modal-card {
-    margin: 0 20px;
-    max-height: calc(100vh - 160px);
-    overflow: auto;
-    position: relative;
-    width: 100%;
-}
-.modal-card-foot, .modal-card-head {
-    align-items: center;
-    background-color: #f5f5f5;
-    display: flex;
-    flex-shrink: 0;
-    justify-content: flex-start;
-    padding: 20px;
-    position: relative;
-}
-.modal-card-head {
-    border-bottom: 1px solid #dbdbdb;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-}
-.modal-card-body {
-    -webkit-overflow-scrolling: touch;
-    background-color: #fff;
-    flex-grow: 1;
-    flex-shrink: 1;
-    overflow: auto;
-    padding: 20px;
-}
-.modal-card-foot {
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top: 1px solid #dbdbdb;
-}
-.modal-card-title {
-    color: #363636;
-    flex-grow: 1;
-    flex-shrink: 0;
-    font-size: 1.5rem;
-    line-height: 1;
-    margin: 0;
-}
-.modal-card-foot .o-button:not(:last-child) {
-    margin-right: .5em;
-}
-</style>
-```
-:::
-
-### Programmatically (with promises and async/await)
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button size="medium" variant="primary"
-                @click="promptModal()">
-                Open prompt
-            </o-button>
-            <o-button size="medium" variant="primary"
-                @click="promptModalCloseAll()">
-                Open prompt (closeAll timeout)
-            </o-button>
-        </div>
-    </section>
-</template>
-
-<script>
-    const ModalForm = {
-        props: ['message', 'title'],
-        template: `
-            <form action="">
-                <div class="modal-card" style="width: auto">
-                    <header class="modal-card-head">
-                        <p class="modal-card-title">{{ title }}</p>
-                        <o-icon
-                            clickable
-                            native-type="button"
-                            icon="times"
-                            @click.native="$emit('close', {action: 'cancel', method: 'x'})"/>
-                    </header>
-                    <section class="modal-card-body">
-                        <p>{{ message }}</p>
-                    </section>
-                    <footer class="modal-card-foot">
-                        <o-button @click="$emit('close', {action: 'no'})">No</o-button>
-                        <o-button variant="primary" @click="$emit('close', {action: 'yes'})">Yes</o-button>
-                    </footer>
-                </div>
-            </form>
-        `,
-    }
-
-    export default {
-        methods: {
-            async promptModal() {
-                const instance = this.$oruga.modal.open({
-                    // parent is only for Vue2. in Vue 3 omit this option
-                    parent: this,
-                    component: ModalForm,
-                    props: {
-                        title: 'Ship sprockets?',
-                        message: 'Do you really want me to ship the selected sprockets?'
-                    },
-                    trapFocus: true
-                })
-                // Note utilizing the promise requires Promise be supported by the browser
-                // If you are running Vue 2 on IE 11 this will not be the case unless you 
-                // add a polyfill in your build.
-                const result = await instance.promise
-
-                this.$oruga.notification.open({
-                    duration: 5000,
-                    message: 'Modal dialog returned ' + JSON.stringify(result),
-                    variant: 'info',
-                    position: 'top',
-                    closable: true
-                })
-            },
-            async promptModalCloseAll() {
-                const instance = this.$oruga.modal.open({
-                    // parent is only for Vue2. in Vue 3 omit this option
-                    parent: this,
-                    component: ModalForm,
-                    props: {
-                        title: 'Close All test',
-                        message: 'There is a 3 second timeout that will close all programmatic modals'
-                    },
-                    trapFocus: true
-                })
-
-                setTimeout(() => this.$oruga.modal.closeAll({action:'closeAll'}), 3 * 1000)
-
-                // Note utilizing the promise requires Promise be supported by the browser
-                // If you are running Vue 2 on IE 11 this will not be the case unless you 
-                // add a polyfill in your build.
-                const result = await instance.promise
-
-                this.$oruga.notification.open({
-                    duration: 5000,
-                    message: 'Modal dialog returned ' + JSON.stringify(result),
-                    variant: 'info',
-                    position: 'top',
-                    closable: true
-                })
-            },
-        }
-    }
-</script>
-
-<style>
-.modal-card {
-    display: flex;
-    flex-direction: column;
-    max-height: calc(100vh - 40px);
-    overflow: hidden;
-}
-@media screen and (min-width: 769px) {
-    .modal-card {
-        margin: 0 auto;
-        max-height: calc(100vh - 40px);
-        width: 640px;
-    }
-}
-.modal-card {
-    margin: 0 20px;
-    max-height: calc(100vh - 160px);
-    overflow: auto;
-    position: relative;
-    width: 100%;
-}
-.modal-card-foot, .modal-card-head {
-    align-items: center;
-    background-color: #f5f5f5;
-    display: flex;
-    flex-shrink: 0;
-    justify-content: flex-start;
-    padding: 20px;
-    position: relative;
-}
-.modal-card-head {
-    border-bottom: 1px solid #dbdbdb;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-}
-.modal-card-body {
-    -webkit-overflow-scrolling: touch;
-    background-color: #fff;
-    flex-grow: 1;
-    flex-shrink: 1;
-    overflow: auto;
-    padding: 20px;
-}
-.modal-card-foot {
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top: 1px solid #dbdbdb;
-}
-.modal-card-title {
-    color: #363636;
-    flex-grow: 1;
-    flex-shrink: 0;
-    font-size: 1.5rem;
-    line-height: 1;
-    margin: 0;
-}
-.modal-card-foot .o-button:not(:last-child) {
-    margin-right: .5em;
-}
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/modal/index.js b/packages/oruga/src/components/modal/index.js
deleted file mode 100644
index 9407faa65..000000000
--- a/packages/oruga/src/components/modal/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import Modal from './Modal'
-
-import { VueInstance } from '../../utils/config'
-import { merge } from '../../utils/helpers'
-import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins'
-import InstanceRegistry from '../../utils/InstanceRegistry'
-
-let localVueInstance
-
-let instances = new InstanceRegistry()
-
-const ModalProgrammatic = {
-    open(params) {
-        let parent
-        if (typeof params === 'string') {
-            params = {
-                content: params
-            }
-        }
-
-        const defaultParam = {
-            programmatic: { instances }
-        }
-        if (params.parent) {
-            parent = params.parent
-            delete params.parent
-        }
-        let slot
-        if (Array.isArray(params.content)) {
-            slot = params.content
-            delete params.content
-        }
-        const propsData = merge(defaultParam, params)
-
-        if (window.Promise) {
-            propsData.promise = new Promise((p1, p2) => {
-                propsData.programmatic.resolve = p1
-                propsData.programmatic.reject = p2
-            })
-        }
-
-        const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance
-        const ModalComponent = vm.extend(Modal)
-        const instance = new ModalComponent({
-            parent,
-            el: document.createElement('div'),
-            propsData
-        })
-        if (slot) {
-            instance.$slots.default = slot
-        }
-        return instance
-    },
-    closeAll() {
-        instances.walk((entry) => {
-            entry.close(...arguments)
-        })
-    }
-}
-
-const Plugin = {
-    install(Vue) {
-        localVueInstance = Vue
-        registerComponent(Vue, Modal)
-        registerComponentProgrammatic(Vue, 'modal', ModalProgrammatic)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    ModalProgrammatic,
-    Modal as OModal
-}
diff --git a/packages/oruga/src/components/notification/Inspector.vue b/packages/oruga/src/components/notification/Inspector.vue
deleted file mode 100644
index cd27e8bf1..000000000
--- a/packages/oruga/src/components/notification/Inspector.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-  <div>
-    <doc-wrapper>
-        <template v-slot:default="s">
-            <o-notification v-bind="s">
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-            </o-notification>
-        </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "noticeClass",
-                    description: "Root class of the notice",
-                    nospec: true
-                },
-                {
-                    class: "noticePositionClass",
-                    description: "Class of the notice when positioned",
-                    properties: ["position"],
-                    suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                    },
-                    nospec: true
-                },
-                {
-                    class: "rootClass",
-                    description: "Class of the root element"
-                },
-                {
-                    class: "closeClass",
-                    description: "Class of the close button container",
-                    properties: ["closable"],
-                    action: (cmp) => {
-                        cmp.data.closable = true;
-                    },
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the content element"
-                },
-                {
-                    class: "iconClass",
-                    description: "Class of the icon on the left",
-                    properties: ["type"],
-                    action: (cmp) => {
-                        cmp.data.type = 'info';
-                    },
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of the element when positioned",
-                    properties: ["position"],
-                    suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'],
-                    action: (cmp) => {
-                        cmp.data.position = 'top-right';
-                    },
-                },
-                {
-                    class: "wrapperClass",
-                    description: "Class of the wrapper element"
-                },
-                {
-                    class: "variantClass",
-                    description: "Class of the notification variant",
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    },
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/notification/Notification.spec.js b/packages/oruga/src/components/notification/Notification.spec.js
deleted file mode 100644
index d613b296c..000000000
--- a/packages/oruga/src/components/notification/Notification.spec.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ONotification from '@components/notification/Notification'
-
-let wrapper
-
-describe('ONotification', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(ONotification)
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('ONotification')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/notification/Notification.vue b/packages/oruga/src/components/notification/Notification.vue
deleted file mode 100644
index 89d730107..000000000
--- a/packages/oruga/src/components/notification/Notification.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-<template>
-    <transition :name="animation">
-        <article
-            v-show="isActive"
-            :class="rootClasses">
-            <button
-                v-if="closable"
-                :class="closeClasses"
-                type="button"
-                @click="close({action: 'close', method: 'x'})"
-                :aria-label="ariaCloseLabel"
-            >
-                <o-icon
-                    clickable
-                    :pack="iconPack"
-                    both
-                    :icon="closeIcon"
-                    :size="closeIconSize"/>
-            </button>
-            <component
-                v-if="component"
-                v-bind="props"
-                v-on="events"
-                :is="component"
-                @close="close"/>
-            <div :class="wrapperClasses" v-if="$scopedSlots.default || message">
-                <o-icon
-                    :icon="computedIcon"
-                    :pack="iconPack"
-                    v-if="computedIcon"
-                    :class="iconClasses"
-                    both
-                    :size="iconSize"
-                    aria-hidden/>
-                <div :class="contentClasses">
-                    <template v-if="$scopedSlots.default">
-                        <slot v-bind:closeNotification="close" />
-                    </template>
-                    <template v-else>
-                        <span v-html="message" />
-                    </template>
-                </div>
-            </div>
-        </article>
-    </transition>
-</template>
-
-<script>
-import MessageMixin from '../../utils/MessageMixin.js'
-import BaseComponentMixin from '../../utils/BaseComponentMixin.js'
-import { getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * Bold notification blocks to alert your users of something
- * @displayName Notification/Toast
- * @requires ./NotificationNotice.vue
- * @example ./examples/Notification.md
- * @style _notification.scss
- */
-export default {
-    name: 'ONotification',
-    configField: 'notification',
-    mixins: [BaseComponentMixin, MessageMixin],
-    props: {
-        /**
-        * Which position the notification will appear when programmatically
-        * @values top-right, top, top-left, bottom-right, bottom, bottom-left
-        */
-        position: String,
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: [String, Object],
-        /**
-         * Label for the close button, to be read by accessibility screenreaders.
-         */
-        ariaCloseLabel: String,
-        /**
-         * Size of close icon
-         */
-        closeIconSize: {
-            type: String,
-            default: 'small'
-        },
-        /**
-         * Custom animation (transition name).
-         */
-        animation: {
-            type: String,
-            default: 'fade'
-        },
-        /** Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ€” this.$emit('close') */
-        component: [Object, Function],
-        /** Props to be binded to the injected component */
-        props: Object,
-        /** Events to be binded to the injected component */
-        events: Object,
-        /** Close icon name */
-        closeIcon: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'notification.closeIcon', 'close')
-            }
-        },
-        rootClass: [String, Function, Array],
-        closeClass: [String, Function, Array],
-        contentClass: [String, Function, Array],
-        iconClass: [String, Function, Array],
-        positionClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        wrapperClass: [String, Function, Array],
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-notification'),
-                { [this.computedClass('variantClass', 'o-notification--', this.variant)]: this.variant },
-                { [this.computedClass('positionClass', 'o-notification--', this.position)]: this.position },
-            ]
-        },
-        wrapperClasses() {
-            return [
-                this.computedClass('wrapperClass', 'o-notification__wrapper')
-            ]
-        },
-        iconClasses() {
-            return [
-                this.computedClass('iconClass', 'o-notification__icon')
-            ]
-        },
-        contentClasses() {
-            return [
-                this.computedClass('contentClass', 'o-notification__content')
-            ]
-        },
-        closeClasses() {
-            return [
-                this.computedClass('closeClass', 'o-notification__close')
-            ]
-        },
-    },
-}
-</script>
diff --git a/packages/oruga/src/components/notification/NotificationNotice.vue b/packages/oruga/src/components/notification/NotificationNotice.vue
deleted file mode 100644
index a938416ac..000000000
--- a/packages/oruga/src/components/notification/NotificationNotice.vue
+++ /dev/null
@@ -1,47 +0,0 @@
-<template>
-    <o-notification
-        v-bind="$options.propsData"
-        ref="notification"
-        @close="close">
-        <slot />
-    </o-notification>
-</template>
-
-<script>
-import NoticeMixin from '../../utils/NoticeMixin.js'
-import BaseComponentMixin from '../../utils/BaseComponentMixin.js'
-
-/**
- * @displayName Notification Notice
- */
-export default {
-    name: 'ONotificationNotice',
-    configField: 'notification',
-    mixins: [BaseComponentMixin, NoticeMixin],
-    props: {
-        noticeClass: [String, Function, Array],
-        noticePositionClass: [String, Function, Array],
-        noticeCustomContainerClass: [String, Function, Array],
-    },
-    methods: {
-        rootClasses() {
-            return [
-                this.computedClass('noticeClass', 'o-notices'),
-            ]
-        },
-        positionClasses(position) {
-            return [
-                this.computedClass('noticePositionClass', 'o-notices--', position),
-            ]
-        },
-        noticeCustomContainerClasses() {
-            return [
-                this.computedClass('noticeCustomContainerClass', 'o-notices__custom-container')
-            ]
-        },
-        timeoutCallback() {
-            return this.$refs.notification.close({action: 'close', method: 'timeout'})
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap b/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap
deleted file mode 100644
index 1e23caa4b..000000000
--- a/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap
+++ /dev/null
@@ -1,11 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ONotification render correctly 1`] = `
-<transition-stub name="fade">
-    <article class="o-notification">
-        <!---->
-        <!---->
-        <!---->
-    </article>
-</transition-stub>
-`;
diff --git a/packages/oruga/src/components/notification/examples/Notification.md b/packages/oruga/src/components/notification/examples/Notification.md
deleted file mode 100644
index 774460614..000000000
--- a/packages/oruga/src/components/notification/examples/Notification.md
+++ /dev/null
@@ -1,287 +0,0 @@
-## Examples
-
-### Programmatically opening
-
-Go to [Notification Notice](#notification-notice) section to see all the available options.
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="buttons">
-            <o-button
-                label="Launch notification (default)"
-                size="medium"
-                @click="simple" />
-            <o-button
-                label="Launch notification (custom)"
-                variant="success"
-                size="medium"
-                @click="success" />
-            <hr/>
-            <o-button
-                label="Launch toast"
-                size="medium"
-                @click="toast" />
-            <o-button
-                label="Launch toast (queued)"
-                variant="success"
-                size="medium"
-                @click="queueToast" />
-            <hr/>
-            <o-button
-                label="Launch notification (custom)"
-                variant="danger"
-                size="medium"
-                @click="danger" />
-            <o-button
-                label="Launch notification (component)"
-                variant="warning"
-                size="medium"
-                @click="component" />
-            <hr/>
-            <o-button 
-                label="Launch with promise"
-                size="medium"
-                @click="promise" />
-            <o-button
-                label="Launch indefinite"
-                size="medium"
-                @click="indefinite" />
-            <o-button
-                label="Close all open"
-                size="medium"
-                @click="closeAll" />
-        </div>
-    </section>
-</template>
-
-<script>
-    const NotificationForm = {
-        props: ['email', 'password'],
-        template: `
-                <form action="">
-                    <div class="modal-card" style="width: auto">
-                        <header class="modal-card-head">
-                            <p class="modal-card-title">Login</p>
-                        </header>
-                        <section class="modal-card-body">
-                            <o-field label="Email">
-                                <o-input
-                                    type="email"
-                                    :value="email"
-                                    placeholder="Your email"
-                                    required>
-                                </o-input>
-                            </o-field>
-
-                            <o-field label="Password">
-                                <o-input
-                                    type="password"
-                                    :value="password"
-                                    password-reveal
-                                    placeholder="Your password"
-                                    required>
-                                </o-input>
-                            </o-field>
-
-                            <o-field>
-                                <o-checkbox>Remember me</o-checkbox>
-                            </o-field>
-                        </section>
-                        <footer class="modal-card-foot">
-                            <o-button type="button" @click="$emit('close')">Close</o-button>
-                            <o-button variant="primary">Login</o-button>
-                        </footer>
-                    </div>
-                </form>
-            `
-    }
-    export default {
-        methods: {
-            simple() {
-                this.$oruga.notification.open('Something happened')
-            },
-            success() {
-                this.$oruga.notification.open({
-                    message: 'Something happened correctly!',
-                    variant: 'success',
-                    closable: true
-                })
-            },
-            toast() {
-                this.$oruga.notification.open({
-                    message: 'Something happened correctly!',
-                    rootClass: 'toast-notification',
-                    position: 'top'
-                })
-            },
-            queueToast() {
-                this.$oruga.notification.open({
-                    message: 'Something happened correctly!',
-                    rootClass: 'toast-notification',
-                    position: 'top',
-                    queue: true
-                })
-            },
-            danger() {
-                const notif = this.$oruga.notification.open({
-                    duration: 5000,
-                    message: `Something's not good, also I'm on <b>bottom</b>`,
-                    position: 'bottom-right',
-                    variant: 'danger',
-                    closable: true,
-                    onClose: () => {
-                        this.$oruga.notification.open('Custom notification closed!')
-                    }
-                })
-            },
-            component() {
-                this.$oruga.notification.open({
-                    // parent is only for Vue2. in Vue 3 omit this option
-                    parent: this,
-                    component: NotificationForm,
-                    position: 'bottom-right',
-                    variant: 'warning',
-                    indefinite: true
-                })
-            },
-            async promise() {
-                const instance = this.$oruga.notification.open({
-                    message: 'Notification with promise response. The promise returns how the notification was closed. (value from $emit(\'close\', value)',
-                    position: 'top',
-                    variant: 'info',
-                    duration: 5000,
-                    closable: true
-                })
-
-                // Note utilizing the promise requires Promise be supported by the browser
-                // If you are running Vue 2 on IE 11 this will not be the case unless you 
-                // add a polyfill in your build.
-                const ret = await instance.promise;
-
-                this.$oruga.notification.open({
-                    message: 'Notification was resolved with ' + JSON.stringify(ret),
-                    position: 'top',
-                    variant: 'success',
-                    duration: 2000,
-                })
-            },
-            indefinite() {
-                this.$oruga.notification.open({
-                    message: 'Indefinite sticky notification',
-                    closable: true,
-                    indefinite: true
-                })
-            },
-            closeAll() {
-                // any parameter here is passed to the onClose handler and resolved to the promise
-                // for each open notification
-                this.$oruga.notification.closeAll({action: 'closeAll'});
-            }
-        }
-    }
-</script>
-<style>
-.toast-notification {
-    margin: .5em 0;
-    text-align: center;
-    box-shadow: 0 1px 4px rgb(0 0 0 / 12%), 0 0 6px rgb(0 0 0 / 4%);
-    border-radius: 2em;
-    padding: .75em 1.5em;
-    pointer-events: auto;
-    color: rgba(0,0,0,.7);
-    background: #ffdd57;
-}
-</style>
-```
-:::
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-notification closable aria-close-label="Close notification">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-        <o-notification closable variant="info" aria-close-label="Close notification">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-        <o-notification closable variant="success" aria-close-label="Close notification">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-        <o-notification
-            closable
-            variant="warning"
-            aria-close-label="Close notification"
-            role="alert">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-        <o-notification
-            closable
-            variant="danger"
-            aria-close-label="Close notification"
-            role="alert">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-    </section>
-</template>
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Use types
-
-::: demo
-```html
-<template>
-    <section>
-        <o-notification
-            closable
-            type="info"
-            variant="info"
-            aria-close-label="Close notification">
-            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit
-        </o-notification>
-    </section>
-</template>
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Add custom buttons
-
-::: demo
-```html
-<template>
-    <section>
-        <o-notification aria-close-label="Close notification" v-slot="{closeNotification}">
-            <div class="notification-content">
-                <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit</span>
-                <o-button
-                    label="Cancel"
-                    size="small"
-                    @click="closeNotification"/>
-            </div>
-        </o-notification>
-    </section>
-</template>
-<script>
-    export default {
-    }
-</script>
-<style>
-    .notification-content {
-        display: flex;
-    }
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/notification/index.js b/packages/oruga/src/components/notification/index.js
deleted file mode 100644
index ce3b86982..000000000
--- a/packages/oruga/src/components/notification/index.js
+++ /dev/null
@@ -1,84 +0,0 @@
-import Notification from './Notification'
-import NotificationNotice from './NotificationNotice'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-import { merge } from '../../utils/helpers'
-import { VueInstance } from '../../utils/config'
-import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins'
-import InstanceRegistry from "../../utils/InstanceRegistry"
-
-let localVueInstance
-
-let instances = new InstanceRegistry()
-
-const NotificationProgrammatic = {
-    open(params) {
-        let parent
-        if (typeof params === 'string') {
-            params = {
-                message: params
-            }
-        }
-
-        const defaultParam = {
-            programmatic: { instances },
-            position: getValueByPath(getOptions(), 'notification.position', 'top-right'),
-            closable: params.closable || getValueByPath(getOptions(), 'notification.closable', false)
-        }
-        if (params.parent) {
-            parent = params.parent
-            delete params.parent
-        }
-        let slot
-        if (Array.isArray(params.message)) {
-            slot = params.message
-            delete params.message
-        }
-        // fix animation
-        params.active = false
-        const propsData = merge(defaultParam, params)
-        if (window.Promise) {
-            propsData.promise = new Promise((p1, p2) => {
-                propsData.programmatic.resolve = p1
-                propsData.programmatic.reject = p2
-            })
-        }
-        const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance
-        const NotificationNoticeComponent = vm.extend(NotificationNotice)
-        const component = new NotificationNoticeComponent({
-            parent,
-            el: document.createElement('div'),
-            propsData
-        })
-        if (slot) {
-            component.$slots.default = slot
-            component.$forceUpdate()
-        }
-        // fix animation
-        component.$children[0].isActive = true
-        return component
-    },
-    closeAll() {
-        instances.walk((entry) => {
-            entry.close(...arguments)
-        })
-    }
-}
-
-const Plugin = {
-    install(Vue) {
-        localVueInstance = Vue
-        registerComponent(Vue, Notification)
-        registerComponentProgrammatic(Vue, 'notification', NotificationProgrammatic)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Notification as ONotification,
-    NotificationProgrammatic,
-}
diff --git a/packages/oruga/src/components/pagination/Inspector.vue b/packages/oruga/src/components/pagination/Inspector.vue
deleted file mode 100644
index 09a52abf2..000000000
--- a/packages/oruga/src/components/pagination/Inspector.vue
+++ /dev/null
@@ -1,127 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-pagination
-                    v-bind='s'
-                    :total="total"
-                    :current.sync="current"
-                    :range-before="rangeBefore"
-                    :range-after="rangeAfter"
-                    :per-page="perPage"
-                    aria-next-label="Next page"
-                    aria-previous-label="Previous page"
-                    aria-page-label="Page"
-                    aria-current-label="Current page"
-                    icon-prev='chevron-left'
-                    icon-next='chevron-right'
-                    >
-                </o-pagination>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            total: 200,
-            current: 10,
-            perPage: 10,
-            rangeBefore: 3,
-            rangeAfter: 1,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of pagination component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "prevBtnClass",
-                    description: "Class of the prev. button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "nextBtnClass",
-                    description: "Class of the next button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "listClass",
-                    description: "Class of the pagination list",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "linkClass",
-                    description: "Class of the link button",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "linkCurrentClass",
-                    description: "Class of the current link",
-                },
-                {
-                    class: "ellipsisClass",
-                    description: "Class of the pagination ellipsis ",
-                    specificity: "when <b>mobileClass</b> is applied",
-                },
-                {
-                    class: "infoClass",
-                    description: "Class of the info in `simple` mode",
-                    properties: ['simple'],
-                    action: (cmp) => {
-                        cmp.data.simple = true;
-                    }
-                },
-                {
-                    class: "orderClass",
-                    description: "Class of the pagination order",
-                    properties: ['order'],
-                    suffixes: ['centered', 'right', 'left'],
-                    action: (cmp) => {
-                        cmp.data.order = 'centered';
-                    }
-                },
-                {
-                    class: "simpleClass",
-                    description: "Class of the pagination in `simple` mode",
-                    properties: ['simple'],
-                    action: (cmp) => {
-                        cmp.data.simple = true;
-                    }
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the pagination when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                    }
-                },
-                {
-                    class: "linkDisabledClass",
-                    description: "Class of the disabled link",
-                    action: () => {
-                        this.current = 20;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class for the pagination size",
-                    properties: ['size'],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'small';
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/pagination/Pagination.spec.js b/packages/oruga/src/components/pagination/Pagination.spec.js
deleted file mode 100644
index e8364c4c1..000000000
--- a/packages/oruga/src/components/pagination/Pagination.spec.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OPagination from '@components/pagination/Pagination'
-
-let wrapper
-
-describe('OPagination', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OPagination)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('returns 1 for default firstItem', () => {
-        expect(wrapper.vm.firstItem).toEqual(1)
-    })
-
-    it('returns firstItem accordingly', () => {
-        wrapper.setProps({current: 0})
-        expect(wrapper.vm.firstItem).toEqual(0)
-
-        wrapper.setProps({current: 5})
-        const expected = wrapper.vm.current * wrapper.vm.perPage - wrapper.vm.perPage + 1
-        expect(wrapper.vm.firstItem).toEqual(expected)
-    })
-
-    it('should emit change with value of 1 when calling first', () => {
-        wrapper.setProps({current: 1})
-        wrapper.vm.first()
-
-        wrapper.setProps({current: 5})
-        wrapper.vm.first()
-        expect(wrapper.emitted()['change'][0]).toContainEqual(1)
-        expect(wrapper.emitted()['update:current'][0]).toContainEqual(1)
-    })
-
-    it('should emit change with value of pageCount when calling last', (done) => {
-        const event = {
-            target: {
-                focus: jest.fn()
-            }
-        }
-
-        wrapper.setProps({current: 5})
-        wrapper.vm.last(event)
-        expect(wrapper.emitted()['change'][0]).toContainEqual(wrapper.vm.pageCount)
-        expect(wrapper.emitted()['update:current'][0]).toContainEqual(wrapper.vm.pageCount)
-
-        wrapper.vm.$nextTick(() => {
-            expect(event.target.focus).toHaveBeenCalled()
-            done()
-        })
-    })
-
-    it('should emit change when calling prev', () => {
-        wrapper.setProps({current: 5})
-        wrapper.vm.prev()
-        expect(wrapper.emitted()['change'][0]).toContainEqual(4)
-        expect(wrapper.emitted()['update:current'][0]).toContainEqual(4)
-    })
-
-    it('should emit change when calling next', () => {
-        wrapper.setProps({total: 100, current: 2})
-        wrapper.vm.next()
-        expect(wrapper.emitted()['change'][0]).toContainEqual(3)
-        expect(wrapper.emitted()['update:current'][0]).toContainEqual(3)
-    })
-
-    it('set current to last if page count is smaller than current', async () => {
-        wrapper.vm.last = jest.fn()
-        wrapper.setProps({total: 100, current: 3})
-        wrapper.setProps({total: 40})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.last).toHaveBeenCalled()
-    })
-
-    it('return no pages in range when simple', () => {
-        wrapper.setProps({simple: true})
-        expect(wrapper.pagesInRange).toBeUndefined()
-    })
-})
diff --git a/packages/oruga/src/components/pagination/Pagination.vue b/packages/oruga/src/components/pagination/Pagination.vue
deleted file mode 100644
index 56edb652c..000000000
--- a/packages/oruga/src/components/pagination/Pagination.vue
+++ /dev/null
@@ -1,436 +0,0 @@
-<template>
-    <nav :class="rootClasses">
-        <slot
-            v-if="hasPreviousSlot"
-            name="previous"
-            :linkClass="linkClasses"
-            :linkCurrentClass="linkCurrentClasses"
-            :page="getPage(current - 1, {
-                class: prevBtnClasses,
-                'aria-label': ariaPreviousLabel
-        })">
-            <o-icon
-                :icon="iconPrev"
-                :pack="iconPack"
-                both
-                aria-hidden="true"/>
-        </slot>
-        <o-pagination-button
-            v-else
-            :class="prevBtnClasses"
-            :linkClass="linkClasses"
-            :linkCurrentClass="linkCurrentClasses"
-            :page="getPage(current - 1)">
-            <o-icon
-                :icon="iconPrev"
-                :pack="iconPack"
-                both
-                aria-hidden="true"/>
-        </o-pagination-button>
-        <slot
-            v-if="hasNextSlot"
-            name="next"
-            :linkClass="linkClasses"
-            :linkCurrentClass="linkCurrentClasses"
-            :page="getPage(current + 1, {
-                class: nextBtnClasses,
-                'aria-label': ariaNextLabel,
-        })">
-            <o-icon
-                :icon="iconNext"
-                :pack="iconPack"
-                both
-                aria-hidden="true"/>
-        </slot>
-        <o-pagination-button
-            v-else
-            :class="nextBtnClasses"
-            :linkClass="linkClasses"
-            :linkCurrentClass="linkCurrentClasses"
-            :page="getPage(current + 1)">
-            <o-icon
-                :icon="iconNext"
-                :pack="iconPack"
-                both
-                aria-hidden="true"/>
-        </o-pagination-button>
-
-        <small :class="infoClasses" v-if="simple">
-            <template v-if="perPage == 1">
-                {{ firstItem }} / {{ total }}
-            </template>
-            <template v-else>
-                {{ firstItem }}-{{ Math.min(current * perPage, total) }} / {{ total }}
-            </template>
-        </small>
-        <ul :class="listClasses" v-else>
-            <!--First-->
-            <li v-if="hasFirst">
-                <slot
-                    v-if="hasDefaultSlot"
-                    :page="getPage(1)"
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                />
-                <o-pagination-button
-                    v-else
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                    :page="getPage(1)" />
-            </li>
-            <li v-if="hasFirstEllipsis"><span :class="ellipsisClasses">&hellip;</span></li>
-
-            <!--Pages-->
-            <li v-for="page in pagesInRange" :key="page.number">
-                <slot
-                    v-if="hasDefaultSlot"
-                    :page="page"
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                />
-                <o-pagination-button
-                    v-else
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                    :page="page" />
-            </li>
-
-            <!--Last-->
-            <li v-if="hasLastEllipsis"><span :class="ellipsisClasses">&hellip;</span></li>
-            <li v-if="hasLast">
-                <slot
-                    v-if="hasDefaultSlot"
-                    :page="getPage(pageCount)"
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                />
-                <o-pagination-button
-                    v-else
-                    :linkClass="linkClasses"
-                    :linkCurrentClass="linkCurrentClasses"
-                    :page="getPage(pageCount)" />
-            </li>
-        </ul>
-    </nav>
-</template>
-
-<script>
-import PaginationButton from './PaginationButton'
-import Icon from '../icon/Icon'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-/**
- * A responsive and flexible pagination
- * @displayName Pagination
- * @example ./examples/Pagination.md
- * @style _pagination.scss
- */
-export default {
-    name: 'OPagination',
-    components: {
-        [Icon.name]: Icon,
-        [PaginationButton.name]: PaginationButton
-    },
-    configField: 'pagination',
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    provide() {
-        return {
-            $pagination: this
-        }
-    },
-    props: {
-        /** Total count of items */
-        total: [Number, String],
-        /** Items count for each page */
-        perPage: {
-            type: [Number, String],
-            default: () => { return getValueByPath(getOptions(), 'pagination.perPage', 20) }
-        },
-        /** Current page number, use the .sync modifier (Vue 2.x) or v-model:current (Vue 3.x) to make it two-way binding */
-        current: {
-            type: [Number, String],
-            default: 1
-        },
-        /** Number of pagination items to show before current page */
-        rangeBefore: {
-            type: [Number, String],
-            default: 1
-        },
-        /** Number of pagination items to show after current page */
-        rangeAfter: {
-            type: [Number, String],
-            default: 1
-        },
-        /**
-         * Pagination size, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /** Simple style */
-        simple: Boolean,
-        /** Rounded button styles */
-        rounded: Boolean,
-        /**
-         * Buttons order, optional
-         * @values centered, right, left
-         */
-        order: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'pagination.order', 'right') }
-        },
-        /**
-         * Icon pack to use
-         * @values mdi, fa, fas and any other custom icon pack
-         */
-        iconPack: String,
-        /** Icon to use for previous button */
-        iconPrev: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'pagination.iconPrev', 'chevron-left') }
-        },
-         /** Icon to use for next button */
-        iconNext: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'pagination.iconNext', 'chevron-right') }
-        },
-        ariaNextLabel: String,
-        ariaPreviousLabel: String,
-        ariaPageLabel: String,
-        ariaCurrentLabel: String,
-        rootClass: [String, Function, Array],
-        prevBtnClass: [String, Function, Array],
-        nextBtnClass: [String, Function, Array],
-        listClass: [String, Function, Array],
-        linkClass: [String, Function, Array],
-        linkCurrentClass: [String, Function, Array],
-        ellipsisClass: [String, Function, Array],
-        infoClass: [String, Function, Array],
-        orderClass: [String, Function, Array],
-        simpleClass: [String, Function, Array],
-        roundedClass: [String, Function, Array],
-        linkDisabledClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        mobileClass: [String, Function, Array]
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-pag'),
-                { [this.computedClass('orderClass', 'o-pag--', this.order)]: this.order },
-                { [this.computedClass('sizeClass', 'o-pag--', this.size)]: this.size },
-                { [this.computedClass('simpleClass', 'o-pag--simple')]: this.simple },
-                { [this.computedClass('mobileClass', 'o-pag--mobile')]: this.isMatchMedia },
-            ]
-        },
-        prevBtnClasses() {
-            return [
-                this.computedClass('prevBtnClass', 'o-pag__previous'),
-                { [this.computedClass('linkDisabledClass', 'o-pag__link--disabled')]: !this.hasPrev }
-            ]
-        },
-        nextBtnClasses() {
-            return [
-                this.computedClass('nextBtnClass', 'o-pag__next'),
-                { [this.computedClass('linkDisabledClass', 'o-pag__link--disabled')]: !this.hasNext }
-            ]
-        },
-        infoClasses() {
-            return [
-                this.computedClass('infoClass', 'o-pag__info')
-            ]
-        },
-        ellipsisClasses() {
-            return [
-                this.computedClass('ellipsisClass', 'o-pag__ellipsis')
-            ]
-        },
-        listClasses() {
-            return [
-                this.computedClass('listClass', 'o-pag__list')
-            ]
-        },
-        linkClasses() {
-            return [
-                this.computedClass('linkClass', 'o-pag__link'),
-                { [this.computedClass('roundedClass', 'o-pag__link--rounded')]: this.rounded }
-            ]
-        },
-        linkCurrentClasses() {
-            return [
-                this.computedClass('linkCurrentClass', 'o-pag__link--current'),
-            ]
-        },
-
-        beforeCurrent() {
-            return parseInt(this.rangeBefore)
-        },
-
-        afterCurrent() {
-            return parseInt(this.rangeAfter)
-        },
-
-        /**
-        * Total page size (count).
-        */
-        pageCount() {
-            return Math.ceil(this.total / this.perPage)
-        },
-
-        /**
-        * First item of the page (count).
-        */
-        firstItem() {
-            const firstItem = this.current * this.perPage - this.perPage + 1
-            return firstItem >= 0 ? firstItem : 0
-        },
-
-        /**
-        * Check if previous button is available.
-        */
-        hasPrev() {
-            return this.current > 1
-        },
-
-        /**
-        * Check if first page button should be visible.
-        */
-        hasFirst() {
-            return this.current >= (2 + this.beforeCurrent)
-        },
-
-        /**
-        * Check if first ellipsis should be visible.
-        */
-        hasFirstEllipsis() {
-            return this.current >= (this.beforeCurrent + 4)
-        },
-
-        /**
-        * Check if last page button should be visible.
-        */
-        hasLast() {
-            return this.current <= this.pageCount - (1 + this.afterCurrent)
-        },
-
-        /**
-        * Check if last ellipsis should be visible.
-        */
-        hasLastEllipsis() {
-            return this.current < this.pageCount - (2 + this.afterCurrent)
-        },
-
-        /**
-        * Check if next button is available.
-        */
-        hasNext() {
-            return this.current < this.pageCount
-        },
-
-        /**
-        * Get near pages, 1 before and 1 after the current.
-        * Also add the click event to the array.
-        */
-        pagesInRange() {
-            if (this.simple) return
-
-            let left = Math.max(1, this.current - this.beforeCurrent)
-            if (left - 1 === 2) {
-                left-- // Do not show the ellipsis if there is only one to hide
-            }
-            let right = Math.min(this.current + this.afterCurrent, this.pageCount)
-            if (this.pageCount - right === 2) {
-                right++ // Do not show the ellipsis if there is only one to hide
-            }
-
-            const pages = []
-            for (let i = left; i <= right; i++) {
-                pages.push(this.getPage(i))
-            }
-            return pages
-        },
-
-        hasDefaultSlot() {
-            return this.$scopedSlots.default
-        },
-        hasPreviousSlot() {
-            return this.$scopedSlots.previous
-        },
-        hasNextSlot() {
-            return this.$scopedSlots.next
-        }
-    },
-    watch: {
-        /**
-        * If current page is trying to be greater than page count, set to last.
-        */
-        pageCount(value) {
-            if (this.current > value) this.last()
-        }
-    },
-    methods: {
-        /**
-        * Previous button click listener.
-        */
-        prev(event) {
-            this.changePage(this.current - 1, event)
-        },
-        /**
-        * Next button click listener.
-        */
-        next(event) {
-            this.changePage(this.current + 1, event)
-        },
-        /**
-        * First button click listener.
-        */
-        first(event) {
-            this.changePage(1, event)
-        },
-        /**
-        * Last button click listener.
-        */
-        last(event) {
-            this.changePage(this.pageCount, event)
-        },
-
-        changePage(num, event) {
-            if (this.current === num || num < 1 || num > this.pageCount) return
-            this.$emit('change', num)
-            this.$emit('update:current', num)
-
-            // Set focus on element to keep tab order
-            if (event && event.target) {
-                this.$nextTick(() => event.target.focus())
-            }
-        },
-
-        getPage(num, options = {}) {
-            return {
-                number: num,
-                isCurrent: this.current === num,
-                click: (event) => this.changePage(num, event),
-                disabled: options.disabled || false,
-                class: options.class || '',
-                'aria-label': options['aria-label'] || this.getAriaPageLabel(num, this.current === num)
-            }
-        },
-
-        /**
-        * Get text for aria-label according to page number.
-        */
-        getAriaPageLabel(pageNumber, isCurrent) {
-            if (this.ariaPageLabel && (!isCurrent || !this.ariaCurrentLabel)) {
-                return this.ariaPageLabel + ' ' + pageNumber + '.'
-            } else if (this.ariaPageLabel && isCurrent && this.ariaCurrentLabel) {
-                return this.ariaCurrentLabel + ', ' + this.ariaPageLabel + ' ' + pageNumber + '.'
-            }
-            return null
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/pagination/PaginationButton.spec.js b/packages/oruga/src/components/pagination/PaginationButton.spec.js
deleted file mode 100644
index e19f5224f..000000000
--- a/packages/oruga/src/components/pagination/PaginationButton.spec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OPagination from '@components/pagination/Pagination'
-import OPaginationButton from '@components/pagination/PaginationButton'
-
-let wrapper
-let wrapperParent
-
-const WrapperComp = {
-    template: `
-        <OPagination>
-            <OPaginationButton ref="nextBtn" slot="next" slot-scope="props" :page="props.page"/>
-        </OPagination>`,
-    components: {
-        OPagination, OPaginationButton
-    }
-}
-
-describe('OPaginationButton', () => {
-    beforeEach(() => {
-        wrapperParent = mount(WrapperComp)
-        wrapper = wrapperParent.find({ ref: 'nextBtn' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/pagination/PaginationButton.vue b/packages/oruga/src/components/pagination/PaginationButton.vue
deleted file mode 100644
index 97d899717..000000000
--- a/packages/oruga/src/components/pagination/PaginationButton.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-<template>
-    <component
-        :is="tag"
-        role="button"
-        :href="href"
-        :disabled="isDisabled"
-        :class="linkClasses"
-        v-bind="$attrs"
-        @click.prevent="page.click"
-        :aria-label="page['aria-label']"
-        :aria-current="page.isCurrent">
-        <slot>{{ page.number }}</slot>
-    </component>
-</template>
-
-<script>
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-export default {
-    name: 'OPaginationButton',
-    inject: {
-        $pagination: { name: '$pagination' }
-    },
-    configField: 'pagination',
-    props: {
-        page: {
-            type: Object,
-            required: true
-        },
-        tag: {
-            type: String,
-            default: 'a',
-            validator: (value) => getValueByPath(getOptions(), 'linkTags', ['a', 'button', 'input', 'router-link', 'nuxt-link']).indexOf(value) >= 0
-        },
-        disabled: {
-            type: Boolean,
-            default: false
-        },
-        linkClass: [String, Array, Object],
-        linkCurrentClass: [String, Array, Object]
-    },
-    computed: {
-        linkClasses() {
-            return [
-                this.linkClass || [...this.$pagination.linkClasses],
-                this.page.class,
-                { [this.linkCurrentClass || this.$pagination.linkCurrentClasses]: this.page.isCurrent }
-            ]
-        },
-        href() {
-            if (this.tag === 'a') {
-                return '#'
-            }
-            return ''
-        },
-        isDisabled() {
-            return this.disabled || this.page.disabled
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap b/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap
deleted file mode 100644
index c05581121..000000000
--- a/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap
+++ /dev/null
@@ -1,18 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OPagination render correctly 1`] = `
-<nav class="o-pag">
-    <o-pagination-button-stub page="[object Object]" tag="a" linkclass="o-pag__link,[object Object]" linkcurrentclass="o-pag__link--current" class="o-pag__previous o-pag__link--disabled">
-        <o-icon-stub icon="chevron-left" both="true" aria-hidden="true"></o-icon-stub>
-    </o-pagination-button-stub>
-    <o-pagination-button-stub page="[object Object]" tag="a" linkclass="o-pag__link,[object Object]" linkcurrentclass="o-pag__link--current" class="o-pag__next o-pag__link--disabled">
-        <o-icon-stub icon="chevron-right" both="true" aria-hidden="true"></o-icon-stub>
-    </o-pagination-button-stub>
-    <ul class="o-pag__list">
-        <!---->
-        <!---->
-        <!---->
-        <!---->
-    </ul>
-</nav>
-`;
diff --git a/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap b/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap
deleted file mode 100644
index 0ad9165ea..000000000
--- a/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OPaginationButton render correctly 1`] = `<a role="button" href="#" class="o-pag__link o-pag__next o-pag__link--disabled">2</a>`;
diff --git a/packages/oruga/src/components/pagination/examples/Pagination.md b/packages/oruga/src/components/pagination/examples/Pagination.md
deleted file mode 100644
index 18c1e8eee..000000000
--- a/packages/oruga/src/components/pagination/examples/Pagination.md
+++ /dev/null
@@ -1,182 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <o-field label="Total">
-                <o-input type="number" v-model="total"></o-input>
-            </o-field>
-            <o-field label="Items per page">
-                <o-input type="number" v-model="perPage"></o-input>
-            </o-field>
-        </o-field>
-        <o-field grouped group-multiline>
-            <o-field label="Show buttons before current">
-                <o-input type="number" v-model="rangeBefore" min="0"></o-input>
-            </o-field>
-            <o-field label="Show buttons after current">
-                <o-input type="number" v-model="rangeAfter" min="0"></o-input>
-            </o-field>
-        </o-field>
-        <o-field grouped group-multiline>
-            <o-field label="Order">
-                <o-select v-model="order">
-                    <option value="">default</option>
-                    <option value="centered">centered</option>
-                    <option value="right">right</option>
-                </o-select>
-            </o-field>
-            <o-field label="Size">
-                <o-select v-model="size">
-                    <option value="">default</option>
-                    <option value="small">small</option>
-                    <option value="medium">medium</option>
-                    <option value="large">large</option>
-                </o-select>
-            </o-field>
-        </o-field>
-        <o-field grouped group-multiline>
-            <o-field label="Previous icon">
-                <o-select v-model="prevIcon">
-                    <option value="chevron-left">Chevron</option>
-                    <option value="arrow-left">Arrow</option>
-                </o-select>
-            </o-field>
-            <o-field label="Next icon">
-                <o-select v-model="nextIcon">
-                    <option value="chevron-right">Chevron</option>
-                    <option value="arrow-right">Arrow</option>
-                </o-select>
-            </o-field>
-        </o-field>
-        <div class="block">
-            <o-switch v-model="isSimple">Simple</o-switch>
-            <o-switch v-model="isRounded">Rounded</o-switch>
-        </div>
-
-        <hr>
-        <o-pagination
-            :total="total"
-            :current.sync="current"
-            :range-before="rangeBefore"
-            :range-after="rangeAfter"
-            :order="order"
-            :size="size"
-            :simple="isSimple"
-            :rounded="isRounded"
-            :per-page="perPage"
-            :icon-prev="prevIcon"
-            :icon-next="nextIcon"
-            aria-next-label="Next page"
-            aria-previous-label="Previous page"
-            aria-page-label="Page"
-            aria-current-label="Current page">
-        </o-pagination>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                total: 200,
-                current: 10,
-                perPage: 10,
-                rangeBefore: 3,
-                rangeAfter: 1,
-                order: '',
-                size: '',
-                isSimple: false,
-                isRounded: false,
-                prevIcon: 'chevron-left',
-                nextIcon: 'chevron-right'
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Slots
-
-::: demo
-```html
-<template>
-    <section>
-        <o-pagination
-            :total="200"
-            :current.sync="current"
-            :per-page="10">
-
-            <o-pagination-button
-                slot-scope="props"
-                :page="props.page"
-                :id="`page${props.page.number}`">
-                {{ convertToRoman(props.page.number) }}
-            </o-pagination-button>
-
-            <o-pagination-button
-                slot="previous"
-                slot-scope="props"
-                :page="props.page">
-                Previous
-            </o-pagination-button>
-
-            <o-pagination-button
-                slot="next"
-                slot-scope="props"
-                :page="props.page">
-                Next
-            </o-pagination-button>
-
-        </o-pagination>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                current: 10,
-                basicRomanNumeral: ['',
-                    'I','II','III','IV','V','VI','VII','VIII','IX','',
-                    'X','XX','XXX','XL','L','LX','LXX','LXXX','XC','',
-                    'C','CC','CCC','CD','D','DC','DCC','DCCC','CM','',
-                    'M','MM','MMM'
-                ]
-            }
-        },
-        methods: {
-            convertToRoman(num) {
-                const numArray = num.toString().split('');
-                const base = numArray.length;
-                let count = base-1;
-                const convertedRoman = numArray.reduce((roman, digit) => {
-                    const digitRoman = this.basicRomanNumeral[+digit + count*10];
-                    const result = roman + digitRoman;
-                    count -= 1;
-                    return result;
-                },'');
-                return convertedRoman;
-            }
-        },
-        /*
-        watch: {
-            $route: {
-                immediate: true,
-                handler(newVal, oldVal) {
-                    if (newVal.hash) {
-                        this.current = parseInt(newVal.hash.replace(/\#page/g, ''))
-                    }
-                },
-            },
-        }
-        */
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/pagination/index.js b/packages/oruga/src/components/pagination/index.js
deleted file mode 100644
index 9fc6e967c..000000000
--- a/packages/oruga/src/components/pagination/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Pagination from './Pagination'
-import PaginationButton from './PaginationButton'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Pagination)
-        registerComponent(Vue, PaginationButton)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Pagination as OPagination,
-    PaginationButton as OPaginationButton
-}
diff --git a/packages/oruga/src/components/plugins.js b/packages/oruga/src/components/plugins.js
deleted file mode 100644
index 0706f781e..000000000
--- a/packages/oruga/src/components/plugins.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import Autocomplete from './autocomplete'
-import Button from './button'
-import Carousel from './carousel'
-import Checkbox from './checkbox'
-import Collapse from './collapse'
-import Datepicker from './datepicker'
-import Datetimepicker from './datetimepicker'
-import Dropdown from './dropdown'
-import Field from './field'
-import Icon from './icon'
-import Input from './input'
-import Inputitems from './inputitems'
-import Loading from './loading'
-import Notification from './notification'
-import NotificationNotice from './notification'
-import Modal from './modal'
-import Menu from './menu'
-import Pagination from './pagination'
-import Radio from './radio'
-import Select from './select'
-import Skeleton from './skeleton'
-import Sidebar from './sidebar'
-import Slider from './slider'
-import Steps from './steps'
-import Switch from './switch'
-import Table from './table'
-import Tabs from './tabs'
-import Timepicker from './timepicker'
-import Tooltip from './tooltip'
-import Upload from './upload'
-
-export {
-    Autocomplete,
-    Button,
-    Carousel,
-    Checkbox,
-    Collapse,
-    Datepicker,
-    Datetimepicker,
-    Dropdown,
-    Field,
-    Icon,
-    Input,
-    Inputitems,
-    Loading,
-    Modal,
-    Menu,
-    Notification,
-    NotificationNotice,
-    Pagination,
-    Radio,
-    Select,
-    Skeleton,
-    Sidebar,
-    Slider,
-    Steps,
-    Switch,
-    Table,
-    Tabs,
-    Timepicker,
-    Tooltip,
-    Upload
-}
diff --git a/packages/oruga/src/components/radio/Inspector.vue b/packages/oruga/src/components/radio/Inspector.vue
deleted file mode 100644
index 0400b39cb..000000000
--- a/packages/oruga/src/components/radio/Inspector.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-radio v-model="s.checkbox" native-value="default" v-bind="s">Radio</o-radio>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'labelClass',
-          description : 'Class of the radio label'
-        },
-        {
-          class: 'checkClass',
-          description : 'Class of the native radio element'
-        },
-        {
-          class: 'checkedClass',
-          description : 'Class of the root element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = 'default';
-          }
-        },
-        {
-          class: 'checkCheckedClass',
-          description : 'Class of the native radio element when checked',
-          action: (cmp) => {
-            cmp.data.checkbox = 'default';
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the radio size',
-          properties: ["size"],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        },
-        {
-          class: 'disabledClass',
-          description : 'Class when radio is disabled',
-          properties: ["disabled"],
-          action: (cmp) => {
-            cmp.data.disabled = true;
-          }
-        },
-        {
-          class: 'variantClass',
-          description : 'Class of the radio variant',
-          properties: ["variant"],
-          suffixes: ['primary', 'info', 'warning', 'danger'],
-          action: (cmp) => {
-            cmp.data.variant = 'warning';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
diff --git a/packages/oruga/src/components/radio/Radio.spec.js b/packages/oruga/src/components/radio/Radio.spec.js
deleted file mode 100644
index 8d957befe..000000000
--- a/packages/oruga/src/components/radio/Radio.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import ORadio from '@components/radio/Radio'
-
-let wrapper
-
-describe('ORadio', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(ORadio)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('has an input radio', () => {
-        expect(wrapper.contains('label input[type=radio]')).toBeTruthy()
-    })
-
-    it('emit input event with value when value change', async () => {
-        wrapper.setProps({ value: true })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.computedValue).toBeTruthy()
-
-        wrapper.vm.computedValue = false
-        await wrapper.vm.$nextTick()
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(false)
-    })
-
-    it('method focus() gives focus to the input element', (done) => {
-        wrapper.vm.$refs.input.focus = jest.fn()
-        wrapper.vm.focus()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled()
-            done()
-        })
-    })
-})
diff --git a/packages/oruga/src/components/radio/Radio.vue b/packages/oruga/src/components/radio/Radio.vue
deleted file mode 100644
index 57a6e2c6d..000000000
--- a/packages/oruga/src/components/radio/Radio.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-<template>
-    <label
-        :class="rootClasses"
-        ref="label"
-        :disabled="disabled"
-        @click.stop="focus"
-        @keydown.prevent.enter="$refs.label.click()">
-        <input
-            v-model="computedValue"
-            type="radio"
-            ref="input"
-            @click.stop
-            :class="checkClasses"
-            :disabled="disabled"
-            :required="required"
-            :name="name"
-            :value="nativeValue">
-        <span :class="labelClasses"><slot/></span>
-    </label>
-</template>
-
-<script>
-import CheckRadioMixin from '../../utils/CheckRadioMixin'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-/**
- * Select an option from a set
- * @displayName Radio
- * @example ./examples/Radio.md
- * @style _radio.scss
- */
-export default {
-    name: 'ORadio',
-    mixins: [BaseComponentMixin, CheckRadioMixin],
-    configField: 'radio',
-    props: {
-        rootClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        checkedClass: [String, Function, Array],
-        checkCheckedClass: [String, Function, Array],
-        checkClass: [String, Function, Array],
-        labelClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    computed: {
-        isChecked() {
-            return this.value === this.nativeValue
-        },
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-radio'),
-                { [this.computedClass('sizeClass', 'o-radio--', this.size)]: this.size },
-                { [this.computedClass('checkedClass', 'o-radio--checked')]: this.isChecked },
-                { [this.computedClass('disabledClass', 'o-radio--disabled')]: this.disabled },
-                { [this.computedClass('variantClass', 'o-radio--', this.variant)]: this.variant }
-            ]
-        },
-        checkClasses() {
-            return [
-                this.computedClass('checkClass', 'o-radio__check'),
-                { [this.computedClass('checkCheckedClass', 'o-radio__check--checked')]: this.isChecked },
-            ]
-        },
-        labelClasses() {
-            return [
-                this.computedClass('labelClass', 'o-radio__label')
-            ]
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap b/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap
deleted file mode 100644
index 04f5cc7bd..000000000
--- a/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ORadio render correctly 1`] = `<label class="o-radio o-radio--checked"><input type="radio" class="o-radio__check o-radio__check--checked" value="false"> <span class="o-radio__label"></span></label>`;
diff --git a/packages/oruga/src/components/radio/examples/Radio.md b/packages/oruga/src/components/radio/examples/Radio.md
deleted file mode 100644
index ee9f004e0..000000000
--- a/packages/oruga/src/components/radio/examples/Radio.md
+++ /dev/null
@@ -1,104 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="block">
-            <o-radio v-model="radio"
-                name="name"
-                native-value="Flint">
-                Flint
-            </o-radio>
-            <o-radio v-model="radio"
-                name="name"
-                native-value="Silver">
-                Silver
-            </o-radio>
-            <o-radio v-model="radio"
-                name="name"
-                native-value="Jack">
-                Jack
-            </o-radio>
-            <o-radio v-model="radio"
-                name="name"
-                native-value="Vane"
-                disabled>
-                Vane
-            </o-radio>
-        </div>
-        <p class="content">
-            <b>Selection:</b>
-            {{ radio }}
-        </p>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                radio: 'Jack'
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Variants
-
-::: demo
-```html
-<template>
-    <section>
-        <div class="field">
-            <o-radio v-model="radio"
-                native-value="default">
-                Default
-            </o-radio>
-        </div>
-        <div class="field">
-            <o-radio v-model="radio"
-                native-value="info"
-                variant="info">
-                Info
-            </o-radio>
-        </div>
-        <div class="field">
-            <o-radio v-model="radio"
-                native-value="success"
-                variant="success">
-                Success
-            </o-radio>
-        </div>
-        <div class="field">
-            <o-radio v-model="radio"
-                native-value="danger"
-                variant="danger">
-                Danger
-            </o-radio>
-        </div>
-        <div class="field">
-            <o-radio v-model="radio"
-                native-value="warning"
-                variant="warning">
-                Warning
-            </o-radio>
-        </div>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                radio: 'default'
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/radio/index.js b/packages/oruga/src/components/radio/index.js
deleted file mode 100644
index 74edd303e..000000000
--- a/packages/oruga/src/components/radio/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Radio from './Radio'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Radio)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Radio as ORadio
-}
diff --git a/packages/oruga/src/components/select/Inspector.vue b/packages/oruga/src/components/select/Inspector.vue
deleted file mode 100644
index 97f04c5e4..000000000
--- a/packages/oruga/src/components/select/Inspector.vue
+++ /dev/null
@@ -1,148 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field :variant="s.fieldvariant" :message="s.fieldmessage">
-                    <o-select placeholder="Select a character" v-bind="s" v-model="selectedOptions">
-                        <optgroup label="Black Sails">
-                            <option value="flint">Flint</option>
-                            <option value="silver">Silver</option>
-                            <option value="vane">Vane</option>
-                            <option value="billy">Billy</option>
-                            <option value="jack">Jack</option>
-                        </optgroup>
-                        <optgroup label="Breaking Bad">
-                            <option value="heisenberg">Heisenberg</option>
-                            <option value="jesse">Jesse</option>
-                            <option value="saul">Saul</option>
-                            <option value="mike">Mike</option>
-                        </optgroup>
-                    </o-select>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            selectedOptions: null,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconLeftSpaceClass",
-                    description: "Class of the left icon space inside the select",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconRightSpaceClass",
-                    description: "Class of the right icon space inside the select",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of select when rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.rounded = true;
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "multipleClass",
-                    description: "Class of the select when multiple mode is active",
-                    properties: ['multiple'],
-                    action: (cmp) => {
-                        cmp.data.multiple = true;
-                        this.selectedOptions = [];
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of select when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconLeftClass",
-                    description: "Class of the left icon",
-                    properties: ['icon'],
-                    action: (cmp) => {
-                        cmp.data.icon = "envelope";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "iconRightClass",
-                    description: "Class of the right icon",
-                    properties: ['iconRight'],
-                    action: (cmp) => {
-                        cmp.data.iconRight = "times-circle";
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the select size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the select variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.fieldvariant = 'info';
-                        cmp.data.fieldmessage = "Info for this field"
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "selectClass",
-                    description: "Class of the native select element"
-                },
-                {
-                    class: "placeholderClass",
-                    description: "Class of the select placeholder",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                },
-                {
-                    class: "arrowClass",
-                    description: "Class of the select arrow",
-                    warning: "It applies the arrow icon using background-image and background-position on select element. An alternative to override it is iconRight prop (globally or not)",
-                    action: () => {
-                        this.selectedOptions = null;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/select/Select.spec.js b/packages/oruga/src/components/select/Select.spec.js
deleted file mode 100644
index 97516f2f3..000000000
--- a/packages/oruga/src/components/select/Select.spec.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OSelect from '@components/select/Select'
-
-let wrapper
-
-describe('OSelect', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OSelect)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('has a select element', () => {
-        expect(wrapper.contains('select')).toBeTruthy()
-    })
-
-    it('emit input event with value when value change', async () => {
-        wrapper.setProps({ value: true })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.computedValue).toBeTruthy()
-
-        wrapper.vm.computedValue = false
-        await wrapper.vm.$nextTick()
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(valueEmitted).toContainEqual(false)
-    })
-})
diff --git a/packages/oruga/src/components/select/Select.vue b/packages/oruga/src/components/select/Select.vue
deleted file mode 100644
index 250938e57..000000000
--- a/packages/oruga/src/components/select/Select.vue
+++ /dev/null
@@ -1,184 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <select
-            :class="selectClasses"
-            v-model="computedValue"
-            ref="select"
-            :autocomplete="autocomplete"
-            :multiple="multiple"
-            :size="nativeSize"
-            v-bind="$attrs"
-            @blur="onBlur"
-            @focus="onFocus"
-            @invalid="onInvalid">
-
-            <template v-if="placeholder">
-                <option
-                    v-if="placeholderVisible"
-                    :value="null"
-                    disabled
-                    hidden>
-                    {{ placeholder }}
-                </option>
-            </template>
-
-            <slot/>
-
-        </select>
-
-        <o-icon
-            v-if="icon"
-            :class="iconLeftClasses"
-            :icon="icon"
-            :pack="iconPack"
-            :size="size" />
-
-         <o-icon
-            v-if="iconRight"
-            :class="iconRightClasses"
-            :icon="iconRight"
-            :pack="iconPack"
-            :size="size" />
-    </div>
-</template>
-
-<script>
-import Icon from '../icon/Icon'
-
-import FormElementMixin from '../../utils/FormElementMixin'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * Select an item in a dropdown list. Use with Field to access all functionalities
- * @displayName Select
- * @example ./examples/Select.md
- * @style _select.scss
- */
-export default {
-    name: 'OSelect',
-    components: {
-        [Icon.name]: Icon
-    },
-    mixins: [BaseComponentMixin, FormElementMixin],
-    configField: 'select',
-    inheritAttrs: false,
-    props: {
-        /** @model */
-        value: {
-            type: [String, Number, Boolean, Object, Array],
-            default: null
-        },
-        /**
-         * Vertical size of input, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: String,
-        /**
-		 * Icon pack to use
-		 * @values mdi, fa, fas and any other custom icon pack
-		 */
-        iconPack: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'select.iconPack', undefined) }
-        },
-        /**
-         * 	Icon name to be added on the right side
-         */
-        iconRight: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'select.iconRight', undefined) }
-        },
-        /** Text when nothing is selected */
-        placeholder: String,
-        multiple: Boolean,
-        /** Same as native size */
-        nativeSize: [String, Number],
-        rootClass: [String, Function, Array],
-        selectClass: [String, Function, Array],
-        iconLeftSpaceClass: [String, Function, Array],
-        iconRightSpaceClass: [String, Function, Array],
-        roundedClass: [String, Function, Array],
-        multipleClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        iconLeftClass: [String, Function, Array],
-        iconRightClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        placeholderClass: [String, Function, Array],
-        arrowClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            selected: this.value
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-ctrl-sel'),
-                { [this.computedClass('expandedClass', 'o-ctrl-sel--expanded')]: this.expanded },
-            ]
-        },
-        selectClasses() {
-            return [
-                this.computedClass('selectClass', 'o-sel'),
-                { [this.computedClass('roundedClass', 'o-sel--rounded')]: this.rounded },
-                { [this.computedClass('multipleClass', 'o-sel--multiple')]: this.multiple },
-                { [this.computedClass('sizeClass', 'o-sel--', this.size)]: this.size },
-                { [this.computedClass('variantClass', 'o-sel--', (this.statusVariant || this.variant))]: (this.statusVariant || this.variant) },
-                { [this.computedClass('iconLeftSpaceClass', 'o-sel-iconspace-left')]: this.icon },
-                { [this.computedClass('iconRightSpaceClass', 'o-sel-iconspace-right')]: this.iconRight },
-                { [this.computedClass('placeholderClass', 'o-sel--placeholder')]: this.placeholderVisible },
-                { [this.computedClass('arrowClass', 'o-sel-arrow')]: !this.iconRight && !this.multiple }
-            ]
-        },
-        iconLeftClasses() {
-            return [
-                this.computedClass('iconLeftClass', 'o-sel__icon-left')
-            ]
-        },
-        iconRightClasses() {
-            return [
-                this.computedClass('iconRightClass', 'o-sel__icon-right')
-            ]
-        },
-        placeholderVisible() {
-            return this.computedValue === null
-        },
-        computedValue: {
-            get() {
-                return this.selected
-            },
-            set(value) {
-                this.selected = value
-                this.$emit('input', value)
-                this.syncFilled(this.selected)
-                !this.isValid && this.checkHtml5Validity()
-            }
-        },
-
-        $elementRef() {
-            return 'select'
-        }
-    },
-    watch: {
-        /**
-        * When v-model is changed:
-        *   1. Set the selected option.
-        *   2. If it's invalid, validate again.
-        */
-        value(value) {
-            this.selected = value
-            this.syncFilled(this.selected)
-            !this.isValid && this.checkHtml5Validity()
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap b/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap
deleted file mode 100644
index a15da9b83..000000000
--- a/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSelect render correctly 1`] = `
-<div class="o-ctrl-sel"><select class="o-sel o-sel--placeholder o-sel-arrow">
-        <!---->
-    </select>
-    <!---->
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/select/examples/Select.md b/packages/oruga/src/components/select/examples/Select.md
deleted file mode 100644
index fbc6e7704..000000000
--- a/packages/oruga/src/components/select/examples/Select.md
+++ /dev/null
@@ -1,118 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Simple">
-            <o-select placeholder="Select a name">
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Grouped">
-            <o-select placeholder="Select a character" icon="user">
-                <optgroup label="Black Sails">
-                    <option value="flint">Flint</option>
-                    <option value="silver">Silver</option>
-                    <option value="vane">Vane</option>
-                    <option value="billy">Billy</option>
-                    <option value="jack">Jack</option>
-                </optgroup>
-
-                <optgroup label="Breaking Bad">
-                    <option value="heisenberg">Heisenberg</option>
-                    <option value="jesse">Jesse</option>
-                    <option value="saul">Saul</option>
-                    <option value="mike">Mike</option>
-                </optgroup>
-
-                <optgroup label="Game of Thrones">
-                    <option value="tyrion-lannister">Tyrion Lannister</option>
-                    <option value="jamie-lannister">Jamie Lannister</option>
-                    <option value="daenerys-targaryen">Daenerys Targaryen</option>
-                    <option value="jon-snow">Jon Snow</option>
-                </optgroup>
-            </o-select>
-        </o-field>
-
-        <o-field
-            label="Error"
-            variant="danger"
-            message="Something went wrong with this field">
-            <o-select placeholder="Select a character">
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Rounded">
-            <o-select placeholder="Select a character" rounded>
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Disabled">
-            <o-select placeholder="Select a character" disabled>
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Disabled option">
-            <o-select placeholder="Select a character">
-                <option value="flint">Flint</option>
-                <option value="silver" disabled>Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Expanded">
-            <o-select placeholder="Select a character" expanded>
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Size 'large'">
-            <o-select
-                placeholder="Large"
-                size="large">
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-            </o-select>
-        </o-field>
-
-        <o-field label="Multiple">
-            <o-select
-                multiple
-                native-size="8"
-                v-model="selectedOptions">
-                <option value="flint">Flint</option>
-                <option value="silver">Silver</option>
-                <option value="vane">Vane</option>
-                <option value="billy">Billy</option>
-                <option value="jack">Jack</option>
-                <option value="heisenberg">Heisenberg</option>
-                <option value="jesse">Jesse</option>
-                <option value="saul">Saul</option>
-                <option value="mike">Mike</option>
-            </o-select>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-      data() {
-        return {
-          selectedOptions: []
-        }
-      }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/select/index.js b/packages/oruga/src/components/select/index.js
deleted file mode 100644
index 54a500abb..000000000
--- a/packages/oruga/src/components/select/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Select from './Select'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Select)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Select as OSelect
-}
diff --git a/packages/oruga/src/components/sidebar/Inspector.vue b/packages/oruga/src/components/sidebar/Inspector.vue
deleted file mode 100644
index 36e207f60..000000000
--- a/packages/oruga/src/components/sidebar/Inspector.vue
+++ /dev/null
@@ -1,189 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <div class="sidebar-page">
-                    <section class="sidebar-layout" v-if="position === 'static'">
-                        <o-sidebar v-bind="s" position="static" open>
-                            <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-                            <section style="padding: 1em">
-                            <h5>Example 1</h5>
-                            <h5>Example 2</h5>
-                            <h5>Example 3</h5>
-                            <h5>Example 4</h5>
-                            <h5>Example 5</h5>
-                            </section>
-                        </o-sidebar>
-                    </section>
-                    <section class="sidebar-layout" v-if="position !== 'static'">
-                        <o-sidebar v-bind="s" :position="position" :open.sync="open" variant="primary" style="--oruga-sidebar-zindex: 50">
-                            <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" />
-                            <section style="padding: 1em">
-                            <h5>Example 1</h5>
-                            <h5>Example 2</h5>
-                            <h5>Example 3</h5>
-                            <h5>Example 4</h5>
-                            <h5>Example 5</h5>
-                            </section>
-                        </o-sidebar>
-                    </section>
-                </div>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            position: 'static',
-            open: false,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of sidebar component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "overlayClass",
-                    description: "Class of the sidebar overlay",
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            this.open = true;
-                            cmp.data.overlay = true
-                            cmp.data.fullheight = true
-                        }, 400)
-                    }
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the sidebar content",
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "fixedClass",
-                    description: "Class of the sidebar when its position is fixed",
-                    properties: ['position'],
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            this.open = true;
-                            cmp.data.overlay = true
-                            cmp.data.fullheight = true
-                        }, 400)
-                    }
-                },
-                {
-                    class: "staticClass",
-                    description: "Class of the sidebar when its position is static",
-                    properties: ['position'],
-                    action: () => {
-                        this.position = 'static';
-                    }
-                },
-                {
-                    class: "absoluteClass",
-                    description: "Class of the sidebar when its position is absolute",
-                    properties: ['position'],
-                    warning: "Scroll to the top of this page to see the sidebar",
-                    action: (cmp) => {
-                        this.position = 'absolute';
-                        setTimeout(() => {
-                            cmp.data.fullheight = true
-                            this.open = true;
-                        }, 400)
-                    }
-                },
-                {
-                    class: "fullheightClass",
-                    description: "Class of the sidebar when is fullheight",
-                    properties: ['fullheight'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.fullheight = true;
-                    }
-                },
-                {
-                    class: "fullwidthClass",
-                    description: "Class of the sidebar when is fullwidth",
-                    properties: ['fullwidth'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.fullwidth = true;
-                    }
-                },
-                {
-                    class: "rightClass",
-                    description: "Class of the sidebar when is positioned on the right",
-                    properties: ['right'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.right = true;
-                    }
-                },
-                {
-                    class: "reduceClass",
-                    description: "Class of the sidebar when reduced",
-                    properties: ['reduce'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.reduce = true;
-                    }
-                },
-                {
-                    class: "expandOnHoverClass",
-                    description: "Class of the sidebar when expanded on hover",
-                    properties: ['expandOnHover'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.expandOnHover = true;
-                    }
-                },
-                {
-                    class: "expandOnHoverFixedClass",
-                    description: "Class of the sidebar when expanded on hover and its position is fixed",
-                    properties: ['expandOnHover', 'expandOnHoverFixed'],
-                    action: (cmp) => {
-                        this.position = 'fixed';
-                        setTimeout(() => {
-                            cmp.data.expandOnHover = true;
-                            cmp.data.expandOnHoverFixed = true;
-                            this.open = true;
-                        }, 400)
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the sidebar variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "visibleClass",
-                    description : 'Class of the sidebar when sidebar is visible',
-                },
-                {
-                    class: "hiddenClass",
-                    description : 'Class of the sidebar when sidebar is hidden',
-                },
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/sidebar/Sidebar.spec.js b/packages/oruga/src/components/sidebar/Sidebar.spec.js
deleted file mode 100644
index 9f6614411..000000000
--- a/packages/oruga/src/components/sidebar/Sidebar.spec.js
+++ /dev/null
@@ -1,92 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OSidebar from '@components/sidebar/Sidebar'
-
-let wrapper
-
-describe('OSidebar', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OSidebar)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    describe('open', () => {
-        beforeEach(() => {
-            wrapper.setProps({open: true})
-        })
-
-        it('is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-        })
-
-        it('render correctly', () => {
-            expect(wrapper.html()).toMatchSnapshot()
-        })
-
-        it('changes isOpen when open prop is modified', async () => {
-            wrapper.setProps({open: false})
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isOpen).toBeFalsy()
-            expect(wrapper.vm.transitionName).toBe('slide-prev')
-
-            wrapper.setProps({open: true})
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.isOpen).toBeTruthy()
-            expect(wrapper.vm.transitionName).toBe('slide-next')
-        })
-
-        it('close on cancel', () => {
-            wrapper.setProps({canCancel: true})
-            wrapper.vm.isOpen = true
-            wrapper.vm.close = jest.fn(() => wrapper.vm.close)
-            wrapper.vm.cancel('outside')
-
-            wrapper.setProps({canCancel: false})
-            wrapper.vm.cancel('outside')
-
-            expect(wrapper.vm.close).toHaveBeenCalledTimes(1)
-        })
-
-        it('close on escape', () => {
-            wrapper.setProps({open: true})
-            wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel)
-            const event = new KeyboardEvent('keyup', {'key': 'Escape'})
-            wrapper.vm.keyPress({})
-            wrapper.vm.keyPress(event)
-
-            wrapper.setProps({position: 'static'})
-            wrapper.vm.keyPress(event)
-
-            expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1)
-        })
-
-        it('emit events on close', () => {
-            wrapper.vm.close()
-            expect(wrapper.emitted()['close']).toBeTruthy()
-            expect(wrapper.emitted()['update:open']).toBeTruthy()
-        })
-    })
-
-    const component = document.createElement('div')
-    describe('with a container', () => {
-        beforeEach(() => {
-            component.appendChild = jest.fn()
-            wrapper = shallowMount(OSidebar, {
-                propsData: {
-                    container: component
-                },
-                attachToDocument: true
-            })
-        })
-
-        it('Is called', () => {
-            expect(wrapper.exists()).toBeTruthy()
-        })
-    })
-})
diff --git a/packages/oruga/src/components/sidebar/Sidebar.vue b/packages/oruga/src/components/sidebar/Sidebar.vue
deleted file mode 100644
index a969109d5..000000000
--- a/packages/oruga/src/components/sidebar/Sidebar.vue
+++ /dev/null
@@ -1,357 +0,0 @@
-<template>
-    <div
-        :class="rootClasses"
-        v-show="!hideOnMobile">
-        <div
-            :class="overlayClasses"
-            v-if="overlay && isOpen"
-        />
-        <transition
-            :name="transitionName"
-            @before-enter="beforeEnter"
-            @after-enter="afterEnter">
-            <div
-                v-show="isOpen"
-                ref="sidebarContent"
-                :class="contentClasses">
-                <slot />
-            </div>
-        </transition>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import { getOptions } from '../../utils/config'
-import { removeElement, getValueByPath } from '../../utils/helpers'
-
-/**
- * A sidebar to use as left/right overlay or static
- * @displayName Sidebar
- * @example ./examples/Sidebar.md
- * @style _sidebar.scss
- */
-export default {
-    name: 'OSidebar',
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    configField: 'sidebar',
-    props: {
-        /** To control the behaviour of the sidebar programmatically, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding */
-        open: Boolean,
-        /**
-        * Color of the sidebar, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: [String, Object],
-        /** Show an overlay like modal */
-        overlay: Boolean,
-        /**
-         * Skeleton position in relation to the window
-         * @values fixed, absolute, static
-         */
-        position: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'sidebar.position', 'fixed') },
-            validator: (value) => {
-                return [
-                    'fixed',
-                    'absolute',
-                    'static'
-                ].indexOf(value) >= 0
-            }
-        },
-        /** Show sidebar in fullheight */
-        fullheight: Boolean,
-        /** Show sidebar in fullwidth */
-        fullwidth: Boolean,
-        /** Show the sidebar on right */
-        right: Boolean,
-        /**
-         * Custom layout on mobile
-         * @values fullwidth, reduced, hidden
-         */
-        mobile: {
-            type: String,
-            validator: (value) => {
-                return [
-                    '',
-                    'fullwidth',
-                    'reduced',
-                    'hidden'
-                ].indexOf(value) >= 0
-            }
-        },
-        /** Show a small sidebar */
-        reduce: Boolean,
-        /** Expand sidebar on hover when reduced or mobile is reduce */
-        expandOnHover: Boolean,
-        /** Expand sidebar on hover with fixed position when reduced or mobile is reduce */
-        expandOnHoverFixed: Boolean,
-        /**
-         * Sidebar cancel options
-         * @values true, false, 'escape', 'outside'
-         */
-        canCancel: {
-            type: [Array, Boolean],
-            default: () => { return getValueByPath(getOptions(), 'sidebar.canCancel', ['escape', 'outside']) }
-        },
-        /**
-         * Callback on cancel
-         */
-        onCancel: {
-            type: Function,
-            default: () => {}
-        },
-        scroll: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'sidebar.scroll', 'clip')
-            },
-            validator: (value) => {
-                return [
-                    'clip',
-                    'keep'
-                ].indexOf(value) >= 0
-            }
-        },
-        rootClass: [String, Function, Array],
-        overlayClass: [String, Function, Array],
-        contentClass: [String, Function, Array],
-        fixedClass: [String, Function, Array],
-        staticClass: [String, Function, Array],
-        absoluteClass: [String, Function, Array],
-        fullheightClass: [String, Function, Array],
-        fullwidthClass: [String, Function, Array],
-        rightClass: [String, Function, Array],
-        reduceClass: [String, Function, Array],
-        expandOnHoverClass: [String, Function, Array],
-        expandOnHoverFixedClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        scrollClipClass: [String, Function, Array],
-        noScrollClass: [String, Function, Array],    
-        hiddenClass: [String, Function, Array],
-        visibleClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            isOpen: this.open,
-            transitionName: null,
-            animating: true,
-            savedScrollTop: null
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-side'),
-                { [this.computedClass('mobileClass', 'o-side--mobile')]: this.isMatchMedia },
-            ]
-        },
-        overlayClasses() {
-            return [
-                this.computedClass('overlayClass', 'o-side__overlay')
-            ]
-        },
-        contentClasses() {
-            return [
-                this.computedClass('contentClass', 'o-side__content'),
-                { [this.computedClass('variantClass', 'o-side__content--', this.variant)]: this.variant },
-                { [this.computedClass('fixedClass', 'o-side__content--fixed')]: this.isFixed },
-                { [this.computedClass('staticClass', 'o-side__content--static')]: this.isStatic },
-                { [this.computedClass('absoluteClass', 'o-side__content--absolute')]: this.isAbsolute },
-                { [this.computedClass('fullheightClass', 'o-side__content--fullheight')]: this.fullheight },
-                { [this.computedClass('fullwidthClass', 'o-side__content--fullwidth')]: this.fullwidth || (this.mobile === 'fullwidth' && this.isMatchMedia) },
-                { [this.computedClass('rightClass', 'o-side__content--right')]: this.right },
-                { [this.computedClass('reduceClass', 'o-side__content--mini')]: this.reduce || (this.mobile === 'reduced' && this.isMatchMedia) },
-                { [this.computedClass('expandOnHoverClass', 'o-side__content--mini-expand')]: (this.expandOnHover && this.mobile !== 'fullwidth') },
-                { [this.computedClass('expandOnHoverFixedClass', 'o-side__content--expand-mini-hover-fixed')]: (this.expandOnHover && this.expandOnHoverFixed  && this.mobile !== 'fullwidth') },
-                { [this.computedClass('visibleClass', 'o-side__content--visible')]: this.isOpen },
-                { [this.computedClass('hiddenClass', 'o-side__content--hidden')]: !this.isOpen },
-            ]
-        },
-        scrollClass() {
-            if (this.scroll === 'clip') {
-                return this.computedClass('scrollClipClass', 'o-clipped')
-            }
-            return this.computedClass('noScrollClass', 'o-noscroll')
-        },
-        cancelOptions() {
-            return typeof this.canCancel === 'boolean'
-                ? this.canCancel
-                    ? getValueByPath(getOptions(), 'sidebar.canCancel', ['escape', 'outside'])
-                    : []
-                : this.canCancel
-        },
-        isStatic() {
-            return this.position === 'static'
-        },
-        isFixed() {
-            return this.position === 'fixed'
-        },
-        isAbsolute() {
-            return this.position === 'absolute'
-        },
-        hideOnMobile() {
-            return this.mobile === 'hidden' && this.isMatchMedia
-        }
-    },
-    watch: {
-        open: {
-            handler(value) {
-                this.isOpen = value
-                if (this.overlay) {
-                    this.handleScroll()
-                }
-                const open = this.right ? !value : value
-                this.transitionName = !open ? 'slide-prev' : 'slide-next'
-            },
-            immediate: true
-        }
-    },
-    methods: {
-        /**
-         * White-listed items to not close when clicked.
-         * Add sidebar content and all children.
-         */
-        whiteList() {
-            const whiteList = []
-            whiteList.push(this.$refs.sidebarContent)
-            // Add all chidren from dropdown
-            if (this.$refs.sidebarContent !== undefined) {
-                const children = this.$refs.sidebarContent.querySelectorAll('*')
-                for (const child of children) {
-                    whiteList.push(child)
-                }
-            }
-            return whiteList
-        },
-        /**
-        * Keypress event that is bound to the document.
-        */
-        keyPress({ key }) {
-            if (this.isFixed) {
-                if (this.isOpen && (key === 'Escape' || key === 'Esc')) this.cancel('escape')
-            }
-        },
-
-        /**
-        * Close the Sidebar if canCancel and call the onCancel prop (function).
-        */
-        cancel(method) {
-            if (this.cancelOptions.indexOf(method) < 0) return
-            if (this.isStatic) return
-
-            this.onCancel.apply(null, arguments)
-            this.close()
-        },
-
-        /**
-        * Call the onCancel prop (function) and emit events
-        */
-        close() {
-            this.isOpen = false
-            this.$emit('close')
-            this.$emit('update:open', false)
-        },
-
-        /**
-         * Close fixed sidebar if clicked outside.
-         */
-        clickedOutside(event) {
-            if (this.isFixed) {
-                if (this.isOpen && !this.animating) {
-                    if (this.whiteList().indexOf(event.target) < 0) {
-                        this.cancel('outside')
-                    }
-                }
-            }
-        },
-
-        /**
-        * Transition before-enter hook
-        */
-        beforeEnter() {
-            this.animating = true
-        },
-
-        /**
-        * Transition after-leave hook
-        */
-        afterEnter() {
-            this.animating = false
-        },
-
-        handleScroll() {
-            if (typeof window === 'undefined') return
-
-            if (this.scroll === 'clip') {
-                if (this.scrollClass) {
-                    if (this.open) {
-                        document.documentElement.classList.add(this.scrollClass)
-                    } else {
-                        document.documentElement.classList.remove(this.scrollClass)
-                    }
-                    return
-                }
-            }
-            this.savedScrollTop = !this.savedScrollTop
-                ? document.documentElement.scrollTop
-                : this.savedScrollTop
-            if (this.scrollClass) {
-                if (this.open) {
-                    document.body.classList.add(this.scrollClass)
-                } else {
-                    document.body.classList.remove(this.scrollClass)
-                }
-            }
-            if (this.open) {
-                document.body.style.top = `-${this.savedScrollTop}px`
-                return
-            }
-            document.documentElement.scrollTop = this.savedScrollTop
-            document.body.style.top = null
-            this.savedScrollTop = null
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('keyup', this.keyPress)
-            document.addEventListener('click', this.clickedOutside)
-        }
-    },
-    mounted() {
-        if (typeof window !== 'undefined') {
-            if (this.isFixed) {
-                document.body.appendChild(this.$el)
-            }
-            if (this.overlay && this.open) {
-                this.handleScroll()
-            }
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('keyup', this.keyPress)
-            document.removeEventListener('click', this.clickedOutside)
-            if (this.overlay) {
-                // reset scroll
-                const savedScrollTop = !this.savedScrollTop
-                    ? document.documentElement.scrollTop
-                    : this.savedScrollTop
-                if (this.scrollClass) {
-                    document.body.classList.remove(this.scrollClass)
-                    document.documentElement.classList.remove(this.scrollClass)
-                }
-                document.documentElement.scrollTop = savedScrollTop
-                document.body.style.top = null
-            }
-        }
-        if (this.isFixed) {
-            removeElement(this.$el)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap b/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap
deleted file mode 100644
index 4767f173e..000000000
--- a/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap
+++ /dev/null
@@ -1,19 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSidebar open render correctly 1`] = `
-<div class="o-side">
-    <!---->
-    <transition-stub name="slide-next">
-        <div class="o-side__content o-side__content--fixed" style=""></div>
-    </transition-stub>
-</div>
-`;
-
-exports[`OSidebar render correctly 1`] = `
-<div class="o-side">
-    <!---->
-    <transition-stub name="slide-prev">
-        <div class="o-side__content o-side__content--fixed" style="display: none;"></div>
-    </transition-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/sidebar/examples/Sidebar.md b/packages/oruga/src/components/sidebar/examples/Sidebar.md
deleted file mode 100644
index 3aa941970..000000000
--- a/packages/oruga/src/components/sidebar/examples/Sidebar.md
+++ /dev/null
@@ -1,131 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-sidebar
-            :fullheight="fullheight"
-            :fullwidth="fullwidth"
-            :overlay="overlay"
-            :right="right"
-            :open.sync="open"
-            >
-            <o-button v-if="fullwidth" icon-left="times" label="Close" @click="open = false" />
-            <img
-                width="128"
-                src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4"
-                alt="Lightweight UI components for Vue.js"
-            />
-            <h3>Example</h3>
-           
-        </o-sidebar>
-        <div class="block">
-            <o-field grouped group-multiline>
-                <o-switch v-model="overlay">Overlay</o-switch>
-                <o-switch v-model="fullheight">Fullheight</o-switch>
-                <o-switch v-model="fullwidth">Fullwidth</o-switch>
-                <o-switch v-model="right">Right</o-switch>
-            </o-field>
-        </div>
-
-        <br>
-
-        <o-button @click="open = true">Show</o-button>
-    </section>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      open: false,
-      overlay: true,
-      fullheight: true,
-      fullwidth: false,
-      right: false
-    }
-  }
-}
-</script>
-```
-:::
-
-### Static
-
-::: demo
-```html
-<template>
-    <div class="sidebar-page">
-        <section class="sidebar-layout">
-             <o-sidebar
-                position="static"
-                :mobile="mobile"
-                :expand-on-hover="expandOnHover"
-                :reduce="reduce"
-                open
-            >
-                 <img
-                    width="128"
-                    src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4"
-                    alt="Lightweight UI components for Vue.js"
-                />
-                <section style="padding: 1em">
-                  <h5>Example 1</h5>
-                  <h5>Example 2</h5>
-                  <h5>Example 3</h5>
-                  <h5>Example 4</h5>
-                  <h5>Example 5</h5>
-                </section>
-            </o-sidebar>
-
-            <div style="padding: 1em">
-                <o-field>
-                    <o-switch v-model="reduce">Reduced</o-switch>
-                </o-field>
-                <o-field>
-                    <o-switch v-model="expandOnHover">Expand on hover</o-switch>
-                </o-field>
-                <br>
-                <o-field label="Mobile Layout">
-                    <o-select v-model="mobile">
-                        <option :value="null"></option>
-                        <option value="reduced">Reduced</option>
-                        <option value="hidden">Hidden</option>
-                        <option value="fullwidth">Fullwidth</option>
-                    </o-select>
-                </o-field>
-            </div>
-        </section>
-    </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      expandOnHover: false,
-      mobile: "reduced",
-      reduce: false
-    }
-  }
-}
-</script>
-
-<style>
-.sidebar-page {
-    display: flex;
-    flex-direction: column;
-    width: 100%;
-    min-height: 100%;
-}
-.sidebar-layout {
-    display: flex;
-    flex-direction: row;
-    min-height: 100%;
-}
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/sidebar/index.js b/packages/oruga/src/components/sidebar/index.js
deleted file mode 100644
index d13827352..000000000
--- a/packages/oruga/src/components/sidebar/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Sidebar from './Sidebar'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Sidebar)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Sidebar as OSidebar
-}
diff --git a/packages/oruga/src/components/skeleton/Inspector.vue b/packages/oruga/src/components/skeleton/Inspector.vue
deleted file mode 100644
index 90a5ca6c8..000000000
--- a/packages/oruga/src/components/skeleton/Inspector.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-<template>
-  <div class="field">
-    <doc-wrapper>
-      <template v-slot:default="s">
-        <o-skeleton v-bind="s" width="264px" :count="2"></o-skeleton>
-      </template>
-    </doc-wrapper>
-    <inspector :inspectData="inspectData"></inspector>
-  </div>
-</template>
-
-<script>
-
-export default {
-  data() {
-    return {
-      inspectData: [
-        {
-          class: 'rootClass',
-          description : 'Class of the root element'
-        },
-        {
-          class: 'animationClass',
-          description : 'Class of the skeleton animation',
-
-          action: (cmp) => {
-            cmp.data.animated = true;
-          }
-        },
-        {
-          class: 'positionClass',
-          description : 'Class of the skeleton position',
-          properties: ['position'],
-          suffixes: ['left', 'centered', 'right'],
-          action: (cmp) => {
-            cmp.data.position = 'centered';
-          }
-        },
-        {
-          class: 'itemClass',
-          description : 'Class of the skeleton item'
-        },
-        {
-          class: 'itemRoundedClass',
-          description : 'Class of the skeleton item rounded',
-          properties: ['rounded'],
-          action: (cmp) => {
-            cmp.data.rounded = true;
-          }
-        },
-        {
-          class: 'sizeClass',
-          description : 'Class of the skeleton size',
-          properties: ['size'],
-          suffixes: ['small', 'medium', 'large'],
-          action: (cmp) => {
-            cmp.data.size = 'large';
-          }
-        }
-      ]
-    }
-  }
-}
-</script>
diff --git a/packages/oruga/src/components/skeleton/Skeleton.spec.js b/packages/oruga/src/components/skeleton/Skeleton.spec.js
deleted file mode 100644
index 74e650b87..000000000
--- a/packages/oruga/src/components/skeleton/Skeleton.spec.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OSkeleton from '@components/skeleton/Skeleton'
-
-let wrapper
-
-describe('OSkeleton', () => {
-    beforeEach(() => {
-        wrapper = mount(OSkeleton)
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/skeleton/Skeleton.vue b/packages/oruga/src/components/skeleton/Skeleton.vue
deleted file mode 100644
index dd259d95f..000000000
--- a/packages/oruga/src/components/skeleton/Skeleton.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { toCssDimension } from '../../utils/helpers'
-
-/**
- * A placeholder for content to load
- * @displayName Skeleton
- * @example ./examples/Skeleton.md
- * @style _skeleton.scss
- */
-export default {
-    name: 'OSkeleton',
-    mixins: [BaseComponentMixin],
-    configField: 'skeleton',
-    props: {
-        /** Show or hide loader	 */
-        active: {
-            type: Boolean,
-            default: true
-        },
-        /** Show a loading animation */
-        animated: {
-            type: Boolean,
-            default: true
-        },
-        /** Custom width */
-        width: [Number, String],
-        /** Custom height */
-        height: [Number, String],
-        /** Show a circle shape */
-        circle: Boolean,
-        /** Rounded style */
-        rounded: {
-            type: Boolean,
-            default: true
-        },
-        /** Number of shapes to display */
-        count: {
-            type: Number,
-            default: 1
-        },
-        /**
-         * Skeleton position in relation to the element
-         * @values left, centered, right
-         */
-        position: {
-            type: String,
-            default: 'left',
-            validator(value) {
-                return [
-                    'left',
-                    'centered',
-                    'right'
-                ].indexOf(value) > -1
-            }
-        },
-        /**
-         * Size of skeleton
-         * @values small, medium, large
-         */
-        size: String,
-        rootClass: [String, Function, Array],
-        animationClass: [String, Function, Array],
-        positionClass: [String, Function, Array],
-        itemClass: [String, Function, Array],
-        itemRoundedClass: [String, Function, Array],
-        sizeClass: [String, Function, Array]
-    },
-    render(h) {
-        if (!this.active) return
-        const items = []
-        const width = this.width
-        const height = this.height
-        for (let i = 0; i < this.count; i++) {
-            items.push(h('div',
-                {
-                    staticClass: this.computedClass('itemClass', 'o-sklt__item'),
-                    class: [
-                      { [this.computedClass('itemRoundedClass', 'o-sklt__item--rounded')]: this.rounded },
-                      { [this.computedClass('animationClass', 'o-sklt__item--animated')]: this.animated },
-                      { [this.computedClass('sizeClass', 'o-sklt__item--', this.size)]: this.size },
-                    ],
-                    key: i,
-                    style: {
-                        height: toCssDimension(height),
-                        width: toCssDimension(width),
-                        borderRadius: this.circle ? '50%' : null
-                    }
-                }
-            ))
-        }
-        return h('div',
-            {
-                staticClass: this.computedClass('rootClass', 'o-sklt'),
-                class: [
-                    { [this.computedClass('positionClass', 'o-sklt--', this.position)]: this.position }
-                ]
-            },
-            items
-        )
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap b/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap
deleted file mode 100644
index 5b0a670a4..000000000
--- a/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap
+++ /dev/null
@@ -1,7 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSkeleton render correctly 1`] = `
-<div class="o-sklt o-sklt--left">
-    <div class="o-sklt__item o-sklt__item--rounded o-sklt__item--animated"></div>
-</div>
-`;
diff --git a/packages/oruga/src/components/skeleton/examples/Skeleton.md b/packages/oruga/src/components/skeleton/examples/Skeleton.md
deleted file mode 100644
index 493f0faec..000000000
--- a/packages/oruga/src/components/skeleton/examples/Skeleton.md
+++ /dev/null
@@ -1,38 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <o-switch v-model="animated">Animated</o-switch>
-        </o-field>
-
-        <o-skeleton width="20%" :animated="animated"></o-skeleton>
-
-        <o-skeleton width="40%" :animated="animated"></o-skeleton>
-
-        <o-skeleton width="80%" :animated="animated"></o-skeleton>
-
-        <o-skeleton :animated="animated"></o-skeleton>
-
-        <o-skeleton :animated="animated" circle width="64px" height="64px"></o-skeleton>
-
-        <o-skeleton :animated="animated" size="large" :count="2"></o-skeleton>
-
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            animated: true
-        }
-    }
-}
-</script>
-```
-:::
\ No newline at end of file
diff --git a/packages/oruga/src/components/skeleton/index.js b/packages/oruga/src/components/skeleton/index.js
deleted file mode 100644
index d27d4d29d..000000000
--- a/packages/oruga/src/components/skeleton/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Skeleton from './Skeleton'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Skeleton)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Skeleton as OSkeleton
-}
diff --git a/packages/oruga/src/components/slider/Inspector.vue b/packages/oruga/src/components/slider/Inspector.vue
deleted file mode 100644
index 4d5ee49b8..000000000
--- a/packages/oruga/src/components/slider/Inspector.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-slider v-bind="s" :min="1" :max="10" :value="4">
-                    <template v-for="val in [1, 2, 3, 4, 5, 6, 7, 8, 9]">
-                        <o-slider-tick v-bind="s" :value="val" :key="val">{{ val }}</o-slider-tick>
-                    </template>
-                </o-slider>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            subitem: "slider-tick",
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "trackClass",
-                    description: "Class of the slider track",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "fillClass",
-                    description: "Class of the filled part of the slider",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "thumbRoundedClass",
-                    description: "Class when the slider is rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true
-                    }
-                },
-                {
-                    class: "thumbDraggingClass",
-                    description: "Class when the thumb gets dragged",
-                    warning: "Drag the thumb to see it in action!",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class when slider is disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "thumbWrapperClass",
-                    description: "Class of the thumb wrapper",
-                    action: (cmp) => {
-                        cmp.data.fullScreen = true;
-                    }
-                },
-                {
-                    class: "thumbClass",
-                    description: "Class of the thumb",
-                    action: (cmp) => {
-                        cmp.data.fullScreen = true;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the slider variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        this.position = 'static';
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "tickClass",
-                    description: "Class of slider tick",
-                    properties: ["ticks"],
-                    subitem: true,
-                },
-                {
-                    class: "tickHiddenClass",
-                    description: "Class when slider tick is hidden",
-                    properties: ["ticks"],
-                    subitem: true,
-                },
-                {
-                    class: "tickLabelClass",
-                    description: "Class of tick label",
-                    properties: ["ticks"],
-                    subitem: true,
-                }
-            ]
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/slider/Slider.spec.js b/packages/oruga/src/components/slider/Slider.spec.js
deleted file mode 100644
index 7d757edad..000000000
--- a/packages/oruga/src/components/slider/Slider.spec.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OSlider from '@components/slider/Slider'
-
-let wrapper
-
-describe('OSlider', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OSlider)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage props correctly', async () => {
-        const newVariant = 'is-info'
-        expect(wrapper.vm.newTooltipVariant).toBe(wrapper.vm.variant)
-        wrapper.setProps({ tooltipVariant: newVariant })
-        expect(wrapper.vm.newTooltipVariant).toBe(newVariant)
-
-        const value1 = 3
-        const value2 = 5
-        const value = [value1, value2]
-        const min = 1
-        const max = 7
-        wrapper.setProps({ value, min, max })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.value1).toBe(value1)
-        expect(wrapper.vm.value2).toBe(value2)
-        expect(wrapper.vm.minValue).toBe(value1)
-        expect(wrapper.vm.maxValue).toBe(value2)
-
-        expect(wrapper.vm.tickValues).toEqual([])
-        wrapper.setProps({ ticks: true })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.tickValues).toEqual([2, 3, 4, 5, 6])
-
-        expect(wrapper.vm.precision).toBe(0)
-        wrapper.setProps({ step: 0.5 })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.precision).toBe(1)
-    })
-})
diff --git a/packages/oruga/src/components/slider/Slider.vue b/packages/oruga/src/components/slider/Slider.vue
deleted file mode 100644
index d43b28d29..000000000
--- a/packages/oruga/src/components/slider/Slider.vue
+++ /dev/null
@@ -1,387 +0,0 @@
-<template>
-    <div
-        @click="onSliderClick"
-        :class="rootClasses">
-        <div
-            :class="trackClasses"
-            ref="slider">
-            <div
-                :class="fillClasses"
-                :style="barStyle"/>
-            <template v-if="ticks">
-                <o-slider-tick
-                    v-for="(val, key) in tickValues"
-                    :key="key"
-                    :value="val"/>
-            </template>
-            <slot/>
-            <o-slider-thumb
-                v-model="value1"
-                :variant="newTooltipVariant"
-                :tooltip="tooltip"
-                :custom-formatter="customFormatter"
-                :indicator="indicator"
-                ref="button1"
-                role="slider"
-                :format="format"
-                :locale="locale"
-                :tooltip-always="tooltipAlways"
-                :aria-valuenow="value1"
-                :aria-valuemin="min"
-                :aria-valuemax="max"
-                aria-orientation="horizontal"
-                :aria-label="Array.isArray(ariaLabel) ? ariaLabel[0] : ariaLabel"
-                :aria-disabled="disabled"
-                @dragstart="onDragStart"
-                @dragend="onDragEnd" />
-            <o-slider-thumb
-                v-model="value2"
-                :variant="newTooltipVariant"
-                :tooltip="tooltip"
-                :custom-formatter="customFormatter"
-                :indicator="indicator"
-                ref="button2"
-                v-if="isRange"
-                role="slider"
-                :format="format"
-                :locale="locale"
-                :tooltip-always="tooltipAlways"
-                :aria-valuenow="value2"
-                :aria-valuemin="min"
-                :aria-valuemax="max"
-                aria-orientation="horizontal"
-                :aria-label="Array.isArray(ariaLabel) ? ariaLabel[1] : ''"
-                :aria-disabled="disabled"
-                @dragstart="onDragStart"
-                @dragend="onDragEnd" />
-        </div>
-    </div>
-</template>
-
-<script>
-import SliderThumb from './SliderThumb'
-import SliderTick from './SliderTick'
-
-import { getOptions } from '../../utils/config'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * A slider to select a value or range from a given range
- * @displayName Slider
- * @requires ./SliderTick.vue
- * @example ./examples/Slider.md
- * @style _slider.scss
- */
-export default {
-    name: 'OSlider',
-    components: {
-        [SliderThumb.name]: SliderThumb,
-        [SliderTick.name]: SliderTick
-    },
-    configField: 'slider',
-    mixins: [BaseComponentMixin],
-    provide() {
-        return {
-            $slider: this
-        }
-    },
-    props: {
-        /** @model */
-        value: {
-            type: [Number, Array],
-            default: 0
-        },
-        /** Minimum value */
-        min: {
-            type: Number,
-            default: 0
-        },
-        /** Maximum  value */
-        max: {
-            type: Number,
-            default: 100
-        },
-        /** Step interval of ticks */
-        step: {
-            type: Number,
-            default: 1
-        },
-        /**
-         * Color of the slider
-         * @values primary, info, success, warning, danger, and any other custom color
-         */
-        variant: {
-            type: String
-        },
-        /**
-         * Vertical size of slider, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /** Show tick marks */
-        ticks: {
-            type: Boolean,
-            default: false
-        },
-        /** Show tooltip when thumb is being dragged */
-        tooltip: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'slider.tooltip', true)
-            }
-        },
-        /**
-         * Color of the tooltip
-         * @values primary, info, success, warning, danger, and any other custom color
-         */
-        tooltipVariant: String,
-        /** Rounded thumb */
-        rounded: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'slider.rounded', false)
-            }
-        },
-        disabled: {
-            type: Boolean,
-            default: false
-        },
-        /** Update v-model only when dragging is finished */
-        lazy: {
-            type: Boolean,
-            default: false
-        },
-        /** Function to format the tooltip label for display */
-        customFormatter: Function,
-        ariaLabel: [String, Array],
-        /** Increases slider size on focus */
-        biggerSliderFocus: {
-            type: Boolean,
-            default: false
-        },
-        indicator: {
-            type: Boolean,
-            default: false
-        },
-        format: {
-            type: String,
-            default: 'raw',
-            validator: (value) => {
-                return [
-                    'raw',
-                    'percent'
-                ].indexOf(value) >= 0
-            }
-        },
-        locale: {
-            type: [String, Array],
-            default: () => {
-                return getValueByPath(getOptions(), 'locale')
-            }
-        },
-        /** Tooltip displays always */
-        tooltipAlways: {
-            type: Boolean,
-            default: false
-        },
-        rootClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        trackClass: [String, Function, Array],
-        fillClass: [String, Function, Array],
-        thumbRoundedClass: [String, Function, Array],
-        thumbDraggingClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        thumbWrapperClass: [String, Function, Array],
-        thumbClass: [String, Function, Array],
-        variantClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            value1: null,
-            value2: null,
-            dragging: false,
-            isRange: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-slide'),
-                { [this.computedClass('sizeClass', 'o-slide--', this.size)]: this.size },
-                { [this.computedClass('disabledClass', 'o-slide--disabled')]: this.disabled },
-            ]
-        },
-        trackClasses() {
-            return [
-                this.computedClass('trackClass', 'o-slide__track'),
-            ]
-        },
-        fillClasses() {
-            return [
-                this.computedClass('fillClass', 'o-slide__fill'),
-                { [this.computedClass('variantClass', 'o-slide__fill--', this.variant)]: this.variant },
-            ]
-        },
-        thumbClasses() {
-            return [
-                this.computedClass('thumbClass', 'o-slide__thumb'),
-                { [this.computedClass('thumbDraggingClass', 'o-slide__thumb--dragging')]: this.dragging },
-                { [this.computedClass('thumbRoundedClass', 'o-slide__thumb--rounded')]: this.rounded },
-
-            ]
-        },
-        thumbWrapperClasses() {
-             return [
-                this.computedClass('thumbWrapperClass', 'o-slide__thumb-wrapper'),
-            ]
-        },
-        newTooltipVariant() {
-            return this.tooltipVariant ? this.tooltipVariant : this.variant
-        },
-        tickValues() {
-            if (!this.ticks || this.min > this.max || this.step === 0) return []
-            const result = []
-            for (let i = this.min + this.step; i < this.max; i = i + this.step) {
-                result.push(i)
-            }
-            return result
-        },
-        minValue() {
-            return Math.min(this.value1, this.value2)
-        },
-        maxValue() {
-            return Math.max(this.value1, this.value2)
-        },
-        barSize() {
-            return this.isRange
-                ? `${100 * (this.maxValue - this.minValue) / (this.max - this.min)}%`
-                : `${100 * (this.value1 - this.min) / (this.max - this.min)}%`
-        },
-        barStart() {
-            return this.isRange
-                ? `${100 * (this.minValue - this.min) / (this.max - this.min)}%`
-                : '0%'
-        },
-        precision() {
-            const precisions = [this.min, this.max, this.step].map((item) => {
-                const decimal = ('' + item).split('.')[1]
-                return decimal ? decimal.length : 0
-            })
-            return Math.max(...precisions)
-        },
-        barStyle() {
-            return {
-                width: this.barSize,
-                left: this.barStart
-            }
-        }
-    },
-    watch: {
-        value1() {
-            this.onInternalValueUpdate()
-        },
-        value2() {
-            this.onInternalValueUpdate()
-        },
-        min() {
-            this.setValues(this.value)
-        },
-        max() {
-            this.setValues(this.value)
-        },
-        /**
-        * When v-model is changed set the new active step.
-        */
-        value(value) {
-            this.setValues(value)
-        }
-    },
-    methods: {
-        setValues(newValue) {
-            if (this.min > this.max) {
-                return
-            }
-            if (Array.isArray(newValue)) {
-                this.isRange = true
-                const smallValue = typeof newValue[0] !== 'number' || isNaN(newValue[0])
-                    ? this.min
-                    : Math.min(Math.max(this.min, newValue[0]), this.max)
-                const largeValue = typeof newValue[1] !== 'number' || isNaN(newValue[1])
-                    ? this.max
-                    : Math.max(Math.min(this.max, newValue[1]), this.min)
-                this.value1 = this.isThumbReversed ? largeValue : smallValue
-                this.value2 = this.isThumbReversed ? smallValue : largeValue
-            } else {
-                this.isRange = false
-                this.value1 = isNaN(newValue)
-                    ? this.min
-                    : Math.min(this.max, Math.max(this.min, newValue))
-                this.value2 = null
-            }
-        },
-        onInternalValueUpdate() {
-            if (this.isRange) {
-                this.isThumbReversed = this.value1 > this.value2
-            }
-            if (!this.lazy || !this.dragging) {
-                this.emitValue('input')
-            }
-            if (this.dragging) {
-                this.emitValue('dragging')
-            }
-        },
-        sliderSize() {
-            return this.$refs.slider.getBoundingClientRect().width
-        },
-        onSliderClick(event) {
-            if (this.disabled || this.isTrackClickDisabled) return
-            const sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left
-            const percent = (event.clientX - sliderOffsetLeft) / this.sliderSize() * 100
-            const targetValue = this.min + percent * (this.max - this.min) / 100
-            const diffFirst = Math.abs(targetValue - this.value1)
-            if (!this.isRange) {
-                if (diffFirst < this.step / 2) return
-                this.$refs.button1.setPosition(percent)
-            } else {
-                const diffSecond = Math.abs(targetValue - this.value2)
-                if (diffFirst <= diffSecond) {
-                    if (diffFirst < this.step / 2) return
-                    this.$refs['button1'].setPosition(percent)
-                } else {
-                    if (diffSecond < this.step / 2) return
-                    this.$refs['button2'].setPosition(percent)
-                }
-            }
-            this.emitValue('change')
-        },
-        onDragStart() {
-            this.dragging = true
-            this.$emit('dragstart')
-        },
-        onDragEnd() {
-            this.isTrackClickDisabled = true
-            setTimeout(() => {
-                // avoid triggering onSliderClick after dragend
-                this.isTrackClickDisabled = false
-            }, 0)
-            this.dragging = false
-            this.$emit('dragend')
-            if (this.lazy) {
-                this.emitValue('input')
-            }
-        },
-        emitValue(event) {
-            const val = this.isRange
-                ? [this.minValue, this.maxValue]
-                : this.value1
-            this.$emit(event, val)
-        }
-    },
-    created() {
-        this.isThumbReversed = false
-        this.isTrackClickDisabled = false
-        this.setValues(this.value)
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/slider/SliderThumb.spec.js b/packages/oruga/src/components/slider/SliderThumb.spec.js
deleted file mode 100644
index ec8740585..000000000
--- a/packages/oruga/src/components/slider/SliderThumb.spec.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OSlider from '@components/slider/Slider'
-
-let wrapper
-let wrapperParent
-
-describe('OSliderThumb', () => {
-    beforeEach(() => {
-        wrapperParent = mount(OSlider, {
-            propsData: {
-                step: 5,
-            }
-        })
-        wrapper = wrapperParent.find({ ref: 'button1' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('inherits parent properties', () => {
-        expect(wrapper.vm.step).toBe(5)
-    })
-
-    it('manage focus', () => {
-        wrapper.vm.onFocus()
-        expect(wrapper.vm.isFocused).toBeTruthy()
-
-        wrapper.vm.onBlur()
-        expect(wrapper.vm.isFocused).toBeFalsy()
-    })
-})
diff --git a/packages/oruga/src/components/slider/SliderThumb.vue b/packages/oruga/src/components/slider/SliderThumb.vue
deleted file mode 100644
index 0d9fd2312..000000000
--- a/packages/oruga/src/components/slider/SliderThumb.vue
+++ /dev/null
@@ -1,230 +0,0 @@
-<template>
-    <div
-        :class="$slider.thumbWrapperClasses"
-        :style="wrapperStyle">
-        <o-tooltip
-            :label="formattedValue"
-            :variant="variant"
-            :always="dragging || isFocused || tooltipAlways"
-            :active="!disabled && tooltip">
-            <div
-                :class="$slider.thumbClasses"
-                :tabindex="disabled ? false : 0"
-                v-bind="$attrs"
-                @mousedown="onButtonDown"
-                @touchstart="onButtonDown"
-                @focus="onFocus"
-                @blur="onBlur"
-                @keydown.left.prevent="onLeftKeyDown"
-                @keydown.right.prevent="onRightKeyDown"
-                @keydown.down.prevent="onLeftKeyDown"
-                @keydown.up.prevent="onRightKeyDown"
-                @keydown.home.prevent="onHomeKeyDown"
-                @keydown.end.prevent="onEndKeyDown">
-                <span v-if="indicator">{{ formattedValue }}</span>
-            </div>
-        </o-tooltip>
-    </div>
-</template>
-
-<script>
-import Tooltip from '../tooltip/Tooltip'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-export default {
-    name: 'OSliderThumb',
-    components: {
-        [Tooltip.name]: Tooltip
-    },
-    configField: 'slider',
-    inheritAttrs: false,
-    inject: {
-        $slider: { name: '$slider' }
-    },
-    props: {
-        value: {
-            type: Number,
-            default: 0
-        },
-        variant: {
-            type: String,
-            default: ''
-        },
-        tooltip: {
-            type: Boolean,
-            default: true
-        },
-        indicator: {
-            type: Boolean,
-            default: false
-        },
-        customFormatter: Function,
-        format: {
-            type: String,
-            default: 'raw',
-            validator: (value) => {
-                return [
-                    'raw',
-                    'percent'
-                ].indexOf(value) >= 0
-            }
-        },
-        locale: {
-            type: [String, Array],
-            default: () => {
-                return getValueByPath(getOptions(), 'locale')
-            }
-        },
-        tooltipAlways: {
-            type: Boolean,
-            default: false
-        }
-    },
-    data() {
-        return {
-            isFocused: false,
-            dragging: false,
-            startX: 0,
-            startPosition: 0,
-            newPosition: null,
-            oldValue: this.value
-        }
-    },
-    computed: {
-        disabled() {
-            return this.$parent.disabled
-        },
-        max() {
-            return this.$parent.max
-        },
-        min() {
-            return this.$parent.min
-        },
-        step() {
-            return this.$parent.step
-        },
-        precision() {
-            return this.$parent.precision
-        },
-        currentPosition() {
-            return `${(this.value - this.min) / (this.max - this.min) * 100}%`
-        },
-        wrapperStyle() {
-            return { left: this.currentPosition }
-        },
-        formattedValue() {
-            if (typeof this.customFormatter !== 'undefined') {
-                return this.customFormatter(this.value)
-            }
-            if (this.format === 'percent') {
-                return new Intl.NumberFormat(
-                    this.locale,
-                    {
-                        style: 'percent'
-                    }
-                ).format(((this.value - this.min)) / (this.max - this.min))
-            }
-            return new Intl.NumberFormat(this.locale).format(this.value)
-        }
-    },
-    methods: {
-        onFocus() {
-            this.isFocused = true
-        },
-        onBlur() {
-            this.isFocused = false
-        },
-        onButtonDown(event) {
-            if (this.disabled) return
-            event.preventDefault()
-            this.onDragStart(event)
-            if (typeof window !== 'undefined') {
-                document.addEventListener('mousemove', this.onDragging)
-                document.addEventListener('touchmove', this.onDragging)
-                document.addEventListener('mouseup', this.onDragEnd)
-                document.addEventListener('touchend', this.onDragEnd)
-                document.addEventListener('contextmenu', this.onDragEnd)
-            }
-        },
-        onLeftKeyDown() {
-            if (this.disabled || this.value === this.min) return
-            this.newPosition = parseFloat(this.currentPosition) -
-                this.step / (this.max - this.min) * 100
-            this.setPosition(this.newPosition)
-            this.$parent.emitValue('change')
-        },
-        onRightKeyDown() {
-            if (this.disabled || this.value === this.max) return
-            this.newPosition = parseFloat(this.currentPosition) +
-                this.step / (this.max - this.min) * 100
-            this.setPosition(this.newPosition)
-            this.$parent.emitValue('change')
-        },
-        onHomeKeyDown() {
-            if (this.disabled || this.value === this.min) return
-            this.newPosition = 0
-            this.setPosition(this.newPosition)
-            this.$parent.emitValue('change')
-        },
-        onEndKeyDown() {
-            if (this.disabled || this.value === this.max) return
-            this.newPosition = 100
-            this.setPosition(this.newPosition)
-            this.$parent.emitValue('change')
-        },
-        onDragStart(event) {
-            this.dragging = true
-            this.$emit('dragstart')
-            if (event.type === 'touchstart') {
-                event.clientX = event.touches[0].clientX
-            }
-            this.startX = event.clientX
-            this.startPosition = parseFloat(this.currentPosition)
-            this.newPosition = this.startPosition
-        },
-        onDragging(event) {
-            if (this.dragging) {
-                if (event.type === 'touchmove') {
-                    event.clientX = event.touches[0].clientX
-                }
-                const diff = (event.clientX - this.startX) / this.$parent.sliderSize() * 100
-                this.newPosition = this.startPosition + diff
-                this.setPosition(this.newPosition)
-            }
-        },
-        onDragEnd() {
-            this.dragging = false
-            this.$emit('dragend')
-            if (this.value !== this.oldValue) {
-                this.$parent.emitValue('change')
-            }
-            this.setPosition(this.newPosition)
-            if (typeof window !== 'undefined') {
-                document.removeEventListener('mousemove', this.onDragging)
-                document.removeEventListener('touchmove', this.onDragging)
-                document.removeEventListener('mouseup', this.onDragEnd)
-                document.removeEventListener('touchend', this.onDragEnd)
-                document.removeEventListener('contextmenu', this.onDragEnd)
-            }
-        },
-        setPosition(percent) {
-            if (percent === null || isNaN(percent)) return
-            if (percent < 0) {
-                percent = 0
-            } else if (percent > 100) {
-                percent = 100
-            }
-            const stepLength = 100 / ((this.max - this.min) / this.step)
-            const steps = Math.round(percent / stepLength)
-            let value = steps * stepLength / 100 * (this.max - this.min) + this.min
-            value = parseFloat(value.toFixed(this.precision))
-            this.$emit('input', value)
-            if (!this.dragging && value !== this.oldValue) {
-                this.oldValue = value
-            }
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/slider/SliderTick.spec.js b/packages/oruga/src/components/slider/SliderTick.spec.js
deleted file mode 100644
index be52d59e6..000000000
--- a/packages/oruga/src/components/slider/SliderTick.spec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OSlider from '@components/slider/Slider'
-import OSliderTick from '@components/slider/SliderTick'
-
-let wrapper
-let wrapperParent
-
-const WrapperComp = {
-    template: `
-        <OSlider>
-            <OSliderTick ref="tick" />
-        </OSlider>`,
-    components: {
-        OSlider, OSliderTick
-    }
-}
-
-describe('OSliderTick', () => {
-    beforeEach(() => {
-        wrapperParent = mount(WrapperComp)
-        wrapper = wrapperParent.find({ ref: 'tick' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/slider/SliderTick.vue b/packages/oruga/src/components/slider/SliderTick.vue
deleted file mode 100644
index 0d3b40e43..000000000
--- a/packages/oruga/src/components/slider/SliderTick.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-<template>
-    <div
-        :class="rootClasses"
-        :style="tickStyle">
-        <span v-if="$slots.default" :class="tickLabelClasses">
-            <slot/>
-        </span>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-/**
- * @displayName Slider Tick
- */
-export default {
-    name: 'OSliderTick',
-    mixins: [BaseComponentMixin],
-    configField: 'slider',
-    inject: {
-        $slider: { name: '$slider' }
-    },
-    props: {
-        /** Value of single tick */
-        value: {
-            variant: Number,
-            default: 0
-        },
-        tickClass: [String, Function, Array],
-        tickHiddenClass: [String, Function, Array],
-        tickLabelClass: [String, Function, Array]
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('tickClass', 'o-slide__tick'),
-                { [this.computedClass('tickHiddenClass', 'o-slide__tick--hidden')]: this.hidden },
-            ]
-        },
-        tickLabelClasses() {
-            return [
-                this.computedClass('tickLabelClass', 'o-slide__tick-label')
-            ]
-        },
-        position() {
-            const pos = (this.value - this.$parent.min) /
-                (this.$parent.max - this.$parent.min) * 100
-            return (pos >= 0 && pos <= 100) ? pos : 0
-        },
-        hidden() {
-            return this.value === this.$parent.min || this.value === this.$parent.max
-        },
-        tickStyle() {
-            return { 'left': this.position + '%' }
-        }
-    },
-    created() {
-        if (!this.$slider) {
-            throw new Error('You should wrap oSliderTick on a oSlider')
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap
deleted file mode 100644
index 8e3479725..000000000
--- a/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap
+++ /dev/null
@@ -1,12 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSlider render correctly 1`] = `
-<div class="o-slide">
-    <div class="o-slide__track">
-        <div class="o-slide__fill" style="width: 0%; left: 0%;"></div>
-        <!---->
-        <o-slider-thumb-stub value="0" variant="" tooltip="true" format="raw" role="slider" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal"></o-slider-thumb-stub>
-        <!---->
-    </div>
-</div>
-`;
diff --git a/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap
deleted file mode 100644
index aed5f53f4..000000000
--- a/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap
+++ /dev/null
@@ -1,14 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSliderThumb render correctly 1`] = `
-<div class="o-slide__thumb-wrapper" style="left: 0%;">
-    <div class="o-tip">
-        <div class="o-tip__content o-tip__content--top" style="display: none;"><span class="o-tip__arrow o-tip__arrow--top"></span> 0</div>
-        <div class="o-tip__trigger">
-            <div tabindex="0" role="slider" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal" class="o-slide__thumb">
-                <!---->
-            </div>
-        </div>
-    </div>
-</div>
-`;
diff --git a/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap
deleted file mode 100644
index 338bd3320..000000000
--- a/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap
+++ /dev/null
@@ -1,7 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSliderTick render correctly 1`] = `
-<div class="o-slide__tick o-slide__tick--hidden" style="left: 0%;">
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/slider/examples/Slider.md b/packages/oruga/src/components/slider/examples/Slider.md
deleted file mode 100644
index 8e32c8223..000000000
--- a/packages/oruga/src/components/slider/examples/Slider.md
+++ /dev/null
@@ -1,152 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Simple">
-            <o-slider v-model="value"></o-slider>
-        </o-field>
-
-        <o-field label="Warning">
-            <o-slider v-model="value" variant="warning"></o-slider>
-        </o-field>
-
-         <o-field label="Large">
-            <o-slider v-model="value" size="large"></o-slider>
-        </o-field>
-
-        <o-field label="Disabled">
-            <o-slider :value="30" disabled></o-slider>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                value: 5
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Customize
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Tooltip type">
-            <o-slider v-model="sliderValue" :tooltip-variant="sliderType"></o-slider>
-        </o-field>
-
-        <o-field label="Hide tooltip">
-            <o-slider :tooltip="false"></o-slider>
-        </o-field>
-
-        <o-field label="Custom tooltip label">
-            <o-slider :custom-formatter="val => val + '%'"></o-slider>
-        </o-field>
-
-        <o-field label="Rounded thumb">
-            <o-slider rounded></o-slider>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                sliderValue: 0
-            }
-        },
-        computed:{
-            sliderType(){
-                if (this.sliderValue > 25 && this.sliderValue < 75){
-                    return "warning";
-                } else if (this.sliderValue >= 75){
-                    return "success";
-                }
-                return "danger";
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Tick and label
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field label="Show ticks">
-            <o-slider :min="1" :max="10" ticks></o-slider>
-        </o-field>
-
-        <o-field label="Custom tick and label">
-            <o-slider size="medium" :min="0" :max="10">
-                <template v-for="val in [3, 5, 8]">
-                    <o-slider-tick :value="val" :key="val">{{ val }}</o-slider-tick>
-                </template>
-            </o-slider>
-        </o-field>
-
-        <o-field label="Fan">
-            <o-slider :min="0" :max="3" aria-label="Fan" :tooltip="false">
-                <o-slider-tick :value="0">Off</o-slider-tick>
-                <o-slider-tick :value="1">Low</o-slider-tick>
-                <o-slider-tick :value="2">High</o-slider-tick>
-                <o-slider-tick :value="3">Auto</o-slider-tick>
-            </o-slider>
-        </o-field>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-
-### Range
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-slider v-model="numbers" :min="1" :max="15" :step="0.5" ticks>
-            </o-slider>
-        </o-field>
-
-        <o-field>
-            <o-slider v-model="numbers2" variant="danger" :min="-2" :max="8" :step="2">
-            </o-slider>
-        </o-field>
-
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                numbers: [2, 5],
-                numbers2: [2, 6]
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/slider/index.js b/packages/oruga/src/components/slider/index.js
deleted file mode 100644
index 7d88e8c60..000000000
--- a/packages/oruga/src/components/slider/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Slider from './Slider'
-import SliderTick from './SliderTick'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Slider)
-        registerComponent(Vue, SliderTick)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Slider as OSlider,
-    SliderTick as OSliderTick
-}
diff --git a/packages/oruga/src/components/steps/Inspector.vue b/packages/oruga/src/components/steps/Inspector.vue
deleted file mode 100644
index 769aee692..000000000
--- a/packages/oruga/src/components/steps/Inspector.vue
+++ /dev/null
@@ -1,193 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-steps v-bind="s" v-model="activeStep">
-                    <o-step-item v-bind="s" label="Account" icon="user-lock" step="1">
-                        <h1 class="title has-text-centered">Account</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                    <o-step-item v-bind="s" label="Profile" icon="user" clickable step="2">
-                        <h1 class="title has-text-centered">Profile</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                    <o-step-item v-bind="s" label="Social" icon="user-plus" step="3">
-                        <h1 class="title has-text-centered">Social</h1>
-                        Lorem ipsum dolor sit amet.
-                    </o-step-item>
-                </o-steps>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            activeStep: 1,
-            subitem: 'step-item',
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of steps component when on mobile",
-                    warning: "Switch to mobile view to see it in action!",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Size of the steps",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: "verticalClass",
-                    description: "Class of the tooltip trigger",
-                    properties: ['vertical'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                    }
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of the Steps component when is vertical and its position changes",
-                    properties: ['position', 'vertical'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the content item",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the nav item",
-                    specificity: "when <b>positionClass</b> is applied",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderActiveClass",
-                    description: "Class of the nav item when active",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderPreviousClass",
-                    description: "Class of the nav item behind the active one",
-                    subitem: true,
-                    action: () => {
-                        this.activeStep = 2;
-                    }
-                },
-                {
-                    class: "itemHeaderVariantClass",
-                    description: "Class of the nav item with variant (default value by parent steps component)",
-                    subitem: true,
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    }
-                },
-                {
-                    class: "stepsClass",
-                    description: "Class of the steps container",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "animatedClass",
-                    description: "Class of Steps component when animation gets triggered",
-                    properties: ['animated'],
-                    action: (cmp) => {
-                        cmp.data.animated = true
-                    }
-                },
-                {
-                    class: "stepMarkerRoundedClass",
-                    description: "Class of the Steps markers trigger when are rounded",
-                    properties: ['rounded'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "stepDividerClass",
-                    description: "Class of the Steps component dividers",
-                    specificity: "when <b>mobileClass</b> or <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> or <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepMarkerClass",
-                    description: "Class of the Steps component marker",
-                    specificity: "when <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepContentClass",
-                    description: "Class of the Steps component content",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepContentTransitioningClass",
-                    description: "Class of the Steps component content when transition is happening",
-                    warning: "Click on a marker to see it in action",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepNavigationClass",
-                    description: "Class of the Steps component navigation element",
-                    specificity: "when <b>positionClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkLabelClass",
-                    description: "Class of the Step component link label",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkClass",
-                    description: "Class of the Steps component link",
-                    specificity: "when <b>itemHeaderActiveClass</b> is applied",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkClickableClass",
-                    description: "Class of the Steps component link when clickable",
-                    properties: ["clickable"],
-                    action: () => {
-                    }
-                },
-                {
-                    class: "stepLinkLabelPositionClass",
-                    description: "Class of the Step component link label when positioned",
-                    properties: ['labelPosition'],
-                    suffixes: ['bottom', 'right', 'left'],
-                    action: (cmp) => {
-                        cmp.data.labelPosition = "right"
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/steps/StepItem.spec.js b/packages/oruga/src/components/steps/StepItem.spec.js
deleted file mode 100644
index 9386221f8..000000000
--- a/packages/oruga/src/components/steps/StepItem.spec.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import {mount} from '@vue/test-utils'
-import OSteps from '@components/steps/Steps'
-import OStepItem from '@components/steps/StepItem'
-
-let wrapper
-
-const WrapperComp = {
-    template: `
-        <OSteps>
-            <OStepItem/>
-            <OStepItem ref="testItem"/>
-            <OStepItem :visible="false"/>
-        </OSteps>`,
-    components: {
-        OSteps, OStepItem
-    }
-}
-
-describe('OStepItem', () => {
-    beforeEach(() => {
-        wrapper = mount(WrapperComp, { sync: false }).find({ ref: 'testItem' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('computes its position correctly', () => {
-        expect(wrapper.vm.index).toBe(1)
-    })
-
-    it('transition correctly when activate is called', () => {
-        wrapper.vm.activate(0)
-        expect(wrapper.vm.transitionName).toBe('slide-prev')
-
-        wrapper.vm.activate(2)
-        expect(wrapper.vm.transitionName).toBe('slide-next')
-    })
-
-    it('transition correctly when deactivate is called', () => {
-        wrapper.vm.deactivate(2)
-        expect(wrapper.vm.transitionName).toBe('slide-prev')
-
-        wrapper.vm.deactivate(0)
-        expect(wrapper.vm.transitionName).toBe('slide-next')
-    })
-
-    it('emits an activate event', async () => {
-        await wrapper.vm.activate(1)
-        const activateEmitted = wrapper.emitted()['activate']
-        expect(activateEmitted).toBeTruthy()
-    })
-
-    /*
-    it('doesn\'t mount when it has no parent', () => {
-        const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {})
-
-        try {
-            wrapper = mount({
-                template: `<OStepItem/>`,
-                components: {
-                    OStepItem
-                },
-                destroyed() {
-                    spy()
-                }
-            })
-        } catch (error) {
-            expect(error.message).stringMatching(/You should wrap/)
-        } finally {
-            spy.mockRestore()
-        }
-    })
-    */
-})
diff --git a/packages/oruga/src/components/steps/StepItem.vue b/packages/oruga/src/components/steps/StepItem.vue
deleted file mode 100644
index a87a23368..000000000
--- a/packages/oruga/src/components/steps/StepItem.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin.js'
-import TabbedChildMixin from '../../utils/TabbedChildMixin.js'
-
-/**
- * @displayName Step Item
- */
-export default {
-    name: 'OStepItem',
-    mixins: [BaseComponentMixin, TabbedChildMixin('step')],
-    configField: 'steps',
-    props: {
-        /** Step marker content (when there is no icon) */
-        step: [String, Number],
-        /** Default style for the step, optional This will override parent type. Could be used to set a completed step to "success" for example */
-        variant: [String, Object],
-        /** Item can be used directly to navigate. If undefined, previous steps are clickable while the others are not */
-        clickable: {
-            type: Boolean,
-            default: undefined
-        },
-        itemClass: [String, Function, Array],
-        itemHeaderClass: [String, Function, Array],
-        itemHeaderActiveClass: [String, Function, Array],
-        itemHeaderPreviousClass: [String, Function, Array],
-        itemHeaderVariantClass: [String, Function, Array]
-    },
-    computed: {
-        elementClasses() {
-            return [
-                this.computedClass('itemClass', 'o-steps__item')
-            ]
-        },
-        itemClasses() {
-            return [
-                this.headerClass,
-                this.computedClass('itemHeaderClass', 'o-steps__nav-item'),
-                { [this.computedClass('itemHeaderVariantClass', 'o-steps__nav-item--', this.variant || this.parent.variant)]: this.variant || this.parent.variant },
-                { [this.computedClass('itemHeaderActiveClass', 'o-steps__nav-item-active')]: this.isActive },
-                { [this.computedClass('itemHeaderPreviousClass', 'o-steps__nav-item-previous')]: this.parent.activeItem.index > this.index }
-            ]
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/steps/Steps.spec.js b/packages/oruga/src/components/steps/Steps.spec.js
deleted file mode 100644
index c0bb1b689..000000000
--- a/packages/oruga/src/components/steps/Steps.spec.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OSteps from '@components/steps/Steps'
-import OStepItem from '@components/steps/StepItem'
-
-let wrapper
-
-const WrapperComp = {
-    template: `
-        <OSteps :value="1">
-            <OStepItem></OStepItem>
-            <OStepItem :visible="false"></OStepItem>
-            <OStepItem :clickable="false"></OStepItem>
-        </OSteps>`,
-    components: {
-        OSteps, OStepItem
-    }
-}
-
-describe('OSteps', () => {
-    beforeEach(() => {
-        wrapper = mount(WrapperComp, { sync: false }).find(OSteps)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    /*
-    it('emit input event with value when active step is modified', async () => {
-        wrapper.vm.activeId = wrapper.vm.items[0].value
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        const valueEmitted = wrapper.emitted().input
-
-        expect(valueEmitted).toBeTruthy()
-        expect(valueEmitted.length).toBe(1)
-        expect(valueEmitted[0][0]).toBe(0)
-    })
-    */
-
-    it('manage next/previous listener', async () => {
-        // First input
-        wrapper.setProps({value: 0})
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        expect(wrapper.vm.value).toBe(0)
-
-        expect(wrapper.vm.hasNext).toBeTruthy()
-        wrapper.vm.next()
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        // Simulate v-model
-        wrapper.setProps(
-            {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]}
-        )
-
-        const emitted = wrapper.emitted().input
-
-        expect(emitted).toBeTruthy()
-        expect(emitted.length).toBe(1)
-        expect(emitted[0][0]).toBe(3)
-
-        expect(wrapper.vm.hasNext).toBeFalsy()
-
-        wrapper.vm.next()
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        // Simulate v-model
-        wrapper.setProps(
-            {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]}
-        )
-
-        expect(wrapper.emitted().input.length).toBe(1) // To still be
-
-        expect(wrapper.vm.hasPrev).toBeTruthy()
-        wrapper.vm.prev()
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        // Simulate v-model
-        wrapper.setProps(
-            {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]}
-        )
-
-        expect(wrapper.emitted().input.length).toBe(2)
-        expect(wrapper.emitted().input[1][0]).toBe(1)
-        expect(wrapper.vm.hasPrev).toBeFalsy()
-
-        wrapper.vm.prev()
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        expect(wrapper.emitted().input.length).toBe(2) // To still be
-    })
-
-    it('manage wrapper classes as expected', () => {
-        expect(wrapper.vm.wrapperClasses[2]['o-steps__wrapper-vertical']).toBeFalsy()
-
-        wrapper.setProps({vertical: true})
-        expect(wrapper.vm.wrapperClasses[2]['o-steps__wrapper-vertical']).toBeTruthy()
-
-        wrapper.setProps({position: 'right'})
-        expect(wrapper.vm.wrapperClasses[3]['o-steps__wrapper-position-right']).toBeTruthy()
-    })
-
-    it('throws an error when there is no item', () => {
-        const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {})
-
-        try {
-            wrapper = mount({
-                template: `<OSteps/>`,
-                components: {
-                    OSteps
-                },
-                destroyed() {
-                    spy()
-                }
-            })
-        } catch (error) {
-            expect(error.message).stringMatching(/item inside/)
-        } finally {
-            spy.mockRestore()
-        }
-    })
-})
diff --git a/packages/oruga/src/components/steps/Steps.vue b/packages/oruga/src/components/steps/Steps.vue
deleted file mode 100644
index ac635ba1a..000000000
--- a/packages/oruga/src/components/steps/Steps.vue
+++ /dev/null
@@ -1,305 +0,0 @@
-<template>
-    <div :class="wrapperClasses">
-        <nav :class="mainClasses">
-            <div
-                v-for="(childItem, index) in items"
-                :key="childItem.newValue"
-                v-show="childItem.visible"
-                :class="childItem.itemClasses"
-            >
-                <span
-                    v-if="index > 0"
-                    :class="stepDividerClasses">
-                </span>
-                <a
-                    :class="stepLinkClasses(childItem)"
-                    @click="isItemClickable(childItem) && childClick(childItem)">
-                    <div :class="stepMarkerClasses">
-                        <o-icon
-                            v-if="childItem.icon"
-                            :icon="childItem.icon"
-                            :pack="childItem.iconPack"
-                            :size="size"/>
-                        <span v-else-if="childItem.step">{{ childItem.step }}</span>
-                    </div>
-                    <div :class="stepLinkLabelClasses">{{ childItem.label }}</div>
-                </a>
-            </div>
-        </nav>
-        <section :class="stepContentClasses">
-            <slot/>
-        </section>
-        <slot
-            name="navigation"
-            :previous="navigationProps.previous"
-            :next="navigationProps.next">
-            <nav v-if="hasNavigation" :class="stepNavigationClasses">
-                <o-button
-                    role="button"
-                    :icon-left="iconPrev"
-                    :icon-pack="iconPack"
-                    icon-both
-                    :disabled="navigationProps.previous.disabled"
-                    @click.prevent="navigationProps.previous.action"
-                    :aria-label="ariaPreviousLabel">
-                </o-button>
-                <o-button
-                    role="button"
-                    :icon-left="iconNext"
-                    :icon-pack="iconPack"
-                    icon-both
-                    :disabled="navigationProps.next.disabled"
-                    @click.prevent="navigationProps.next.action"
-                    :aria-label="ariaNextLabel">
-                </o-button>
-            </nav>
-        </slot>
-    </div>
-</template>
-
-<script>
-import Button from '../button/Button'
-import Icon from '../icon/Icon'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import TabbedMixin from '../../utils/TabbedMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * Responsive horizontal process steps
- * @displayName Steps
- * @requires ./StepItem.vue
- * @example ./examples/Steps.md
- * @style _steps.scss
- */
-export default {
-    name: 'OSteps',
-    components: {
-        [Button.name]: Button,
-        [Icon.name]: Icon
-    },
-    configField: 'steps',
-    mixins: [BaseComponentMixin, MatchMediaMixin, TabbedMixin('step')],
-    props: {
-        /**
-         * Icon pack to use for the navigation
-         * @values mdi, fa, fas and any other custom icon pack
-         */
-        iconPack: String,
-        /** Icon to use for navigation button */
-        iconPrev: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'steps.iconPrev', 'chevron-left')
-            }
-        },
-        /** Icon to use for navigation button */
-        iconNext: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'steps.iconNext', 'chevron-right')
-            }
-        },
-        /**
-         * Next and previous buttons below the component. You can use this property if you want to use your own custom navigation items.
-         */
-        hasNavigation: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Step navigation is animated
-         */
-        animated: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Position of the marker label, optional
-         * @values bottom, right, left
-         */
-        labelPosition: {
-            type: String,
-            validator(value) {
-                return [
-                    'bottom',
-                    'right',
-                    'left'
-                ].indexOf(value) > -1
-            },
-            default: 'bottom'
-        },
-        /** Rounded step markers */
-        rounded: {
-            type: Boolean,
-            default: true
-        },
-        ariaNextLabel: String,
-        ariaPreviousLabel: String,
-        rootClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        verticalClass: [String, Function, Array],
-        positionClass: [String, Function, Array],
-        stepsClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        animatedClass: [String, Function, Array],
-        stepMarkerRoundedClass: [String, Function, Array],
-        stepDividerClass: [String, Function, Array],
-        stepMarkerClass: [String, Function, Array],
-        stepContentClass: [String, Function, Array],
-        stepContentTransitioningClass: [String, Function, Array],
-        stepNavigationClass: [String, Function, Array],
-        stepLinkClass: [String, Function, Array],
-        stepLinkClickableClass: [String, Function, Array],
-        stepLinkLabelClass: [String, Function, Array],
-        stepLinkLabelPositionClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-    },
-    computed: {
-        wrapperClasses() {
-            return [
-                this.computedClass('rootClass', 'o-steps__wrapper'),
-                { [this.computedClass('sizeClass', 'o-steps--', this.size)]: this.size },
-                { [this.computedClass('verticalClass', 'o-steps__wrapper-vertical')]: this.vertical },
-                { [this.computedClass('positionClass', 'o-steps__wrapper-position-', this.position)]: this.position && this.vertical },
-                { [this.computedClass('mobileClass', 'o-steps--mobile')]: this.isMatchMedia },
-            ]
-        },
-        mainClasses() {
-            return [
-                this.computedClass('stepsClass', 'o-steps'),
-                { [this.computedClass('animatedClass', 'o-steps--animated')]: this.animated }
-            ]
-        },
-        stepDividerClasses() {
-            return [
-                this.computedClass('stepDividerClass', 'o-steps__divider')
-            ]
-        },
-        stepMarkerClasses() {
-            return [
-                this.computedClass('stepMarkerClass', 'o-steps__marker'),
-                { [this.computedClass('stepMarkerRoundedClass', 'o-steps__marker--rounded')]: this.rounded }
-            ]
-        },
-        stepContentClasses() {
-            return [
-                this.computedClass('stepContentClass', 'o-steps__content'),
-                { [this.computedClass('stepContentTransitioningClass', 'o-steps__content-transitioning')]: this.isTransitioning }
-            ]
-        },
-        stepNavigationClasses() {
-            return [
-                this.computedClass('stepNavigationClass', 'o-steps__navigation')
-            ]
-        },
-        stepLinkLabelClasses() {
-            return [
-                this.computedClass('stepLinkLabelClass', 'o-steps__title')
-            ]
-        },
-
-        // Override mixin implementation to always have a value
-        activeItem() {
-            return this.childItems.filter((i) => i.newValue === this.activeId)[0] || this.items[0]
-        },
-
-        /**
-         * Check if previous button is available.
-         */
-        hasPrev() {
-            return !!this.prevItem
-        },
-
-        /**
-         * Retrieves the next visible item
-         */
-        nextItem() {
-            let nextItem = null
-            let idx = this.activeItem ? this.items.indexOf(this.activeItem) + 1 : 0
-            for (; idx < this.items.length; idx++) {
-                if (this.items[idx].visible) {
-                    nextItem = this.items[idx]
-                    break
-                }
-            }
-            return nextItem
-        },
-
-        /**
-         * Retrieves the previous visible item
-         */
-        prevItem() {
-            if (!this.activeItem) { return null }
-
-            let prevItem = null
-            for (let idx = this.items.indexOf(this.activeItem) - 1; idx >= 0; idx--) {
-                if (this.items[idx].visible) {
-                    prevItem = this.items[idx]
-                    break
-                }
-            }
-            return prevItem
-        },
-
-        /**
-         * Check if next button is available.
-         */
-        hasNext() {
-            return !!this.nextItem
-        },
-
-        navigationProps() {
-            return {
-                previous: {
-                    disabled: !this.hasPrev,
-                    action: this.prev
-                },
-                next: {
-                    disabled: !this.hasNext,
-                    action: this.next
-                }
-            }
-        }
-    },
-    methods: {
-        stepLinkClasses(childItem) {
-            return [
-                this.computedClass('stepLinkClass', 'o-steps__link'),
-                { [this.computedClass('stepLinkLabelPositionClass', 'o-steps__link-label-', this.labelPosition)]: this.labelPosition },
-                { [this.computedClass('stepLinkClickableClass', 'o-steps__link-clickable')]: this.isItemClickable(childItem) }
-            ]
-        },
-        /**
-         * Return if the step should be clickable or not.
-         */
-        isItemClickable(stepItem) {
-            if (stepItem.clickable === undefined) {
-                return stepItem.index < this.activeItem.index
-            }
-            return stepItem.clickable
-        },
-
-        /**
-         * Previous button click listener.
-         */
-        prev() {
-            if (this.hasPrev) {
-                this.childClick(this.prevItem)
-            }
-        },
-
-        /**
-         * Previous button click listener.
-         */
-        next() {
-            if (this.hasNext) {
-                this.childClick(this.nextItem)
-            }
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap b/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap
deleted file mode 100644
index da10c8749..000000000
--- a/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OStepItem render correctly 1`] = `<div class="o-steps__item" id="step-2" style="display: none;"></div>`;
diff --git a/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap b/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap
deleted file mode 100644
index 394261a53..000000000
--- a/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap
+++ /dev/null
@@ -1,40 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSteps render correctly 1`] = `
-<div class="o-steps__wrapper">
-    <nav class="o-steps o-steps--animated">
-        <div class="o-steps__nav-item o-steps__nav-item-active">
-            <!----> <a class="o-steps__link o-steps__link-label-bottom">
-                <div class="o-steps__marker o-steps__marker--rounded">
-                    <!---->
-                </div>
-                <div class="o-steps__title"></div>
-            </a>
-        </div>
-        <div class="o-steps__nav-item" style="display: none;"><span class="o-steps__divider"></span> <a class="o-steps__link o-steps__link-label-bottom">
-                <div class="o-steps__marker o-steps__marker--rounded">
-                    <!---->
-                </div>
-                <div class="o-steps__title"></div>
-            </a></div>
-        <div class="o-steps__nav-item"><span class="o-steps__divider"></span> <a class="o-steps__link o-steps__link-label-bottom">
-                <div class="o-steps__marker o-steps__marker--rounded">
-                    <!---->
-                </div>
-                <div class="o-steps__title"></div>
-            </a></div>
-    </nav>
-    <section class="o-steps__content">
-        <div class="o-steps__item" id="step-1"></div>
-        <div class="o-steps__item" id="step-2" style="display: none;"></div>
-        <div class="o-steps__item" id="step-3" style="display: none;"></div>
-    </section>
-    <nav class="o-steps__navigation"><button type="button" disabled="disabled" role="button" class="o-btn o-btn--disabled"><span class="o-btn__wrapper"><span class="o-icon o-btn__icon o-btn__icon-left"><i class="mdi mdi-chevron-left mdi-24px"></i></span>
-            <!---->
-            <!----></span>
-        </button> <button type="button" role="button" class="o-btn"><span class="o-btn__wrapper"><span class="o-icon o-btn__icon o-btn__icon-left"><i class="mdi mdi-chevron-right mdi-24px"></i></span>
-            <!---->
-            <!----></span>
-        </button></nav>
-</div>
-`;
diff --git a/packages/oruga/src/components/steps/examples/Steps.md b/packages/oruga/src/components/steps/examples/Steps.md
deleted file mode 100644
index b8908c59e..000000000
--- a/packages/oruga/src/components/steps/examples/Steps.md
+++ /dev/null
@@ -1,251 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <p>
-            <o-field grouped group-multiline>
-                <div class="control">
-                    <o-switch v-model="showSocial"> Show Social step </o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="isAnimated"> Animated </o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="isRounded"> Rounded </o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="isStepsClickable"> Clickable Marker </o-switch>
-                </div>
-            </o-field>
-            <o-field grouped group-multiline>
-                <div class="control">
-                    <o-switch v-model="hasNavigation"> Navigation Buttons </o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="customNavigation"> Custom Navigation </o-switch>
-                </div>
-                <div class="control">
-                    <o-switch v-model="isProfileSuccess"> Set <code>success</code> for profile </o-switch>
-                </div>
-                <div class="control">
-                <o-switch v-model="enableProfileActivateEvent"> Enable profile activate event </o-switch>
-                </div>
-            </o-field>
-            <o-field v-if="hasNavigation" grouped group-multiline>
-                <o-field label="Prev icon">
-                    <o-select v-model="prevIcon">
-                        <option value="chevron-left">Chevron</option>
-                        <option value="arrow-left">Arrow</option>
-                    </o-select>
-                </o-field>
-                <o-field label="Next icon">
-                    <o-select v-model="nextIcon">
-                        <option value="chevron-right">Chevron</option>
-                        <option value="arrow-right">Arrow</option>
-                    </o-select>
-                </o-field>
-                <o-field label="Label position">
-                    <o-select v-model="labelPosition">
-                        <option value="bottom">Bottom</option>
-                        <option value="right">Right</option>
-                        <option value="left">Left</option>
-                    </o-select>
-                </o-field>
-            </o-field>
-        </p>
-        <o-steps
-            v-model="activeStep"
-            :animated="isAnimated"
-            :rounded="isRounded"
-            :has-navigation="hasNavigation"
-            :icon-prev="prevIcon"
-            :icon-next="nextIcon"
-            :label-position="labelPosition">
-            <o-step-item step="1" label="Account" :clickable="isStepsClickable">
-                <h1 class="title has-text-centered">Account</h1>
-                Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <o-step-item step="2" label="Profile" :clickable="isStepsClickable" :variant="isProfileSuccess ? 'success': ''" @activate="onProfileActivate">
-                <h1 class="title has-text-centered">Profile</h1>
-                Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <o-step-item step="3" :visible="showSocial" label="Social" :clickable="isStepsClickable">
-                <h1 class="title has-text-centered">Social</h1>
-                Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <o-step-item :step="showSocial ? '4' : '3'" label="Finish" :clickable="isStepsClickable" disabled>
-                <h1 class="title has-text-centered">Finish</h1>
-                Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <template
-                v-if="customNavigation"
-                slot="navigation"
-                slot-scope="{previous, next}">
-                <o-button
-                    outlined
-                    variant="danger"
-                    icon-pack="fas"
-                    icon-left="backward"
-                    :disabled="previous.disabled"
-                    @click.prevent="previous.action">
-                    Previous
-                </o-button>
-                <o-button
-                    outlined
-                    variant="success"
-                    icon-pack="fas"
-                    icon-right="forward"
-                    :disabled="next.disabled"
-                    @click.prevent="next.action">
-                    Next
-                </o-button>
-            </template>
-        </o-steps>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                activeStep: 1,
-
-                showSocial: false,
-                isAnimated: true,
-                isRounded: true,
-                isStepsClickable: false,
-
-                hasNavigation: true,
-                customNavigation: false,
-                isProfileSuccess: false,
-                enableProfileActivateEvent: false,
-
-                prevIcon: 'chevron-left',
-                nextIcon: 'chevron-right',
-                labelPosition: 'bottom'
-            }
-        },
-        methods: {
-            onProfileActivate() {
-                if (this.enableProfileActivateEvent) {
-                alert('Profile Activated')
-                }
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Variants
-
-::: demo
-```html
-<template>
-    <section>
-        <h4>Warning</h4>
-        <o-steps variant="warning">
-            <o-step-item label="Account" icon="user-lock"></o-step-item>
-            <o-step-item label="Profile" icon="user"></o-step-item>
-            <o-step-item label="Social" icon="user-plus"></o-step-item>
-        </o-steps>
-
-        <h4>Info</h4>
-        <o-steps variant="info">
-            <o-step-item label="Account" icon="user-lock"></o-step-item>
-            <o-step-item label="Profile" icon="user"></o-step-item>
-            <o-step-item label="Social" icon="user-plus"></o-step-item>
-        </o-steps>
-
-        <h4>Success</h4>
-        <o-steps variant="success">
-            <o-step-item label="Account" icon="user-lock"></o-step-item>
-            <o-step-item label="Profile" icon="user"></o-step-item>
-            <o-step-item label="Social" icon="user-plus"></o-step-item>
-        </o-steps>
-    </section>
-</template>
-
-<script>
-    export default { }
-</script>
-```
-:::
-
-### Vertical
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <div class="control">
-                <o-switch v-model="position" true-value="right"> Right position </o-switch>
-            </div>
-            <o-field label="Size">
-                <o-select v-model="size" placeholder="Size">
-                    <option :value="null">Default</option>
-                    <option value="small">Small</option>
-                    <option value="medium">Medium</option>
-                    <option value="large">Large</option>
-                </o-select>
-            </o-field>
-            <o-field label="Label position" label-position="on-border">
-                <o-select v-model="labelPosition">
-                    <option value="bottom">Bottom</option>
-                    <option value="right">Right</option>
-                    <option value="left">Left</option>
-                </o-select>
-            </o-field>
-        </o-field>
-
-        <o-steps
-            :position="position"
-            :label-position="labelPosition"
-            :size="size"
-            vertical>
-            <o-step-item label="Account" icon="user-lock">
-                Account: Lorem ipsum dolor sit amet. <br />
-                Account: Lorem ipsum dolor sit amet. <br />
-                Account: Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <o-step-item label="Profile" icon="user">
-                Profile: Lorem ipsum dolor sit amet. <br />
-                Profile: Lorem ipsum dolor sit amet.? <br />
-                Profile: Lorem ipsum dolor sit amet. <br />
-                Profile: Lorem ipsum dolor sit amet.
-            </o-step-item>
-
-            <o-step-item label="Social" icon="user-plus" disabled>
-                Social: Lorem ipsum dolor sit amet. <br />
-                Social: Lorem ipsum dolor sit amet. <br />
-                Social: Lorem ipsum dolor sit amet. <br />
-                Social: Lorem ipsum dolor sit amet. <br />
-                Social: Lorem ipsum dolor sit amet.
-            </o-step-item>
-        </o-steps>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                labelPosition: 'bottom',
-                position: null,
-                size: null,
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/steps/index.js b/packages/oruga/src/components/steps/index.js
deleted file mode 100644
index eccdff617..000000000
--- a/packages/oruga/src/components/steps/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Steps from './Steps'
-import StepItem from './StepItem'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Steps)
-        registerComponent(Vue, StepItem)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Steps as OSteps,
-    StepItem as OStepItem
-}
diff --git a/packages/oruga/src/components/switch/Inspector.vue b/packages/oruga/src/components/switch/Inspector.vue
deleted file mode 100644
index b4f7493d4..000000000
--- a/packages/oruga/src/components/switch/Inspector.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-switch v-bind="s" v-model="checkValue">Switch</o-switch>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            checkValue: true,
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "inputClass",
-                    description: "Root class of the native input checkbox",
-                },
-                {
-                    class: "checkClass",
-                    description: "Class of the switch check",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "checkCheckedClass",
-                    description: "Class of the switch check when checked",
-                    action: () => {
-                        this.checkValue = true;
-                    }
-                },
-                {
-                    class: "checkSwitchClass",
-                    description: "Class of the switch check",
-                },
-                {
-                    class: "roundedClass",
-                    description: "Class of the switch when rounded",
-                    properties: ["rounded"],
-                    action: (cmp) => {
-                        cmp.data.rounded = true
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Class when slider is disabled",
-                    properties: ["disabled"],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "labelClass",
-                    description: "Class of the switch label"
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of switch label position",
-                    properties: ["position"],
-                    action: (cmp) => {
-                        cmp.data.position = 'left';
-                    }
-                },
-                {
-                    class: 'sizeClass',
-                    description : 'Class of the switch size',
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: 'variantClass',
-                    description : 'Class of the switch variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                        this.checkValue = true;
-                    }
-                },
-                {
-                    class: "passiveVariantClass",
-                    description : 'Class of the switch passive variant',
-                    properties: ["passiveVariant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.passiveVariant = 'danger';
-                        this.checkValue = false;
-                    }
-                }
-            ],
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/switch/Switch.spec.js b/packages/oruga/src/components/switch/Switch.spec.js
deleted file mode 100644
index 8455ed991..000000000
--- a/packages/oruga/src/components/switch/Switch.spec.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OSwitch from '@components/switch/Switch'
-
-let wrapper
-
-describe('OSwitch', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OSwitch)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('renders input element by default', () => {
-        expect(wrapper.contains('input')).toBeTruthy()
-        expect(wrapper.classes()).toContain('o-switch')
-    })
-
-    it('updates internal value when v-model is changed', async () => {
-        const newValue = 'switch value'
-        wrapper.setProps({ value: newValue })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.newValue).toBe(newValue)
-    })
-
-    it('emit input event when computedValue is set', () => {
-        const newValue = 'switch value'
-        wrapper.vm.computedValue = newValue
-        const valueEmitted = wrapper.emitted()['input'][0]
-        expect(wrapper.vm.newValue).toBe(newValue)
-        expect(valueEmitted).toContainEqual(newValue)
-    })
-
-    it('method focus() gives focus to the input element', async () => {
-        wrapper.vm.$refs.input.focus = jest.fn()
-        wrapper.vm.focus()
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled()
-    })
-
-    it('applies passiveVariant prop properly', async () => {
-        const passiveVariant = 'danger'
-        const value = false
-        wrapper.setProps({ passiveVariant, value })
-        await wrapper.vm.$nextTick()
-        const switchCheckElement = wrapper.find('.o-switch__check')
-        expect(switchCheckElement.classes()).not.toContain('o-switch__check--checked')
-        const switchElement = wrapper.find('.o-switch')
-        expect(switchElement.classes()).toContain('o-switch--danger-passive')
-    })
-
-    it('does not have a label at left by default', () => {
-        const value = false
-        wrapper.setProps({ value })
-        expect(wrapper.classes()).not.toContain('o-switch--left')
-    })
-
-    it('has label at left', async () => {
-        const value = false
-        wrapper.setProps({ position: 'left', value })
-        await wrapper.vm.$nextTick()
-        const rootElement = wrapper.find('.o-switch')
-        expect(rootElement.classes()).toContain('o-switch--left')
-    })
-
-    it('has role switch', async () => {
-        const switchElement = wrapper.find('input')
-        expect(switchElement.attributes().role).toBe('switch')
-    })
-})
diff --git a/packages/oruga/src/components/switch/Switch.vue b/packages/oruga/src/components/switch/Switch.vue
deleted file mode 100644
index 338ae321b..000000000
--- a/packages/oruga/src/components/switch/Switch.vue
+++ /dev/null
@@ -1,180 +0,0 @@
-<template>
-    <label
-        :class="rootClasses"
-        ref="label"
-        :disabled="disabled"
-        @click="focus"
-        @keydown.prevent.enter="$refs.label.click()"
-        @mousedown="isMouseDown = true"
-        @mouseup="isMouseDown = false"
-        @mouseout="isMouseDown = false"
-        @blur="isMouseDown = false">
-        <input
-            v-model="computedValue"
-            type="checkbox"
-            ref="input"
-            role="switch"
-            :class="inputClasses"
-            @click.stop
-            :disabled="disabled"
-            :name="name"
-            :required="required"
-            :value="nativeValue"
-            :true-value="trueValue"
-            :false-value="falseValue"
-            :aria-labelledby="ariaLabelledby">
-        <span :class="checkClasses">
-            <span :class="checkSwitchClasses"></span>
-        </span>
-        <span
-            :id="ariaLabelledby"
-            :class="labelClasses">
-            <slot/>
-        </span>
-    </label>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-
-/**
- * Switch between two opposing states
- * @displayName Switch
- * @example ./examples/Switch.md
- * @style _switch.scss
- */
-export default {
-    name: 'OSwitch',
-    mixins: [BaseComponentMixin],
-    configField: 'switch',
-    props: {
-        /** @model */
-        value: [String, Number, Boolean],
-        /**
-         * Same as native value
-         */
-        nativeValue: [String, Number, Boolean],
-        disabled: Boolean,
-        /**
-         * Color of the switch, optional
-         * @values primary, info, success, warning, danger, and any other custom color
-         */
-        variant: String,
-         /**
-         * Color of the switch when is passive, optional
-         * @values primary, info, success, warning, danger, and any other custom color
-         */
-        passiveVariant: String,
-        /** Name attribute on native checkbox */
-        name: String,
-        required: Boolean,
-        /**
-         * Vertical size of switch, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-         * Overrides the returned value when it's checked
-         */
-        trueValue: {
-            type: [String, Number, Boolean],
-            default: true
-        },
-        /**
-         * Overrides the returned value when it's not checked
-         */
-        falseValue: {
-            type: [String, Number, Boolean],
-            default: false
-        },
-        /** Rounded style */
-        rounded: {
-            type: Boolean,
-            default: true
-        },
-        /** Label position */
-        position: {
-            type: String,
-            default: 'right'
-        },
-        /** Accessibility label to establish relationship between the switch and control label' */
-        ariaLabelledby: String,
-        rootClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        checkClass: [String, Function, Array],
-        checkCheckedClass: [String, Function, Array],
-        checkSwitchClass: [String, Function, Array],
-        roundedClass: [String, Function, Array],
-        labelClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        passiveVariantClass: [String, Function, Array],
-        positionClass: [String, Function, Array],
-        inputClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            newValue: this.value,
-            isMouseDown: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-switch'),
-                { [this.computedClass('sizeClass', 'o-switch--', this.size)]: this.size },
-                { [this.computedClass('disabledClass', 'o-switch--disabled')]: this.disabled },
-                { [this.computedClass('variantClass', 'o-switch--', this.variant)]: this.variant },
-                { [this.computedClass('positionClass', 'o-switch--', this.position)]: this.position },
-                { [this.computedClass('passiveVariantClass', 'o-switch--', this.passiveVariant + '-passive')]: this.passiveVariant }
-            ]
-        },
-        inputClasses() {
-            return [
-                this.computedClass('inputClass', 'o-switch__input')
-            ]
-        },
-        checkClasses() {
-            return [
-                this.computedClass('checkClass', 'o-switch__check'),
-                { [this.computedClass('checkCheckedClass', 'o-switch__check--checked')]: (this.newValue === this.trueValue)},
-                { [this.computedClass('roundedClass', 'o-switch--rounded')]: this.rounded },
-            ]
-        },
-        checkSwitchClasses() {
-            return [
-                this.computedClass('checkSwitchClass', 'o-switch__check-switch'),
-                { [this.computedClass('roundedClass', 'o-switch--rounded')]: this.rounded },
-            ]
-        },
-        labelClasses() {
-            return [
-                this.computedClass('labelClass', 'o-switch__label')
-            ]
-        },
-        computedValue: {
-            get() {
-                return this.newValue
-            },
-            set(value) {
-                this.newValue = value
-                this.$emit('input', this.newValue)
-            }
-        }
-    },
-    watch: {
-        /**
-        * When v-model change, set internal value.
-        */
-        value(value) {
-            this.newValue = value
-        }
-    },
-    methods: {
-        focus() {
-            // MacOS FireFox and Safari do not focus when clicked
-            this.$refs.input.focus()
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap b/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap
deleted file mode 100644
index 8e8e0a0a4..000000000
--- a/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OSwitch render correctly 1`] = `<label class="o-switch o-switch--right"><input type="checkbox" role="switch" true-value="true" class="o-switch__input" value="false"> <span class="o-switch__check o-switch--rounded"><span class="o-switch__check-switch o-switch--rounded"></span></span> <span class="o-switch__label"></span></label>`;
diff --git a/packages/oruga/src/components/switch/examples/Switch.md b/packages/oruga/src/components/switch/examples/Switch.md
deleted file mode 100644
index cb19a4a1f..000000000
--- a/packages/oruga/src/components/switch/examples/Switch.md
+++ /dev/null
@@ -1,177 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-switch>Default</o-switch>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isSwitched">
-                {{ isSwitched }}
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch v-model="isSwitchedCustom"
-                true-value="Yes"
-                false-value="No">
-                {{ isSwitchedCustom }}
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch disabled>Disabled</o-switch>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            isSwitched: false,
-            isSwitchedCustom: 'Yes'
-        }
-    }
-}
-</script>
-```
-:::
-
-### Variants
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-switch :value="true">
-                Default
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch :value="true"
-            variant="info">
-                Info
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch :value="true"
-            variant="success">
-                Success
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch :value="true"
-            variant="danger">
-                Danger
-            </o-switch>
-        </o-field>
-        <o-field>
-            <o-switch :value="true"
-            variant="warning">
-                Warning
-            </o-switch>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-}
-</script>
-```
-:::
-
-### Sizes
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-switch size="small">Small</o-switch>
-        </o-field>
-        <o-field>
-            <o-switch>Default</o-switch>
-        </o-field>
-        <o-field>
-            <o-switch size="medium">Medium</o-switch>
-        </o-field>
-        <o-field>
-            <o-switch size="large">Large</o-switch>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-}
-</script>
-```
-:::
-
-### Style variants
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped>
-            <o-switch v-model="isRounded">Rounded</o-switch>
-            <o-switch v-model="position"
-                true-value="left"
-                false-value="right">Label on left</o-switch>
-        </o-field>
-        <o-field label="Variant">
-            <o-select expanded v-model="variant" placeholder="Variant">
-                <option value="null">Default</option>
-                <option value="primary">Primary</option>
-                <option value="success">Success</option>
-                <option value="warning">Warning</option>
-                <option value="danger">Danger</option>
-            </o-select>
-        </o-field>
-        <o-field label="Passive Variant">
-            <o-select expanded v-model="passive" placeholder="Passive Variant">
-                <option value="null">Default</option>
-                <option value="primary">Primary</option>
-                <option value="success">Success</option>
-                <option value="warning">Warning</option>
-                <option value="danger">Danger</option>
-            </o-select>
-        </o-field>
-        <o-field label="Size">
-            <o-select expanded v-model="size">
-                <option value="">Default</option>
-                <option value="small">small</option>
-                <option value="medium">medium</option>
-                <option value="large">large</option>
-            </o-select>
-        </o-field>
-        <o-switch
-            :rounded="isRounded"
-            :position="position"
-            :size="size"
-            :variant="variant"
-            :passive-variant="passive">Sample</o-switch>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                size: '',
-                variant: null,
-                passive: null,
-                isRounded: false,
-                position: 'right'
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/switch/index.js b/packages/oruga/src/components/switch/index.js
deleted file mode 100644
index eda58a338..000000000
--- a/packages/oruga/src/components/switch/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Switch from './Switch'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Switch)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Switch as OSwitch
-}
diff --git a/packages/oruga/src/components/table/Inspector.vue b/packages/oruga/src/components/table/Inspector.vue
deleted file mode 100644
index ae1e52c37..000000000
--- a/packages/oruga/src/components/table/Inspector.vue
+++ /dev/null
@@ -1,388 +0,0 @@
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-table v-bind="s" :data="s.isEmpty ? [] : data" :columns="columns" :selected.sync="selected" detailed>
-                    <template slot="footer"> This is the footer </template>
-                    <template slot="detail">
-                        DETAILS
-                    </template>
-                </o-table>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-        selected: null,
-        data: [
-          {
-            id: 1,
-            first_name: 'Jesse',
-            last_name: 'Simmons',
-            date: '2016-10-15 13:43:27',
-            gender: 'Male',
-          },
-          {
-            id: 2,
-            first_name: 'John',
-            last_name: 'Jacobs',
-            date: '2016-12-15 06:00:53',
-            gender: 'Male'
-          },
-          {
-            id: 3,
-            first_name: 'Tina',
-            last_name: 'Gilbert',
-            date: '2016-04-26 06:26:28',
-            gender: 'Female'
-          },
-          {
-            id: 4,
-            first_name: 'Clarence',
-            last_name: 'Flores',
-            date: '2016-04-10 10:28:46',
-            gender: 'Male'
-          },
-          {
-            id: 5,
-            first_name: 'Brandon',
-            last_name: 'Lee',
-            date: '2016-12-06 14:38:38',
-            gender: 'Female'
-          },
-          {
-            id: 6,
-            first_name: 'Anne',
-            last_name: 'Straus',
-            date: '2017-12-06 14:38:38',
-            gender: 'Female'
-          },
-          {
-            id: 7,
-            first_name: 'Mark',
-            last_name: 'Knopfler',
-            date: '2018-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 8,
-            first_name: 'Craig',
-            last_name: 'David',
-            date: '2019-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 9,
-            first_name: 'Dave',
-            last_name: 'Copperfield',
-            date: '2020-12-06 14:38:38',
-            gender: 'Male'
-          },
-          {
-            id: 10,
-            first_name: 'Hilary',
-            last_name: 'Nelson',
-            date: '2021-12-06 14:38:38',
-            gender: 'Female'
-          }
-        ],
-        columns: [
-          {
-            field: 'id',
-            label: 'ID',
-            width: '40',
-            numeric: true
-          },
-          {
-            field: 'first_name',
-            label: 'First Name',
-            searchable: true,
-            sortable: true
-          },
-          {
-            field: 'last_name',
-            label: 'Last Name',
-            searchable: true
-          },
-          {
-            field: 'date',
-            label: 'Date',
-            sticky: true,
-            position: 'centered'
-          },
-          {
-            field: 'gender',
-            label: 'Gender'
-          },
-          {
-            field: 'id',
-            label: 'Column A'
-          },
-          {
-            field: 'id',
-            label: 'Column B'
-          },
-          {
-            field: 'id',
-            label: 'Column C'
-          },
-          {
-            field: 'id',
-            label: 'Column D'
-          },
-          {
-            field: 'id',
-            label: 'Column E'
-          },
-          {
-            field: 'id',
-            label: 'Column F'
-          },
-          {
-            field: 'id',
-            label: 'Column G'
-          },
-          {
-            field: 'id',
-            label: 'Column H'
-          },
-          {
-            field: 'id',
-            label: 'Column I'
-          },
-          {
-            field: 'id',
-            label: 'Column L'
-          },
-          {
-            field: 'id',
-            label: 'Column M'
-          },
-          {
-            field: 'id',
-            label: 'Column N'
-          },
-          {
-            field: 'id',
-            label: 'Column O'
-          }
-        ],
-        inspectData: [
-            {
-                class: "rootClass",
-                description: "Class of Table root element"
-            },
-            {
-                class: "tableClass",
-                description: "Class of the Table"
-            },
-            {
-                class: "borderedClass",
-                properties: ["bordered"],
-                description: "Class of the Table when is bordered",
-                action: (cmp) => {
-                    cmp.data.bordered = true;
-                }
-            },
-            {
-                class: "stripedClass",
-                properties: ["striped"],
-                description: "Class of the Table when rows are striped",
-                action: (cmp) => {
-                    cmp.data.striped = true;
-                }
-            },
-            {
-                class: "narrowedClass",
-                properties: ["narrowed"],
-                description: "Class of the Table when rows are narrowed",
-                action: (cmp) => {
-                    cmp.data.narrowed = true;
-                }
-            },
-            {
-                class: "hoverableClass",
-                properties: ["hoverable or focusable"],
-                description: "Class of the Table when is hoverable",
-                action: (cmp) => {
-                    cmp.data.hoverable = true;
-                }
-            },
-            {
-                class: "emptyClass",
-                description: "Class of the Table when is empty",
-                action: (cmp) => {
-                    cmp.data.isEmpty = true
-                }
-            },
-            {
-                class: "wrapperClass",
-                description: "Class of the Table wrapper"
-            },
-            {
-                class: "stickyHeaderClass",
-                properties: ["sticky-header"],
-                description: "Class of the Table wrapper when header is sticky",
-                action: (cmp) => {
-                    cmp.data.stickyHeader = true;
-                }
-            },
-            {
-                class: "scrollableClass",
-                properties: ["scrollable"],
-                description: "Class of the Table wrapper when its content is scrollable",
-                action: (cmp) => {
-                    cmp.data.scrollable = true;
-                }
-            },
-            {
-                class: "footerClass",
-                description: "Class of the Table footer",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                }
-            },
-            {
-                class: "thClass",
-                description: "Class of the Table `th` element"
-            },
-            {
-                class: "tdClass",
-                description: "Class of the Table `td` element"
-            },
-            {
-                class: "thCheckboxClass",
-                description: "Class of the Table `th` element when is checkable",
-                properties: ["checkable"],
-                action: (cmp) => {
-                    cmp.data.checkable = true
-                }
-            },
-            {
-                class: "thDetailedClass",
-                description: "Class of the Table `th` element of the detail column of triggers",
-                properties: ["detailed"],
-                action: (cmp) => {
-                    cmp.data.detailed = true;
-                }
-            },
-            {
-                class: "tdCheckboxClass",
-                description: "Class of the Table `td` element when is checkable",
-                properties: ["checkable"],
-                action: (cmp) => {
-                    cmp.data.checkable = true
-                }
-            },
-            {
-                class: "detailedClass",
-                description: "Class of the Table row detail",
-                properties: ["detailed"],
-                warning: "Expand details to see it in action!",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                    cmp.data.mobileCards = true;
-                }
-            },
-            {
-                class: "tdDetailedChevronClass",
-                properties: ["detailed"],
-                description: "Class of the Table `td` element that contains the chevron to trigger details",
-                action: (cmp) => {
-                    cmp.data.mobileCards = true;
-                }
-            },
-            {
-                class: "thCurrentSortClass",
-                description: "Class of the Table `th` element currently sorted",
-                warning: "Click on 'First Name' header to sort elements and see it in action!",
-            },
-            {
-                class: "thSortableClass",
-                description: "Class of the sortable Table `th` element",
-                properties: ['sortable']
-            },
-            {
-                class: "thUnselectableClass",
-                description: "Class of the Table `th` element that is unsortable",
-                properties: ["!headerSelectable and sortable"]
-            },
-            {
-                class: "thPositionClass",
-                description: "Class of the Table `th` element when component is positioned",
-                suffixes: ['left', 'centered', 'right'],
-                properties: ["position"]
-            },
-            {
-                class: "thStickyClass",
-                description: "Class of the Table `th` element when component is sticky",
-                properties: ['sticky']
-            },
-            {
-                class: "trSelectedClass",
-                description: "Class of the Table row when selected",
-                warning: "Select a row of the table to see it in action!",
-                action: (cmp) => {
-                    cmp.data.tableClass = 'inspector_table'
-                }
-            },
-            {
-                class: "trCheckedClass",
-                description: "Class of the Table row when checkable and checked",
-                warning: "Select a row of the table to see it in action!",
-                properties: ["checkable"],
-                action: (cmp) => {
-                    cmp.data.checkable = true
-                }
-            },
-            {
-                class: "thSortIconClass",
-                description: "Class of the Table sort icon in the header",
-                warning: "Click on 'First Name' header to sort elements and see it in action!",
-            },
-            {
-                class: "tdPositionClass",
-                description: "Class of the Table `td` element when component is positioned",
-                suffixes: ['left', 'centered', 'right'],
-                properties: ["position"]
-            },
-            {
-                class: "tdStickyClass",
-                description: "Class of the Table `td` element when component is sticky",
-                properties: ['sticky']
-            },
-            {
-                class: "mobileSortClass",
-                description: "Class of the sortable form wrapper on mobile",
-                warning: "Switch to mobile view to see it in action!",
-            },
-            {
-                class: "mobileClass",
-                description: "Class of the Table component when on mobile",
-                warning: "Switch to mobile view to see it in action!"
-            },
-            {
-                class: "paginationWrapperClass",
-                description: "Class of the Table pagination wrapper",
-                properties: ["paginated"],
-                action: (cmp) => {
-                    cmp.data.paginated = true
-                    cmp.data.paginationSimple = true
-                    cmp.data.perPage = 2
-                }
-            }
-        ],
-    };
-  },
-};
-</script>
-<style>
-.inspector_table {
-    border-collapse: collapse;
-}
-</style>
diff --git a/packages/oruga/src/components/table/Table.spec.js b/packages/oruga/src/components/table/Table.spec.js
deleted file mode 100644
index 878082412..000000000
--- a/packages/oruga/src/components/table/Table.spec.js
+++ /dev/null
@@ -1,240 +0,0 @@
-import Vue from 'vue'
-import { shallowMount } from '@vue/test-utils'
-import { useFakeTimers } from 'sinon'
-import OInput from '@components/input/Input'
-import OTable from '@components/table/Table'
-import { setVueInstance } from '../../utils/config'
-
-describe('OTable', () => {
-    setVueInstance(Vue)
-
-    let wrapper
-    beforeEach(() => {
-        wrapper = shallowMount(OTable)
-    })
-
-    const tableCols = shallowMount(OTable, {
-        propsData: {
-            columns: [
-                { label: 'default', width: '100px' },
-                { label: 'pecent', width: '50%' },
-                { label: 'fixed_num', width: 100 },
-                { label: 'fixed_str', width: '100' }
-            ]
-        }
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('has the filter row visible when searchable', () => {
-        wrapper.setProps({
-            columns: [
-                {
-                    field: 'id',
-                    label: 'ID',
-                    width: '40',
-                    numeric: true
-                }
-            ]
-        })
-        // Don't show if no searchable column
-        expect(wrapper.vm.hasSearchablenewColumns).toBe(false)
-        // Show if one or more searchable column
-        wrapper.setProps({
-            columns: [
-                {
-                    field: 'id',
-                    label: 'ID',
-                    width: '40',
-                    numeric: true,
-                    searchable: true
-                }
-            ]
-        })
-        expect(wrapper.vm.hasSearchablenewColumns).toBe(true)
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('holds columns', () => {
-        const headers = tableCols.findAll('th')
-
-        expect(headers.length).toBeGreaterThanOrEqual(4)
-
-        const cols = headers.filter((th) => {
-            return th.find('span')
-        })
-
-        expect(cols.length).toBe(4)
-        expect(cols.at(0).attributes('style')).toBe('width: 100px;')
-        expect(cols.at(1).attributes('style')).toBe('width: 50%;')
-        expect(cols.at(2).attributes('style')).toBe('width: 100px;')
-        expect(cols.at(3).attributes('style')).toBe('width: 100px;')
-    })
-
-    describe('Searchable', () => {
-        const data = [
-            { id: 1, name: 'Jesse' },
-            { id: 2, name: 'Joรฃo' },
-            { id: 3, name: 'Tina' },
-            { id: 4, name: 'Anne' },
-            { id: 5, name: 'Clarence' }
-        ]
-        let headRows
-        let bodyRows
-        let searchInput
-
-        beforeEach(() => {
-            wrapper = shallowMount(OTable, {
-                propsData: {
-                    columns: [
-                        { label: 'ID', field: 'id', numeric: true },
-                        { label: 'Name', field: 'name', searchable: true }
-                    ],
-                    data
-                }
-            })
-            headRows = wrapper.findAll('thead tr')
-            bodyRows = wrapper.findAll('tbody tr')
-            searchInput = wrapper.find(OInput)
-        })
-
-        it('displays filter row when at least one column is searchable', () => {
-            expect(headRows).toHaveLength(2)
-        })
-
-        it('displays filter input only on searchable columns', () => {
-            const filterCells = headRows.at(1).findAll('th')
-
-            expect(filterCells.at(0).isEmpty()).toBe(true) // ID column is not searchable
-            expect(filterCells.at(1).contains(OInput)).toBe(true) // Name column is searchable
-        })
-
-        it('displays all data', () => {
-            expect(bodyRows).toHaveLength(5)
-        })
-
-        it('displays filtered data when searching', async () => {
-            searchInput.vm.$emit('input', 'J')
-            await wrapper.vm.$nextTick()
-
-            bodyRows = wrapper.findAll('tbody tr')
-            expect(bodyRows).toHaveLength(2) // Jesse and Joรฃo
-        })
-
-        it('displays filtered data when searching and updating data', async () => {
-            searchInput.vm.$emit('input', 'J')
-            wrapper.setProps({
-                data: [
-                    ...data,
-                    { id: 6, name: 'Justin' }
-                ]
-            })
-            await wrapper.vm.$nextTick()
-
-            bodyRows = wrapper.findAll('tbody tr')
-            expect(bodyRows).toHaveLength(3) // Jesse, Joรฃo and Justin
-        })
-
-        it('displays filtered data when searching by name without accent', async () => {
-            searchInput.vm.$emit('input', 'Joao')
-            await wrapper.vm.$nextTick()
-            bodyRows = wrapper.findAll('tbody tr')
-            expect(bodyRows).toHaveLength(1) // Joรฃo
-        })
-
-        it('displays filtered data when searching by name with accent', async () => {
-            searchInput.vm.$emit('input', 'Joรฃo')
-            await wrapper.vm.$nextTick()
-            bodyRows = wrapper.findAll('tbody tr')
-            expect(bodyRows).toHaveLength(1) // Joรฃo
-        })
-
-        it('debounce search filtering when debounce-search is defined', () => {
-            const clock = useFakeTimers()
-            wrapper.setProps({
-                debounceSearch: 1000
-            })
-            for (let i = 0; i < 10; i++) {
-                searchInput.vm.$emit('input', 'J'.repeat(10 - i))
-                clock.tick(500)
-                bodyRows = wrapper.findAll('tbody tr')
-                expect(bodyRows).toHaveLength(5) // No filtering yet
-            }
-            clock.tick(1000)
-            bodyRows = wrapper.findAll('tbody tr')
-            expect(bodyRows).toHaveLength(5) // Filtering after debounce
-        })
-
-        it('tests checkRow method',()=>{
-            const shiftCheckRow = jest.spyOn(wrapper.vm,'shiftCheckRow')
-            const isRowChecked = jest.spyOn(wrapper.vm,'isRowChecked')
-            const removeCheckedRow = jest.spyOn(wrapper.vm,'removeCheckedRow')
-            const checkRow = jest.spyOn(wrapper.vm,'checkRow')
-            shiftCheckRow.mockImplementationOnce(()=>{})
-            isRowChecked.mockImplementationOnce(()=>false)
-            removeCheckedRow.mockImplementationOnce(()=>{})
-            const index = 0
-            let event = {
-                shiftKey:true
-            }
-            wrapper.vm.lastCheckedRowIndex = 1
-            const row = {
-                id: 1,
-                first_name: 'Jesse',
-                last_name: 'Simmons',
-                date: '2016-10-15 13:43:27',
-                gender: 'Male'
-              }
-            wrapper.vm.checkRow(row,index,event)
-            expect(checkRow).toHaveBeenCalledWith(row, 0, event)
-            expect(wrapper.emitted().check[0]).toEqual([[],row])
-            expect(wrapper.emitted()["update:checkedRows"][0]).toEqual([[]])
-            event = {
-                shiftKey:false
-            }
-            wrapper.vm.checkRow(row,index,event)
-            expect(checkRow).toHaveBeenCalledWith(row, 0, event)
-            expect(wrapper.emitted().check[0]).toEqual([[row],row])
-            expect(wrapper.emitted()["update:checkedRows"][0]).toEqual([[row]])
-            isRowChecked.mockImplementationOnce(()=>true)
-            wrapper.vm.checkRow(row,index,event)
-            expect(removeCheckedRow).toHaveBeenCalledWith(row)
-        })
-
-        it('tests isAllUncheckable method',async()=>{
-            await wrapper.setProps({
-                paginated:false,
-                data:[{
-                    id: 1,
-                    first_name: 'Jesse',
-                    last_name: 'Simmons',
-                    date: '2016-10-15 13:43:27',
-                    gender: 'Male'
-                  }]
-            })
-            const isRowCheckable = jest.spyOn(wrapper.vm,'isRowCheckable')
-            isRowCheckable.mockImplementationOnce(()=>true)
-            expect(wrapper.vm.isAllUncheckable).toEqual(false)
-        })
-
-        it('tests total watcher ',async()=>{
-            await wrapper.setProps({
-                backendPagination:true,
-                total:100
-            })
-            expect(wrapper.vm.newDataTotal).toEqual(100)
-        })
-
-        it('tests currentPage watcher ',async()=>{
-            await wrapper.setProps({
-                currentPage:5
-            })
-            expect(wrapper.vm.newCurrentPage).toEqual(5)
-        })
-    })
-})
diff --git a/packages/oruga/src/components/table/Table.vue b/packages/oruga/src/components/table/Table.vue
deleted file mode 100644
index e6fa79a21..000000000
--- a/packages/oruga/src/components/table/Table.vue
+++ /dev/null
@@ -1,1495 +0,0 @@
-<template>
-    <div :class="rootClasses">
-
-        <div ref="slot" style="display:none">
-            <slot />
-        </div>
-
-        <o-table-mobile-sort
-            v-if="isMobile && hasSortablenewColumns"
-            :current-sort-column="currentSortColumn"
-            :columns="newColumns"
-            :placeholder="mobileSortPlaceholder"
-            :icon-pack="iconPack"
-            :sort-icon="sortIcon"
-            :sort-icon-size="sortIconSize"
-            :is-asc="isAsc"
-            @sort="(column, event) => sort(column, null, event)"
-        />
-
-        <template v-if="paginated && (paginationPosition === 'top' || paginationPosition === 'both')">
-            <slot name="pagination">
-                <o-table-pagination
-                    v-bind="$attrs"
-                    :per-page="perPage"
-                    :paginated="paginated"
-                    :total="newDataTotal"
-                    :current-page="newCurrentPage"
-                    @update:currentPage="newCurrentPage = $event"
-                    :root-class="paginationWrapperClasses"
-                    :icon-pack="iconPack"
-                    :rounded="paginationRounded"
-                    :paginationSize="paginationSize"
-                    @page-change="(event) => $emit('page-change', event)"
-                    :aria-next-label="ariaNextLabel"
-                    :aria-previous-label="ariaPreviousLabel"
-                    :aria-page-label="ariaPageLabel"
-                    :aria-current-label="ariaCurrentLabel"
-                >
-                    <slot name="top-left"/>
-                </o-table-pagination>
-            </slot>
-        </template>
-
-        <div
-            :class="tableWrapperClasses"
-            :style="tableWrapperStyle">
-            <table
-                :class="tableClasses"
-                :tabindex="!focusable ? false : 0"
-                @keydown.self.prevent.up="pressedArrow(-1)"
-                @keydown.self.prevent.down="pressedArrow(1)">
-                <caption v-if="$slots.caption">
-                    <slot name="caption" />
-                </caption>
-                <thead v-if="newColumns.length && showHeader">
-                    <slot name="preheader" />
-                    <tr>
-                        <th v-if="showDetailRowIcon" :class="thDetailedClasses"/>
-                        <th :class="thCheckboxClasses" v-if="checkable && checkboxPosition === 'left'">
-                            <template v-if="headerCheckable">
-                                <o-checkbox
-                                    autocomplete="off"
-                                    :value="isAllChecked"
-                                    :disabled="isAllUncheckable"
-                                    @change.native="checkAll"/>
-                            </template>
-                        </th>
-                        <th
-                            v-for="(column, index) in visibleColumns"
-                            :key="column.newKey + ':' + index + 'header'"
-                            v-bind="column.thAttrs(column)"
-                            :class="thClasses(column)"
-                            :style="column.style"
-                            @click.stop="sort(column, null, $event)"
-                            :draggable="canDragColumn"
-                            @dragstart="handleColumnDragStart($event, column, index)"
-                            @dragend="handleColumnDragEnd($event, column, index)"
-                            @drop="handleColumnDrop($event, column, index)"
-                            @dragover="handleColumnDragOver($event, column, index)"
-                            @dragleave="handleColumnDragLeave($event, column, index)">
-
-                            <template v-if="column.hasHeaderSlot">
-                                <o-slot-component
-                                    :component="column"
-                                    scoped
-                                    name="header"
-                                    tag="span"
-                                    :props="{ column, index }"
-                                />
-                            </template>
-                            <template v-else>
-                                <span>
-                                    {{ column.label }}
-                                    <span
-                                        v-show="column.sortable && currentSortColumn === column"
-                                        :class="thSortIconClasses(column)">
-                                        <o-icon
-                                            :icon="sortIcon"
-                                            :pack="iconPack"
-                                            both
-                                            :size="sortIconSize"
-                                            :rotation="!isAsc ? 180 : 0" />
-                                    </span>
-                                </span>
-                            </template>
-                        </th>
-                        <th :class="thCheckboxClasses" v-if="checkable && checkboxPosition === 'right'">
-                            <template v-if="headerCheckable">
-                                <o-checkbox
-                                    autocomplete="off"
-                                    :value="isAllChecked"
-                                    :disabled="isAllUncheckable"
-                                    @change.native="checkAll"/>
-                            </template>
-                        </th>
-                    </tr>
-                    <tr v-if="hasSearchablenewColumns">
-                        <th v-if="showDetailRowIcon" :class="thDetailedClasses" />
-                        <th v-if="checkable && checkboxPosition === 'left'" />
-                        <th
-                            v-for="(column, index) in visibleColumns"
-                            :key="column.newKey + ':' + index + 'searchable'"
-                            v-bind="column.thAttrs(column)"
-                            :class="thClasses(column)"
-                            :style="column.style">
-                            <template v-if="column.searchable">
-                                <template v-if="column.hasSearchableSlot">
-                                    <o-slot-component
-                                        :component="column"
-                                        scoped
-                                        name="searchable"
-                                        tag="span"
-                                        :props="{ column, filters }"
-                                    />
-                                </template>
-                                <o-input
-                                    v-else
-                                    @[filtersEvent].native="onFiltersEvent"
-                                    v-model="filters[column.field]"
-                                    :type="column.numeric ? 'number' : 'text'" />
-                            </template>
-                        </th>
-                        <th v-if="checkable && checkboxPosition === 'right'" />
-                    </tr>
-                    <tr v-if="hasCustomSubheadings">
-                        <th v-if="showDetailRowIcon" :class="thDetailedClasses" />
-                        <th v-if="checkable && checkboxPosition === 'left'" />
-                        <th
-                            v-for="(column, index) in visibleColumns"
-                            :key="column.newKey + ':' + index + 'subheading'"
-                            :style="column.style"
-                            :class="thSubheadingClasses"
-                        >
-                            <template
-                                v-if="
-                                    column.$scopedSlots &&
-                                    column.$scopedSlots.subheading
-                                ">
-                                <o-slot-component
-                                    :component="column"
-                                    scoped
-                                    name="subheading"
-                                    tag="span"
-                                    :props="{ column, index }"
-                                />
-                            </template>
-                            <template v-else>{{ column.subheading }}</template>
-                        </th>
-                        <th v-if="checkable && checkboxPosition === 'right'" />
-                    </tr>
-                </thead>
-                <tbody>
-                    <template v-for="(row, index) in visibleData">
-                        <tr
-                            :key="customRowKey ? row[customRowKey] : index"
-                            :class="rowClasses(row, index)"
-                            @click="selectRow(row, index)"
-                            @dblclick="$emit('dblclick', row)"
-                            @mouseenter="emitEventForRow('mouseenter', $event, row)"
-                            @mouseleave="emitEventForRow('mouseleave', $event, row)"
-                            @contextmenu="$emit('contextmenu', row, $event)"
-                            :draggable="canDragRow"
-                            @dragstart="handleDragStart($event, row, index)"
-                            @dragend="handleDragEnd($event, row, index)"
-                            @drop="handleDrop($event, row, index)"
-                            @dragover="handleDragOver($event, row, index)"
-                            @dragleave="handleDragLeave($event, row, index)">
-
-                            <td
-                                v-if="showDetailRowIcon"
-                                :class="tdDetailedChevronClasses"
-                            >
-
-                                <o-icon
-                                    v-if="hasDetailedVisible(row)"
-                                    :icon="detailIcon"
-                                    :pack="iconPack"
-                                    :rotation="isVisibleDetailRow(row) ? 90 : 0"
-                                    role="button"
-                                    @click.native.stop="toggleDetails(row)"
-                                    clickable
-                                    both />
-                            </td>
-
-                            <td
-                                :class="tdCheckboxClasses"
-                                v-if="checkable && checkboxPosition === 'left'">
-                                <o-checkbox
-                                    autocomplete="off"
-                                    :disabled="!isRowCheckable(row)"
-                                    :value="isRowChecked(row)"
-                                    @input="checkRow(row, index, $event)"
-                                />
-                            </td>
-
-                            <template v-for="(column, colindex) in visibleColumns">
-
-                                <template v-if="column.hasDefaultSlot">
-                                    <o-slot-component
-                                        :key="column.newKey + index + ':' + colindex"
-                                        v-bind="column.tdAttrs(row, column)"
-                                        :component="column"
-                                        scoped
-                                        name="default"
-                                        tag="td"
-                                        :class="tdClasses(row, column)"
-                                        :data-label="column.label"
-                                        :props="{ row, column, index, colindex, toggleDetails }"
-                                        @click.native="$emit('cell-click', row, column, index, colindex, $event)"
-                                    />
-                                </template>
-
-                            </template>
-
-                            <td
-                                :class="tdCheckboxClasses"
-                                v-if="checkable && checkboxPosition === 'right'">
-                                <o-checkbox
-                                    autocomplete="off"
-                                    :disabled="!isRowCheckable(row)"
-                                    :value="isRowChecked(row)"
-                                    @input="checkRow(row, index, $event)"
-                                />
-                            </td>
-                        </tr>
-
-                        <transition
-                            :key="(customRowKey ? row[customRowKey] : index) + 'detail'"
-                            :name="detailTransition"
-                        >
-                            <tr
-                                v-if="isActiveDetailRow(row)"
-                                :class="detailedClasses">
-                                <td :colspan="columnCount">
-                                    <slot
-                                        name="detail"
-                                        :row="row"
-                                        :index="index"/>
-                                </td>
-                            </tr>
-                        </transition>
-                        <slot
-                            v-if="isActiveCustomDetailRow(row)"
-                            name="detail"
-                            :row="row"
-                            :index="index"
-                        />
-                    </template>
-
-                    <tr v-if="!visibleData.length">
-                        <td :colspan="columnCount">
-                            <slot name="empty"/>
-                        </td>
-                    </tr>
-
-                </tbody>
-
-                <tfoot v-if="$slots.footer">
-                    <tr :class="footerClasses">
-                        <slot name="footer" v-if="hasCustomFooterSlot()"/>
-                        <th :colspan="columnCount" v-else>
-                            <slot name="footer"/>
-                        </th>
-                    </tr>
-                </tfoot>
-            </table>
-
-            <slot name="loading">
-                <o-loading :full-page="false" :active="loading" />
-            </slot>
-        </div>
-        <template v-if="(checkable && $slots['bottom-left']) ||
-            (paginated && (paginationPosition === 'bottom' || paginationPosition === 'both'))">
-            <slot name="pagination">
-                <o-table-pagination
-                    v-bind="$attrs"
-                    :per-page="perPage"
-                    :paginated="paginated"
-                    :total="newDataTotal"
-                    :current-page="newCurrentPage"
-                    @update:currentPage="newCurrentPage = $event"
-                    :root-class="paginationWrapperClasses"
-                    :icon-pack="iconPack"
-                    :rounded="paginationRounded"
-                    :size="paginationSize"
-                    @page-change="(event) => $emit('page-change', event)"
-                    :aria-next-label="ariaNextLabel"
-                    :aria-previous-label="ariaPreviousLabel"
-                    :aria-page-label="ariaPageLabel"
-                    :aria-current-label="ariaCurrentLabel"
-                >
-                    <slot name="bottom-left"/>
-                </o-table-pagination>
-            </slot>
-        </template>
-
-    </div>
-</template>
-
-<script>
-import Button from '../button/Button'
-import Checkbox from '../checkbox/Checkbox'
-import Icon from '../icon/Icon'
-import Input from '../input/Input'
-import Loading from '../loading/Loading'
-import SlotComponent from '../../utils/SlotComponent'
-import TableMobileSort from './TableMobileSort'
-import TableColumn from './TableColumn'
-import TablePagination from './TablePagination'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import { getValueByPath, indexOf, toCssDimension, debounce, escapeRegExpChars, removeDiacriticsFromString } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-import { VueInstance } from '../../utils/config'
-
-
-/**
- * Tabulated data are sometimes needed, it's even better when it's responsive
- * @displayName Table
- * @requires ./TableColumn.vue
- * @example ./examples/Table.md
- * @style _table.scss
- */
-export default {
-    name: 'OTable',
-    components: {
-        [Button.name]: Button,
-        [Checkbox.name]: Checkbox,
-        [Icon.name]: Icon,
-        [Input.name]: Input,
-        [Loading.name]: Loading,
-        [SlotComponent.name]: SlotComponent,
-        [TableMobileSort.name]: TableMobileSort,
-        [TableColumn.name]: TableColumn,
-        [TablePagination.name]: TablePagination
-    },
-    mixins: [BaseComponentMixin, MatchMediaMixin],
-    configField: 'table',
-    inheritAttrs: false,
-    provide() {
-        return {
-            $table: this
-        }
-    },
-    mounted() {
-        this.refreshSlots()
-        this.checkSort()
-    },
-    props: {
-        /** Table data */
-        data: {
-            type: Array,
-            default: () => []
-        },
-        /** Table columns */
-        columns: {
-            type: Array,
-            default: () => []
-        },
-        /** Border to all cells */
-        bordered: Boolean,
-        /** Whether table is striped */
-        striped: Boolean,
-        /** Makes the cells narrower */
-        narrowed: Boolean,
-        /** Rows are highlighted when hovering */
-        hoverable: Boolean,
-        /** Loading state */
-        loading: Boolean,
-        /** Allow row details  */
-        detailed: Boolean,
-        /** Rows can be checked (multiple) */
-        checkable: Boolean,
-        /** Show check/uncheck all checkbox in table header when checkable */
-        headerCheckable: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Position of the checkbox (if checkable is true)
-         * @values left, right
-         */
-        checkboxPosition: {
-            type: String,
-            default: 'left',
-            validator: (value) => {
-                return [
-                    'left',
-                    'right'
-                ].indexOf(value) >= 0
-            }
-        },
-        /** Set which row is selected, use the .sync modifier (Vue 2.x) or v-model:selected (Vue 3.x) to make it two-way binding */
-        selected: Object,
-        /** Custom method to verify if a row is selectable, works when is selected. */
-        isRowSelectable: {
-            type: Function,
-            default: () => true
-        },
-        /** Table can be focused and user can navigate with keyboard arrows (require selected) and rows are highlighted when hovering */
-        focusable: Boolean,
-        /** Custom method to verify if row is checked, works when is checkable. Useful for backend pagination */
-        customIsChecked: Function,
-        /** Custom method to verify if a row is checkable, works when is checkable */
-        isRowCheckable: {
-            type: Function,
-            default: () => true
-        },
-        /** Set which rows are checked, use the .sync modifier (Vue 2.x) or v-model:checkedRows (Vue 3.x) to make it two-way binding */
-        checkedRows: {
-            type: Array,
-            default: () => []
-        },
-        /** Rows appears as cards on mobile (collapse rows) */
-        mobileCards: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'table.mobileCards', true)
-            }
-        },
-        /** Sets the default sort column and order โ€” e.g. ['first_name', 'desc']	 */
-        defaultSort: [String, Array],
-        /**
-         * Sets the default sort column direction on the first click
-         * @values asc, desc
-         */
-        defaultSortDirection: {
-            type: String,
-            default: 'asc'
-        },
-        /** Sets the header sorting icon */
-        sortIcon: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'table.sortIcon', 'arrow-up') }
-        },
-        /**
-         * Sets the size of the sorting icon
-         * @values small, medium, large
-         */
-        sortIconSize: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'table.sortIconSize', 'small') }
-        },
-        /** Adds pagination to the table */
-        paginated: Boolean,
-        /** Current page of table data (if paginated), use the .sync modifier (Vue 2.x) or v-model:currentPage (Vue 3.x) to make it two-way binding */
-        currentPage: {
-            type: Number,
-            default: 1
-        },
-        /** How many rows per page (if paginated) */
-        perPage: {
-            type: [Number, String],
-            default: () => { return getValueByPath(getOptions(), 'table.perPage', 20) }
-        },
-        /** Allow icon and column to be visible */
-        showDetailIcon: {
-            type: Boolean,
-            default: true
-        },
-        /** Icon name of detail action */
-        detailIcon: {
-            type: String,
-            default: 'chevron-right'
-        },
-        /**
-         * Pagination position (if paginated)
-         * @values bottom, top, bot
-         */
-        paginationPosition: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'table.paginationPosition', 'bottom') },
-            validator: (value) => {
-                return [
-                    'bottom',
-                    'top',
-                    'both'
-                ].indexOf(value) >= 0
-            }
-        },
-        /** Columns won't be sorted with Javascript, use with sort event to sort in your backend */
-        backendSorting: Boolean,
-        /** Columns won't be filtered with Javascript, use with searchable prop to the columns to filter in your backend */
-        backendFiltering: Boolean,
-        /** Add a class to row based on the return */
-        rowClass: {
-            type: Function,
-            default: () => ''
-        },
-        /** Allow pre-defined opened details. Ideal to open details via vue-router. (A unique key is required; check detail-key prop) */
-        openedDetailed: {
-            type: Array,
-            default: () => []
-        },
-        /** Controls the visibility of the trigger that toggles the detailed rows. */
-        hasDetailedVisible: {
-            type: Function,
-            default: () => true
-        },
-        /** Use a unique key of your data Object when use detailed or opened detailed. (id recommended) */
-        detailKey: {
-            type: String,
-            default: ''
-        },
-        /** Custom style on details */
-        customDetailRow: {
-            type: Boolean,
-            default: false
-        },
-        /* Transition name to use when toggling row details. */
-        detailTransition: {
-            type: String,
-            default: ''
-        },
-        /** Rows won't be paginated with Javascript, use with page-change event to paginate in your backend */
-        backendPagination: Boolean,
-        /** Total number of table data if backend-pagination is enabled */
-        total: {
-            type: [Number, String],
-            default: 0
-        },
-        /** Icon pack to use */
-        iconPack: String,
-        /** Text when nothing is selected */
-        mobileSortPlaceholder: String,
-        /** Use a unique key of your data Object for each row. Useful if your data prop has dynamic indices. (id recommended) */
-        customRowKey: String,
-        /** Allows rows to be draggable */
-        draggable: {
-            type: Boolean,
-            default: false
-        },
-        /** Allows columns to be draggable */
-        draggableColumn: {
-            type: Boolean,
-            default: false
-        },
-        /** Add a horizontal scrollbar when table is too wide */
-        scrollable: Boolean,
-        ariaNextLabel: String,
-        ariaPreviousLabel: String,
-        ariaPageLabel: String,
-        ariaCurrentLabel: String,
-        /** Show a sticky table header */
-        stickyHeader: Boolean,
-        /** Table fixed height */
-        height: [Number, String],
-        /** Add a native event to filter */
-        filtersEvent: {
-            type: String,
-            default: ''
-        },
-        /** Filtering debounce time (in milliseconds) */
-        debounceSearch: Number,
-        /** Show header */
-        showHeader: {
-            type: Boolean,
-            default: () => { return getValueByPath(getOptions(), 'table.showHeader', true) }
-        },
-        /** Make the checkbox column sticky when checkable */
-        stickyCheckbox: {
-            type: Boolean,
-            default: false
-        },
-        /** Rounded pagination if paginated */
-        paginationRounded: Boolean,
-        /** Size of pagination if paginated */
-        paginationSize: {
-          type: String,
-          default: () => { return getValueByPath(getOptions(), 'table.paginationSize', 'small') }
-        },
-        rootClass: [String, Function, Array],
-        tableClass: [String, Function, Array],
-        wrapperClass: [String, Function, Array],
-        footerClass: [String, Function, Array],
-        emptyClass: [String, Function, Array],
-        detailedClass: [String, Function, Array],
-        borderedClass: [String, Function, Array],
-        stripedClass: [String, Function, Array],
-        narrowedClass: [String, Function, Array],
-        hoverableClass: [String, Function, Array],
-        thClass: [String, Function, Array],
-        tdClass: [String, Function, Array],
-        thPositionClass: [String, Function, Array],
-        thStickyClass: [String, Function, Array],
-        thCheckboxClass: [String, Function, Array],
-        thCurrentSortClass: [String, Function, Array],
-        thSortableClass: [String, Function, Array],
-        thUnselectableClass: [String, Function, Array],
-        thSortIconClass: [String, Function, Array],
-        thDetailedClass: [String, Function, Array],
-        tdPositionClass: [String, Function, Array],
-        tdStickyClass: [String, Function, Array],
-        tdCheckboxClass: [String, Function, Array],
-        tdDetailedChevronClass: [String, Function, Array],
-        trSelectedClass: [String, Function, Array],
-        trCheckedClass: [String, Function, Array],
-        stickyHeaderClass: [String, Function, Array],
-        scrollableClass: [String, Function, Array],
-        mobileSortClass: [String, Function, Array],
-        paginationWrapperClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        thSubheadingClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            visibleDetailRows: this.openedDetailed,
-            newData: this.data,
-            newDataTotal: this.backendPagination ? this.total : this.data.length,
-            newCheckedRows: [...this.checkedRows],
-            lastCheckedRowIndex: null,
-            newCurrentPage: this.currentPage,
-            currentSortColumn: {},
-            isAsc: true,
-            filters: {},
-            defaultSlots: [],
-            firstTimeSort: true,
-            sequence: 1,
-            isDraggingRow: false,
-            isDraggingColumn: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-table__root'),
-                { [this.computedClass('mobileClass', 'o-table__wrapper--mobile')]: this.isMobile }
-            ]
-        },
-        tableClasses() {
-            return [
-                this.computedClass('tableClass', 'o-table'),
-                { [this.computedClass('borderedClass', 'o-table--bordered')]: this.bordered },
-                { [this.computedClass('stripedClass', 'o-table--striped')]: this.striped },
-                { [this.computedClass('narrowedClass', 'o-table--narrowed')]: this.narrowed },
-                { [this.computedClass('hoverableClass', 'o-table--hoverable')]: ((this.hoverable || this.focusable) && this.visibleData.length) },
-                { [this.computedClass('emptyClass', 'o-table--table__empty')]: !this.visibleData.length }
-            ]
-        },
-        tableWrapperClasses() {
-            return [
-                this.computedClass('wrapperClass', 'o-table__wrapper'),
-                { [this.computedClass('stickyHeaderClass', 'o-table__wrapper--sticky-header')]: this.stickyHeader },
-                { [this.computedClass('scrollableClass', 'o-table__wrapper--scrollable')]: this.isScrollable }
-            ]
-        },
-        footerClasses() {
-            return [
-                this.computedClass('footerClass', 'o-table__footer')
-            ]
-        },
-        thBaseClasses() {
-            return [
-                this.computedClass('thClass', 'o-table__th')
-            ]
-        },
-        tdBaseClasses() {
-            return [
-                this.computedClass('tdClass', 'o-table__td')
-            ]
-        },
-        thCheckboxClasses() {
-            return [
-                ...this.thBaseClasses,
-                this.computedClass('thCheckboxClass', 'o-table__th-checkbox')
-            ]
-        },
-        thDetailedClasses() {
-            return [
-                 ...this.thBaseClasses,
-                this.computedClass('thDetailedClass', 'o-table__th--detailed')
-            ]
-        },
-        thSubheadingClasses() {
-            return [
-                ...this.thBaseClasses,
-                this.computedClass('thSubheadingClass', 'o-table__th')
-            ];
-        },
-        tdCheckboxClasses() {
-            return [
-                ...this.tdBaseClasses,
-                this.computedClass('tdCheckboxClass', 'o-table__td-checkbox'),
-                ...this.thStickyClasses({ sticky: this.stickyCheckbox })
-            ]
-        },
-        detailedClasses() {
-            return [
-                this.computedClass('detailedClass', 'o-table__detail')
-            ]
-        },
-        tdDetailedChevronClasses() {
-            return [
-                ...this.tdBaseClasses,
-                this.computedClass('tdDetailedChevronClass', 'o-table__td-chevron')
-            ]
-        },
-        mobileSortClasses() {
-            return [
-                this.computedClass('mobileSortClass', 'o-table__mobile-sort')
-            ]
-        },
-        paginationWrapperClasses() {
-            return [
-                this.computedClass('paginationWrapperClass', 'o-table__pagination')
-            ]
-        },
-        tableWrapperStyle() {
-            return {
-                height: toCssDimension(this.height)
-            }
-        },
-        /**
-        * Splitted data based on the pagination.
-        */
-        visibleData() {
-            if (!this.paginated) return this.newData
-
-            const currentPage = this.newCurrentPage
-            const perPage = this.perPage
-
-            if (this.newData.length <= perPage) {
-                return this.newData
-            } else {
-                const start = (currentPage - 1) * perPage
-                const end = parseInt(start, 10) + parseInt(perPage, 10)
-                return this.newData.slice(start, end)
-            }
-        },
-
-        visibleColumns() {
-            if (!this.newColumns) return this.newColumns
-            return this.newColumns.filter((column) => {
-                return column.visible || column.visible === undefined
-            })
-        },
-
-        /**
-        * Check if all rows in the page are checked.
-        */
-        isAllChecked() {
-            const validVisibleData = this.visibleData.filter(
-                (row) => this.isRowCheckable(row))
-            if (validVisibleData.length === 0) return false
-            const isAllChecked = validVisibleData.some((currentVisibleRow) => {
-                return indexOf(this.newCheckedRows, currentVisibleRow, this.customIsChecked) < 0
-            })
-            return !isAllChecked
-        },
-
-        /**
-        * Check if all rows in the page are checkable.
-        */
-        isAllUncheckable() {
-            const validVisibleData = this.visibleData.filter(
-                (row) => this.isRowCheckable(row))
-            return validVisibleData.length === 0
-        },
-
-        /**
-        * Check if has any sortable column.
-        */
-        hasSortablenewColumns() {
-            return this.newColumns.some((column) => {
-                return column.sortable
-            })
-        },
-
-        /**
-        * Check if has any searchable column.
-        */
-        hasSearchablenewColumns() {
-            return this.newColumns.some((column) => {
-                return column.searchable
-            })
-        },
-
-        /**
-        * Return total column count based if it's checkable or expanded
-        */
-        columnCount() {
-            let count = this.visibleColumns.length
-            count += this.checkable ? 1 : 0
-            count += (this.detailed && this.showDetailIcon) ? 1 : 0
-
-            return count
-        },
-
-        /**
-        * return if detailed row tabled
-        * will be with chevron column & icon or not
-        */
-        showDetailRowIcon() {
-            return this.detailed && this.showDetailIcon
-        },
-
-        /**
-        * return if scrollable table
-        */
-        isScrollable() {
-            if (this.scrollable) return true
-            if (!this.newColumns) return false
-            return this.newColumns.some((column) => {
-                return column.sticky
-            })
-        },
-
-        newColumns() {
-            if (this.columns && this.columns.length) {
-                return this.columns.map((column) => {
-                    const TableColumnComponent = VueInstance.extend(TableColumn)
-                    const component = new TableColumnComponent(
-                        { parent: this, propsData: column }
-                    )
-                    component.$scopedSlots = {
-                        'default': (props) => {
-                            const vnode = component.$createElement(
-                                'span',
-                                { domProps: { innerHTML: getValueByPath(props.row, column.field) } }
-                            )
-                            return [vnode]
-                        }
-                    }
-                    return component
-                })
-            }
-            return this.defaultSlots
-                .filter((vnode) =>
-                    vnode.componentInstance &&
-                    vnode.componentInstance.$data &&
-                    vnode.componentInstance.$data._isTableColumn)
-                .map((vnode) => vnode.componentInstance)
-        },
-
-        isMobile() {
-            return this.mobileCards && this.isMatchMedia
-        },
-
-        hasCustomSubheadings() {
-            if (this.$scopedSlots && this.$scopedSlots.subheading) return true
-            return this.newColumns.some((column) => {
-                return column.subheading || (column.$scopedSlots && column.$scopedSlots.subheading)
-            })
-        },
-
-        canDragRow() {
-            return this.draggable && !this.isDraggingColumn
-        },
-        canDragColumn() {
-            return this.draggableColumn && !this.isDraggingRow
-        }
-    },
-    watch: {
-        /**
-        * When data prop change:
-        *   1. Update internal value.
-        *   2. Filter data if it's not backend-filtered.
-        *   3. Sort again if it's not backend-sorted.
-        *   4. Set new total if it's not backend-paginated.
-        */
-        data(value) {
-            this.newData = value
-            if (!this.backendFiltering) {
-                this.newData = value.filter((row) => this.isRowFiltered(row))
-            }
-            if (!this.backendSorting) {
-                this.sort(this.currentSortColumn, true)
-            }
-            if (!this.backendPagination) {
-                this.newDataTotal = this.newData.length
-            }
-        },
-
-        /**
-        * When Pagination total change, update internal total
-        * only if it's backend-paginated.
-        */
-        total(newTotal) {
-            if (!this.backendPagination) return
-
-            this.newDataTotal = newTotal
-        },
-
-        currentPage(newValue) {
-            this.newCurrentPage = newValue
-        },
-
-        /**
-        * When checkedRows prop change, update internal value without
-        * mutating original data.
-        */
-        checkedRows(rows) {
-            this.newCheckedRows = [...rows]
-        },
-
-        debounceSearch: {
-            handler(value) {
-                this.debouncedHandleFiltersChange = debounce(this.handleFiltersChange, value)
-            },
-            immediate: true
-        },
-
-        filters: {
-            handler(value) {
-                if (this.debounceSearch) {
-                    this.debouncedHandleFiltersChange(value)
-                } else {
-                    this.handleFiltersChange(value)
-                }
-            },
-            deep: true
-        },
-
-        /**
-        * When the user wants to control the detailed rows via props.
-        * Or wants to open the details of certain row with the router for example.
-        */
-        openedDetailed(expandedRows) {
-            this.visibleDetailRows = expandedRows
-        },
-
-        newCurrentPage(newVal) {
-            this.$emit('update:currentPage', newVal)
-        }
-    },
-    methods: {
-        refreshSlots() {
-            this.defaultSlots = this.$slots.default || []
-        },
-        thClasses(column) {
-            return [
-                ...this.thBaseClasses,
-                ...this.thStickyClasses(column),
-                getValueByPath(column.thAttrs(column), 'class'),
-                { [this.computedClass('thCurrentSortClass', 'o-table__th-current-sort')]: (this.currentSortColumn === column) },
-                { [this.computedClass('thSortableClass', 'o-table__th--sortable')]: column.sortable },
-                { [this.computedClass('thUnselectableClass', 'o-table__th--unselectable')]: column.isHeaderUnselectable },
-                { [this.computedClass('thPositionClass', 'o-table__th--', column.position)]: column.position },
-            ]
-        },
-        thStickyClasses(column) {
-            return [
-                { [this.computedClass('thStickyClass', 'o-table__th--sticky')]: column.sticky }
-            ]
-        },
-        rowClasses(row, index) {
-            return [
-                this.rowClass(row, index),
-                { [this.computedClass('trSelectedClass', 'o-table__tr--selected')]: this.isRowSelected(row, this.selected) },
-                { [this.computedClass('trCheckedClass', 'o-table__tr--checked')]: this.isRowChecked(row) }
-            ]
-        },
-        thSortIconClasses() {
-            return [
-                this.computedClass('thSortIconClass', 'o-table__th__sort-icon'),
-            ]
-        },
-        tdClasses(row, column) {
-            return [
-                ...this.tdBaseClasses,
-                getValueByPath(column.tdAttrs(row, column), 'class'),
-                { [this.computedClass('tdPositionClass', 'o-table__td--', column.position)]: column.position },
-                { [this.computedClass('tdStickyClass', 'o-table__td--sticky')]: column.sticky }
-            ]
-        },
-        onFiltersEvent(event) {
-            this.$emit(`filters-event-${this.filtersEvent}`, { event, filters: this.filters })
-        },
-        handleFiltersChange(value) {
-            if (this.backendFiltering) {
-                this.$emit('filters-change', value)
-            } else {
-                this.newData = this.data.filter((row) => this.isRowFiltered(row))
-                if (!this.backendPagination) {
-                    this.newDataTotal = this.newData.length
-                }
-                if (!this.backendSorting) {
-                    if (Object.keys(this.currentSortColumn).length > 0) {
-                        this.doSortSingleColumn(this.currentSortColumn)
-                    }
-                }
-            }
-        },
-
-        /**
-        * Sort an array by key without mutating original data.
-        * Call the user sort function if it was passed.
-        */
-        sortBy(array, key, fn, isAsc) {
-            let sorted = []
-            // Sorting without mutating original data
-            if (fn && typeof fn === 'function') {
-                sorted = [...array].sort((a, b) => fn(a, b, isAsc))
-            } else {
-                sorted = [...array].sort((a, b) => {
-                    // Get nested values from objects
-                    let newA = getValueByPath(a, key)
-                    let newB = getValueByPath(b, key)
-
-                    // sort boolean type
-                    if (typeof newA === 'boolean' && typeof newB === 'boolean') {
-                        return isAsc ? newA - newB : newB - newA
-                    }
-
-                    if (!newA && newA !== 0) return 1
-                    if (!newB && newB !== 0) return -1
-                    if (newA === newB) return 0
-
-                    newA = (typeof newA === 'string')
-                        ? newA.toUpperCase()
-                        : newA
-                    newB = (typeof newB === 'string')
-                        ? newB.toUpperCase()
-                        : newB
-
-                    return isAsc
-                        ? newA > newB ? 1 : -1
-                        : newA > newB ? -1 : 1
-                })
-            }
-
-            return sorted
-        },
-
-        /**
-        * Sort the column.
-        * Toggle current direction on column if it's sortable
-        * and not just updating the prop.
-        */
-        sort(column, updatingData = false, event = null) {
-            if (!column || !column.sortable) return
-
-            if (!updatingData) {
-                this.isAsc = column === this.currentSortColumn
-                    ? !this.isAsc
-                    : (this.defaultSortDirection.toLowerCase() !== 'desc')
-            }
-            if (!this.firstTimeSort) {
-                /**
-                 * @property {string} field column field
-                 * @property {boolean} direction 'asc' or 'desc'
-                 * @property {Event} event native event
-                */
-                this.$emit('sort', column.field, this.isAsc ? 'asc' : 'desc', event)
-            }
-            if (!this.backendSorting) {
-                this.doSortSingleColumn(column)
-            }
-            this.currentSortColumn = column
-        },
-
-        doSortSingleColumn(column) {
-            this.newData = this.sortBy(
-                this.newData,
-                column.field,
-                column.customSort,
-                this.isAsc
-            )
-        },
-
-        isRowSelected(row, selected) {
-            if (!selected) {
-                return false
-            }
-            if (this.customRowKey) {
-                return row[this.customRowKey] === selected[this.customRowKey]
-            }
-            return row === selected
-        },
-
-        /**
-        * Check if the row is checked (is added to the array).
-        */
-        isRowChecked(row) {
-            return indexOf(this.newCheckedRows, row, this.customIsChecked) >= 0
-        },
-
-        /**
-        * Remove a checked row from the array.
-        */
-        removeCheckedRow(row) {
-            const index = indexOf(this.newCheckedRows, row, this.customIsChecked)
-            if (index >= 0) {
-                this.newCheckedRows.splice(index, 1)
-            }
-        },
-
-        /**
-        * Header checkbox click listener.
-        * Add or remove all rows in current page.
-        */
-        checkAll() {
-            const isAllChecked = this.isAllChecked
-            this.visibleData.forEach((currentRow) => {
-                if (this.isRowCheckable(currentRow)) {
-                    this.removeCheckedRow(currentRow)
-                }
-                if (!isAllChecked) {
-                    if (this.isRowCheckable(currentRow)) {
-                        this.newCheckedRows.push(currentRow)
-                    }
-                }
-            })
-            /**
-             * @property {Array<Object>} newCheckedRows checked rows
-             */
-            this.$emit('check', this.newCheckedRows)
-            this.$emit('check-all', this.newCheckedRows)
-
-            // Emit checked rows to update user variable
-            this.$emit('update:checkedRows', this.newCheckedRows)
-        },
-
-        /**
-        * Row checkbox click listener.
-        */
-        checkRow(row, index, event) {
-            if (!this.isRowCheckable(row)) return
-            const lastIndex = this.lastCheckedRowIndex
-            this.lastCheckedRowIndex = index
-
-            if (event.shiftKey && lastIndex !== null && index !== lastIndex) {
-                this.shiftCheckRow(row, index, lastIndex)
-            } else if (!this.isRowChecked(row)) {
-                this.newCheckedRows.push(row)
-            } else {
-                this.removeCheckedRow(row)
-            }
-
-            this.$emit('check', this.newCheckedRows, row)
-
-            // Emit checked rows to update user variable
-            this.$emit('update:checkedRows', this.newCheckedRows)
-        },
-
-        /**
-         * Check row when shift is pressed.
-         */
-        shiftCheckRow(row, index, lastCheckedRowIndex) {
-            // Get the subset of the list between the two indicies
-            const subset = this.visibleData.slice(
-                Math.min(index, lastCheckedRowIndex),
-                Math.max(index, lastCheckedRowIndex) + 1
-            )
-
-            // Determine the operation based on the state of the clicked checkbox
-            const shouldCheck = !this.isRowChecked(row)
-
-            subset.forEach((item) => {
-                this.removeCheckedRow(item)
-                if (shouldCheck && this.isRowCheckable(item)) {
-                    this.newCheckedRows.push(item)
-                }
-            })
-        },
-
-        /**
-        * Row click listener.
-        * Emit all necessary events.
-        */
-        selectRow(row, index) {
-            /**
-             * @property {Object} row clicked row
-             * @property {number} index index of clicked row
-             */
-            this.$emit('click', row, index)
-
-            if (this.selected === row) return
-            if (!this.isRowSelectable(row)) return
-
-            // Emit new and old row
-            /**
-             * @property {Object} row selected row
-             * @property {Array<Object>} selected selected rows
-             */
-            this.$emit('select', row, this.selected)
-
-            // Emit new row to update user variable
-            this.$emit('update:selected', row)
-        },
-
-        /**
-        * Toggle to show/hide details slot
-        */
-        toggleDetails(obj) {
-            const found = this.isVisibleDetailRow(obj)
-
-            if (found) {
-                this.closeDetailRow(obj)
-                this.$emit('details-close', obj)
-            } else {
-                this.openDetailRow(obj)
-                this.$emit('details-open', obj)
-            }
-
-            // Syncs the detailed rows with the parent component
-            this.$emit('update:openedDetailed', this.visibleDetailRows)
-        },
-
-        openDetailRow(obj) {
-            const index = this.handleDetailKey(obj)
-            this.visibleDetailRows.push(index)
-        },
-
-        closeDetailRow(obj) {
-            const index = this.handleDetailKey(obj)
-            const i = this.visibleDetailRows.indexOf(index)
-            if (i >= 0) {
-                this.visibleDetailRows.splice(i, 1)
-            }
-        },
-
-        isVisibleDetailRow(obj) {
-            const index = this.handleDetailKey(obj)
-            return this.visibleDetailRows.indexOf(index) >= 0
-        },
-
-        isActiveDetailRow(row) {
-            return this.detailed && !this.customDetailRow && this.isVisibleDetailRow(row)
-        },
-
-        isActiveCustomDetailRow(row) {
-            return this.detailed && this.customDetailRow && this.isVisibleDetailRow(row)
-        },
-
-        isRowFiltered(row) {
-            for (const key in this.filters) {
-                if (!this.filters[key]) continue
-                const input = this.filters[key]
-                const column = this.newColumns.filter((c) => c.field === key)[0]
-                if (column && column.customSearch && typeof column.customSearch === 'function') {
-                    if (!column.customSearch(row, input)) return false
-                } else {
-                    const value = getValueByPath(row, key)
-                    if (value == null) return false
-                    if (Number.isInteger(value)) {
-                        if (value !== Number(input)) return false
-                    } else {
-                        const re = new RegExp(escapeRegExpChars(input), 'i')
-                        if (Array.isArray(value)) {
-                            const valid = value.some((val) =>
-                                re.test(removeDiacriticsFromString(val)) || re.test(val)
-                            )
-                            if (!valid) return false
-                        } else {
-                            if (!re.test(removeDiacriticsFromString(value)) && !re.test(value)) {
-                                return false
-                            }
-                        }
-                    }
-                }
-            }
-            return true
-        },
-
-        /**
-        * When the detailKey is defined we use the object[detailKey] as index.
-        * If not, use the object reference by default.
-        */
-        handleDetailKey(index) {
-            const key = this.detailKey
-            return !key.length || !index
-                ? index
-                : index[key]
-        },
-
-        /**
-        * Call initSort only first time (For example async data).
-        */
-        checkSort() {
-            if (this.newColumns.length && this.firstTimeSort) {
-                this.initSort()
-                this.firstTimeSort = false
-            } else if (this.newColumns.length) {
-                if (Object.keys(this.currentSortColumn).length > 0) {
-                    for (let i = 0; i < this.newColumns.length; i++) {
-                        if (this.newColumns[i].field === this.currentSortColumn.field) {
-                            this.currentSortColumn = this.newColumns[i]
-                            break
-                        }
-                    }
-                }
-            }
-        },
-
-        /**
-        * Check if footer slot has custom content.
-        */
-        hasCustomFooterSlot() {
-            const footer = this.$slots.footer
-            if (footer.length > 1) return true
-
-            const tag = footer[0].tag
-            if (tag !== 'th' && tag !== 'td') return false
-
-            return true
-        },
-
-        /**
-        * Table arrow keys listener, change selection.
-        */
-        pressedArrow(pos) {
-            if (!this.visibleData.length) return
-
-            let index = this.visibleData.indexOf(this.selected) + pos
-
-            // Prevent from going up from first and down from last
-            index = index < 0
-                ? 0
-                : index > this.visibleData.length - 1
-                    ? this.visibleData.length - 1
-                    : index
-
-            const row = this.visibleData[index]
-
-            if (!this.isRowSelectable(row)) {
-                let newIndex = null
-                if (pos > 0) {
-                    for (let i = index; i < this.visibleData.length && newIndex === null; i++) {
-                        if (this.isRowSelectable(this.visibleData[i])) newIndex = i
-                    }
-                } else {
-                    for (let i = index; i >= 0 && newIndex === null; i--) {
-                        if (this.isRowSelectable(this.visibleData[i])) newIndex = i
-                    }
-                }
-                if (newIndex >= 0) {
-                    this.selectRow(this.visibleData[newIndex])
-                }
-            } else {
-                this.selectRow(row)
-            }
-        },
-
-        /**
-        * Focus table element if has selected prop.
-        */
-        focus() {
-            if (!this.focusable) return
-
-            this.$el.querySelector('table').focus()
-        },
-
-        /**
-        * Initial sorted column based on the default-sort prop.
-        */
-        initSort() {
-            if (!this.defaultSort) return
-            let sortField = ''
-            let sortDirection = this.defaultSortDirection
-            if (Array.isArray(this.defaultSort)) {
-                sortField = this.defaultSort[0]
-                if (this.defaultSort[1]) {
-                    sortDirection = this.defaultSort[1]
-                }
-            } else {
-                sortField = this.defaultSort
-            }
-            const sortColumn = this.newColumns.filter(
-                (column) => (column.field === sortField))[0]
-            if (sortColumn) {
-                this.isAsc = sortDirection.toLowerCase() !== 'desc'
-                this.sort(sortColumn, true)
-            }
-        },
-        /**
-        * Emits drag start event
-        */
-        handleDragStart(event, row, index) {
-            if (!this.draggable) return
-            this.$emit('dragstart', {event, row, index})
-        },
-        /**
-        * Emits drag leave event
-        */
-        handleDragEnd(event, row, index) {
-            if (!this.draggable) return
-            this.$emit('dragend', {event, row, index})
-        },
-        /**
-        * Emits drop event
-        */
-        handleDrop(event, row, index) {
-            if (!this.draggable) return
-            this.$emit('drop', {event, row, index})
-        },
-        /**
-        * Emits drag over event
-        */
-        handleDragOver(event, row, index) {
-            if (!this.draggable) return
-            this.$emit('dragover', {event, row, index})
-        },
-        /**
-        * Emits drag leave event
-        */
-        handleDragLeave(event, row, index) {
-            if (!this.draggable) return
-            this.$emit('dragleave', {event, row, index})
-        },
-
-        /**
-        * Emits drag start event (column)
-        */
-        handleColumnDragStart(event, column, index) {
-            if (!this.canDragColumn) return
-            this.isDraggingColumn = true
-            this.$emit('columndragstart', {event, column, index})
-        },
-
-        /**
-        * Emits drag leave event (column)
-        */
-        handleColumnDragEnd(event, column, index) {
-            if (!this.canDragColumn) return
-            this.isDraggingColumn = false
-            this.$emit('columndragend', {event, column, index})
-        },
-
-        /**
-        * Emits drop event (column)
-        */
-        handleColumnDrop(event, column, index) {
-            if (!this.canDragColumn) return
-            this.$emit('columndrop', {event, column, index})
-        },
-
-        /**
-        * Emits drag over event (column)
-        */
-        handleColumnDragOver(event, column, index) {
-            if (!this.canDragColumn) return
-            this.$emit('columndragover', {event, column, index})
-        },
-
-        /**
-        * Emits drag leave event (column)
-        */
-        handleColumnDragLeave(event, column, index) {
-            if (!this.canDragColumn) return
-            this.$emit('columndragleave', {event, column, index})
-        },
-
-        emitEventForRow(eventName, event, row) {
-            return this.$listeners[eventName] ? this.$emit(eventName, row, event) : null
-        },
-
-        _addColumn(column) {
-            this.defaultSlots.push(column)
-            const slot = this.$refs['slot']
-            if (slot && slot.children) {
-                this.$nextTick(() => {
-                    const ids = this.defaultSlots.map(it => `[data-id="${it.newKey}"]`).join(',')
-                    const sortedIds = Array.from(slot.querySelectorAll(ids)).map(
-                        (el) => el.getAttribute('data-id'))
-                    this.defaultSlots = this.defaultSlots.sort((a, b) =>
-                        sortedIds.indexOf(`${a.newKey}`) - sortedIds.indexOf(`${b.newKey}`) )
-                })
-            }
-        },
-
-        _removeColumn(column) {
-            this.$nextTick(() => {
-                this.defaultSlots = this.defaultSlots.filter(d => d.newKey !== column.newKey)
-            })
-        },
-
-        _nextSequence() {
-            return this.sequence++
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/table/TableColumn.spec.js b/packages/oruga/src/components/table/TableColumn.spec.js
deleted file mode 100644
index 23c6c1bea..000000000
--- a/packages/oruga/src/components/table/TableColumn.spec.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OTable from '@components/table/Table'
-import OTableColumn from '@components/table/TableColumn'
-
-let wrapper
-let wrapperParent
-
-describe('OTableColumn', () => {
-    beforeEach(() => {
-        wrapperParent = mount(OTable, {
-            sync: false,
-        })
-        wrapper = mount(OTableColumn, {
-            provide: {
-                $table: wrapperParent.vm
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-})
diff --git a/packages/oruga/src/components/table/TableColumn.vue b/packages/oruga/src/components/table/TableColumn.vue
deleted file mode 100644
index a97a901b8..000000000
--- a/packages/oruga/src/components/table/TableColumn.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-<script>
-import { toCssDimension } from '../../utils/helpers'
-
-/**
- * @displayName Table Column
- */
-export default {
-    name: 'OTableColumn',
-    inject: ['$table'],
-    props: {
-        label: String,
-        customKey: [String, Number],
-        field: String,
-        meta: [String, Number, Boolean, Function, Object, Array],
-        width: [Number, String],
-        numeric: Boolean,
-        /**
-         * Optional, position of column content
-         * @values centered, right
-         */
-        position: {
-            type: String,
-            validator(value) {
-                return [
-                    'left',
-                    'centered',
-                    'right'
-                ].indexOf(value) > -1
-            }
-        },
-        searchable: Boolean,
-        sortable: Boolean,
-        visible: {
-            type: Boolean,
-            default: true
-        },
-        customSort: Function,
-        customSearch: Function,
-        sticky: Boolean,
-        headerSelectable: Boolean,
-        /** Adds native attributes to th :th-attrs="(column)" => ({})" */
-        thAttrs: {
-            type: Function,
-            default: () => ({})
-        },
-        /** Adds native attributes to td :td-attrs="(row, column)" => ({})" */
-        tdAttrs: {
-            type: Function,
-            default: () => ({})
-        },
-        subheading: String
-    },
-    data() {
-        return {
-            newKey: this.$table._nextSequence(),
-            _isTableColumn: true
-        }
-    },
-    computed: {
-        style() {
-            return {
-                width: toCssDimension(this.width)
-            }
-        },
-        hasDefaultSlot() {
-            return this.$scopedSlots.default
-        },
-        hasSearchableSlot() {
-            return this.$scopedSlots.searchable
-        },
-        hasHeaderSlot() {
-            return this.$scopedSlots.header
-        },
-        isHeaderUnselectable() {
-            return !this.headerSelectable && this.sortable
-        }
-    },
-    created() {
-        if (!this.$table) {
-            throw new Error('You should wrap oTableColumn on a oTable')
-        }
-        this.$table._addColumn(this)
-    },
-    beforeDestroy() {
-        this.$table._removeColumn(this)
-    },
-    render() {
-        // renderless
-        return this.$createElement('span', { domProps: { 'data-id': this.newKey } }, this.label)
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/table/TableMobileSort.spec.js b/packages/oruga/src/components/table/TableMobileSort.spec.js
deleted file mode 100644
index aed435ca3..000000000
--- a/packages/oruga/src/components/table/TableMobileSort.spec.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import Vue from 'vue'
-import { shallowMount } from '@vue/test-utils'
-import OTable from '@components/table/Table'
-import { setVueInstance } from '../../utils/config'
-
-let wrapper
-const columns = [
-    {
-        field: 'id',
-        label: 'ID',
-        width: '40',
-        numeric: true,
-        sortable: true
-    },
-]
-
-describe('OTableMobileSort', () => {
-    setVueInstance(Vue)
-
-    beforeEach(() => {
-        wrapper = shallowMount(OTable, {
-            propsData: {
-                mobileCards: true,
-                columns
-            }
-        })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/table/TableMobileSort.vue b/packages/oruga/src/components/table/TableMobileSort.vue
deleted file mode 100644
index 72d997e8c..000000000
--- a/packages/oruga/src/components/table/TableMobileSort.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-    <div :class="$table.mobileSortClasses">
-        <o-field>
-            <o-select
-                v-model="mobileSort"
-                expanded>
-                <template v-if="placeholder">
-                    <option
-                        v-show="showPlaceholder"
-                        :value="{}"
-                        selected
-                        disabled
-                        hidden>
-                        {{ placeholder }}
-                    </option>
-                </template>
-                <option
-                    v-for="(column, index) in sortableColumns"
-                    :key="index"
-                    :value="column">
-                    {{ column.label }}
-                </option>
-            </o-select>
-            <o-button @click="sort">
-                <!--  :class="$table.iconSortClasses()" -->
-                <o-icon
-                    v-show="currentSortColumn === mobileSort"
-                    :icon="sortIcon"
-                    :pack="iconPack"
-                    :size="sortIconSize"
-                    both
-                    :rotation="!isAsc ? 180 : 0"
-                />
-            </o-button>
-        </o-field>
-    </div>
-</template>
-
-<script>
-import Button from '../button/Button'
-import Select from '../select/Select'
-import Icon from '../icon/Icon'
-import Field from '../field/Field'
-
-export default {
-    name: 'OTableMobileSort',
-    components: {
-        [Button.name]: Button,
-        [Select.name]: Select,
-        [Icon.name]: Icon,
-        [Field.name]: Field
-    },
-    inject: ['$table'],
-    props: {
-        currentSortColumn: Object,
-        columns: Array,
-        placeholder: String,
-        iconPack: String,
-        sortIcon: {
-            type: String,
-            default: 'arrow-up'
-        },
-        sortIconSize: {
-            type: String,
-            default: 'small'
-        },
-        isAsc: Boolean
-    },
-    data() {
-        return {
-            mobileSort: this.currentSortColumn,
-            defaultEvent: {
-                shiftKey: true,
-                altKey: true,
-                ctrlKey: true
-            },
-            ignoreSort: false
-        }
-    },
-    computed: {
-        showPlaceholder() {
-            return !this.columns || !this.columns.some((column) => column === this.mobileSort)
-        },
-        sortableColumns() {
-            if (!this.columns) return []
-            return this.columns.filter(c => c.sortable)
-        }
-    },
-    watch: {
-        mobileSort(column) {
-            if (this.currentSortColumn === column) return
-            this.$emit('sort', column, this.defaultEvent)
-        },
-        currentSortColumn(column) {
-            this.mobileSort = column
-        }
-    },
-    methods: {
-        sort() {
-            this.$emit('sort', this.mobileSort, this.defaultEvent)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/table/TablePagination.spec.js b/packages/oruga/src/components/table/TablePagination.spec.js
deleted file mode 100644
index bddacc056..000000000
--- a/packages/oruga/src/components/table/TablePagination.spec.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OTablePagination from '@components/table/TablePagination'
-
-let wrapper
-
-describe('OTablePagination', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OTablePagination, {sync: false})
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/table/TablePagination.vue b/packages/oruga/src/components/table/TablePagination.vue
deleted file mode 100644
index 3e1bd50c4..000000000
--- a/packages/oruga/src/components/table/TablePagination.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-<template>
-    <div :class="rootClass">
-        <div>
-            <slot />
-        </div>
-        <div>
-            <div v-if="paginated">
-                <o-pagination
-                    :icon-pack="iconPack"
-                    :total="total"
-                    :per-page="perPage"
-                    :simple="paginationSimple"
-                    :size="paginationSize"
-                    :current="newCurrentPage"
-                    :rounded="rounded"
-                    @change="pageChanged"
-                    :aria-next-label="ariaNextLabel"
-                    :aria-previous-label="ariaPreviousLabel"
-                    :aria-page-label="ariaPageLabel"
-                    :aria-current-label="ariaCurrentLabel" />
-            </div>
-        </div>
-    </div>
-</template>
-
-<script>
-import Pagination from '../pagination/Pagination.vue'
-
-export default {
-    name: 'OTablePagination',
-    components: {
-        [Pagination.name]: Pagination
-    },
-    props: {
-        paginated: Boolean,
-        total: [Number, String],
-        perPage: [Number, String],
-        currentPage: [Number, String],
-        paginationSimple: Boolean,
-        paginationSize: String,
-        rounded: Boolean,
-        iconPack: String,
-        rootClass: [String, Array, Object],
-        ariaNextLabel: String,
-        ariaPreviousLabel: String,
-        ariaPageLabel: String,
-        ariaCurrentLabel: String
-    },
-    data() {
-        return {
-            newCurrentPage: this.currentPage
-        }
-    },
-    watch: {
-        currentPage(newVal) {
-            this.newCurrentPage = newVal
-        }
-    },
-    methods: {
-        /**
-        * Paginator change listener.
-        */
-        pageChanged(page) {
-            this.newCurrentPage = page > 0 ? page : 1
-            this.$emit('update:currentPage', this.newCurrentPage)
-            this.$emit('page-change', this.newCurrentPage)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap
deleted file mode 100644
index 156ca1d07..000000000
--- a/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap
+++ /dev/null
@@ -1,26 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTable render correctly 1`] = `
-<div class="o-table__root">
-    <div style="display: none;"></div>
-    <!---->
-    <!---->
-    <div class="o-table__wrapper">
-        <table class="o-table o-table--table__empty">
-            <!---->
-            <!---->
-            <tbody>
-                <tr>
-                    <td colspan="0"></td>
-                </tr>
-            </tbody>
-            <!---->
-        </table>
-        <o-loading-stub animation="fade" oncancel="() => {
-          /* istanbul ignore next */
-          cov_2jtz8vshvv.f[3]++;
-        }" icon="loading" iconspin="true" iconsize="medium" overlay="true"></o-loading-stub>
-    </div>
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap
deleted file mode 100644
index 21fa84f5f..000000000
--- a/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap
+++ /dev/null
@@ -1,37 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTableMobileSort render correctly 1`] = `
-<div class="o-table__root">
-    <div style="display: none;"></div>
-    <!---->
-    <!---->
-    <div class="o-table__wrapper">
-        <table class="o-table o-table--table__empty">
-            <!---->
-            <thead>
-                <tr>
-                    <!---->
-                    <!---->
-                    <th draggable="false" class="o-table__th o-table__th--sortable o-table__th--unselectable" style="width: 40px;"><span>
-                                ID
-                                <span class="o-table__th__sort-icon" style="display: none;"><o-icon-stub icon="arrow-up" size="small" rotation="0" both="true"></o-icon-stub></span></span></th>
-                    <!---->
-                </tr>
-                <!---->
-                <!---->
-            </thead>
-            <tbody>
-                <tr>
-                    <td colspan="1"></td>
-                </tr>
-            </tbody>
-            <!---->
-        </table>
-        <o-loading-stub animation="fade" oncancel="() => {
-          /* istanbul ignore next */
-          cov_2jtz8vshvv.f[3]++;
-        }" icon="loading" iconspin="true" iconsize="medium" overlay="true"></o-loading-stub>
-    </div>
-    <!---->
-</div>
-`;
diff --git a/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap
deleted file mode 100644
index 21b0b5fe8..000000000
--- a/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTablePagination render correctly 1`] = `
-<div>
-    <div></div>
-    <div>
-        <!---->
-    </div>
-</div>
-`;
diff --git a/packages/oruga/src/components/table/examples/Table.md b/packages/oruga/src/components/table/examples/Table.md
deleted file mode 100644
index 94737fd21..000000000
--- a/packages/oruga/src/components/table/examples/Table.md
+++ /dev/null
@@ -1,1690 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-
-```html
-<template>
-  <o-table :data="data" :columns="columns"></o-table>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            first_name: "Jesse",
-            last_name: "Simmons",
-            date: "2016-10-15 13:43:27",
-            gender: "Male",
-          },
-          {
-            id: 2,
-            first_name: "John",
-            last_name: "Jacobs",
-            date: "2016-12-15 06:00:53",
-            gender: "Male",
-          },
-          {
-            id: 3,
-            first_name: "Tina",
-            last_name: "Gilbert",
-            date: "2016-04-26 06:26:28",
-            gender: "Female",
-          },
-          {
-            id: 4,
-            first_name: "Clarence",
-            last_name: "Flores",
-            date: "2016-04-10 10:28:46",
-            gender: "Male",
-          },
-          {
-            id: 5,
-            first_name: "Anne",
-            last_name: "Lee",
-            date: "2016-12-06 14:38:38",
-            gender: "Female",
-          },
-        ],
-        columns: [
-          {
-            field: "id",
-            label: "ID",
-            width: "40",
-            numeric: true,
-          },
-          {
-            field: "first_name",
-            label: "First Name",
-          },
-          {
-            field: "last_name",
-            label: "Last Name",
-          },
-          {
-            field: "date",
-            label: "Date",
-            position: 'centered',
-          },
-          {
-            field: "gender",
-            label: "Gender",
-          },
-        ],
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Sandbox
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-switch v-model="isBordered">Bordered</o-switch>
-      <o-switch v-model="isStriped">Striped</o-switch>
-      <o-switch v-model="isNarrowed">Narrowed</o-switch>
-      <o-switch v-model="isHoverable">Hoverable</o-switch>
-      <o-switch v-model="isFocusable">Focusable</o-switch>
-      <o-switch v-model="isLoading">Loading state</o-switch>
-      <o-switch v-model="isEmpty">Empty</o-switch>
-      <o-switch v-model="hasMobileCards"
-        >Mobile cards <small>(collapsed rows)</small></o-switch
-      >
-    </o-field>
-
-    <o-table
-      :data="isEmpty ? [] : data"
-      :bordered="isBordered"
-      :striped="isStriped"
-      :narrowed="isNarrowed"
-      :hoverable="isHoverable"
-      :loading="isLoading"
-      :focusable="isFocusable"
-      :mobile-cards="hasMobileCards"
-    >
-      <o-table-column field="id" label="ID" width="40" numeric v-slot="props">
-        {{ props.row.id }}
-      </o-table-column>
-
-      <o-table-column field="first_name" label="First Name" v-slot="props">
-        {{ props.row.first_name }}
-      </o-table-column>
-
-      <o-table-column field="last_name" label="Last Name" v-slot="props">
-        {{ props.row.last_name }}
-      </o-table-column>
-
-      <o-table-column field="date" label="Date" position="centered" v-slot="props">
-        {{ new Date(props.row.date).toLocaleDateString() }}
-      </o-table-column>
-
-      <o-table-column label="Gender" v-slot="props">
-        <span>
-          <o-icon
-            pack="fas"
-            :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"
-          >
-          </o-icon>
-          {{ props.row.gender }}
-        </span>
-      </o-table-column>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: "Jesse",
-          last_name: "Simmons",
-          date: "2016/10/15 13:43:27",
-          gender: "Male",
-        },
-        {
-          id: 2,
-          first_name: "John",
-          last_name: "Jacobs",
-          date: "2016/12/15 06:00:53",
-          gender: "Male",
-        },
-        {
-          id: 3,
-          first_name: "Tina",
-          last_name: "Gilbert",
-          date: "2016/04/26 06:26:28",
-          gender: "Female",
-        },
-        {
-          id: 4,
-          first_name: "Clarence",
-          last_name: "Flores",
-          date: "2016/04/10 10:28:46",
-          gender: "Male",
-        },
-        {
-          id: 5,
-          first_name: "Anne",
-          last_name: "Lee",
-          date: "2016/12/06 14:38:38",
-          gender: "Female",
-        },
-      ];
-
-      return {
-        data,
-        isEmpty: false,
-        isBordered: false,
-        isStriped: false,
-        isNarrowed: false,
-        isHoverable: false,
-        isFocusable: false,
-        isLoading: false,
-        hasMobileCards: true,
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Selection
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-button
-      variant="danger"
-      @click="selected = null"
-      :disabled="!selected"
-      icon-left="times"
-    >
-      <span>Clear selected</span>
-    </o-button>
-
-    <p>
-      {{ selected }}
-    </p>
-
-    <o-table
-      :data="data"
-      :columns="columns"
-      :selected.sync="selected"
-      focusable
-    >
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: "Jesse",
-          last_name: "Simmons",
-          date: "2016-10-15 13:43:27",
-          gender: "Male",
-        },
-        {
-          id: 2,
-          first_name: "John",
-          last_name: "Jacobs",
-          date: "2016-12-15 06:00:53",
-          gender: "Male",
-        },
-        {
-          id: 3,
-          first_name: "Tina",
-          last_name: "Gilbert",
-          date: "2016-04-26 06:26:28",
-          gender: "Female",
-        },
-        {
-          id: 4,
-          first_name: "Clarence",
-          last_name: "Flores",
-          date: "2016-04-10 10:28:46",
-          gender: "Male",
-        },
-        {
-          id: 5,
-          first_name: "Anne",
-          last_name: "Lee",
-          date: "2016-12-06 14:38:38",
-          gender: "Female",
-        },
-      ];
-
-      return {
-        data,
-        selected: data[1],
-        columns: [
-          {
-            field: "id",
-            label: "ID",
-            width: "40",
-            numeric: true,
-          },
-          {
-            field: "first_name",
-            label: "First Name",
-          },
-          {
-            field: "last_name",
-            label: "Last Name",
-          },
-          {
-            field: "date",
-            label: "Date",
-            position: "centered",
-          },
-          {
-            field: "gender",
-            label: "Gender",
-          },
-        ],
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Pagination
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-select v-model="defaultSortDirection">
-        <option value="asc">Default sort direction: ASC</option>
-        <option value="desc">Default sort direction: DESC</option>
-      </o-select>
-      <o-select v-model="perPage" :disabled="!isPaginated">
-        <option value="5">5 per page</option>
-        <option value="10">10 per page</option>
-        <option value="15">15 per page</option>
-        <option value="20">20 per page</option>
-      </o-select>
-      <o-button @click="currentPage = 2" :disabled="!isPaginated"
-        >Set page to 2</o-button
-      >
-      <o-switch v-model="isPaginated">Paginated</o-switch>
-      <o-switch v-model="isPaginationSimple" :disabled="!isPaginated"
-        >Simple pagination</o-switch
-      >
-      <o-select v-model="paginationPosition" :disabled="!isPaginated">
-        <option value="bottom">bottom pagination</option>
-        <option value="top">top pagination</option>
-        <option value="both">both</option>
-      </o-select>
-      <o-select v-model="sortIcon">
-        <option value="arrow-up">Arrow sort icon</option>
-        <option value="caret-up">Caret sort icon</option>
-        <option value="chevron-up">Chevron sort icon </option>
-      </o-select>
-      <o-select v-model="sortIconSize">
-        <option value="small">Small sort icon</option>
-        <option value="">Regular sort icon</option>
-        <option value="medium">Medium sort icon</option>
-        <option value="large">Large sort icon</option>
-      </o-select>
-    </o-field>
-
-    <o-table
-      :data="data"
-      :paginated="isPaginated"
-      :per-page="perPage"
-      :current-page.sync="currentPage"
-      :pagination-simple="isPaginationSimple"
-      :pagination-position="paginationPosition"
-      :default-sort-direction="defaultSortDirection"
-      :sort-icon="sortIcon"
-      :sort-icon-size="sortIconSize"
-      default-sort="user.first_name"
-      aria-next-label="Next page"
-      aria-previous-label="Previous page"
-      aria-page-label="Page"
-      aria-current-label="Current page"
-    >
-      <o-table-column
-        field="id"
-        label="ID"
-        width="40"
-        sortable
-        numeric
-        v-slot="props"
-      >
-        {{ props.row.id }}
-      </o-table-column>
-
-      <o-table-column
-        field="user.first_name"
-        label="First Name"
-        sortable
-        v-slot="props"
-      >
-        {{ props.row.user.first_name }}
-      </o-table-column>
-
-      <o-table-column
-        field="user.last_name"
-        label="Last Name"
-        sortable
-        v-slot="props"
-      >
-        {{ props.row.user.last_name }}
-      </o-table-column>
-
-      <o-table-column
-        field="date"
-        label="Date"
-        sortable
-        position="centered"
-        v-slot="props"
-      >
-        {{ new Date(props.row.date).toLocaleDateString() }}
-      </o-table-column>
-
-      <o-table-column label="Gender" v-slot="props">
-        <span>
-          <o-icon
-            pack="fas"
-            :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"
-          >
-          </o-icon>
-          {{ props.row.gender }}
-        </span>
-      </o-table-column>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  const data = [
-    {
-      id: 1,
-      user: { first_name: "Jesse", last_name: "Simmons" },
-      date: "2016/10/15 13:43:27",
-      gender: "Male",
-    },
-    {
-      id: 2,
-      user: { first_name: "John", last_name: "Jacobs" },
-      date: "2016/12/15 06:00:53",
-      gender: "Male",
-    },
-    {
-      id: 3,
-      user: { first_name: "Tina", last_name: "Gilbert" },
-      date: "2016/04/26 06:26:28",
-      gender: "Female",
-    },
-    {
-      id: 4,
-      user: { first_name: "Clarence", last_name: "Flores" },
-      date: "2016/04/10 10:28:46",
-      gender: "Male",
-    },
-    {
-      id: 5,
-      user: { first_name: "Anne", last_name: "Lee" },
-      date: "2016/12/06 14:38:38",
-      gender: "Female",
-    },
-    {
-      id: 6,
-      user: { first_name: "Sara", last_name: "Armstrong" },
-      date: "2016/09/23 18:50:04",
-      gender: "Female",
-    },
-    {
-      id: 7,
-      user: { first_name: "Anthony", last_name: "Webb" },
-      date: "2016/08/30 23:49:38",
-      gender: "Male",
-    },
-    {
-      id: 8,
-      user: { first_name: "Andrew", last_name: "Greene" },
-      date: "2016/11/20 14:57:47",
-      gender: "Male",
-    },
-    {
-      id: 9,
-      user: { first_name: "Russell", last_name: "White" },
-      date: "2016/07/13 09:29:49",
-      gender: "Male",
-    },
-    {
-      id: 10,
-      user: { first_name: "Lori", last_name: "Hunter" },
-      date: "2016/12/09 01:44:05",
-      gender: "Female",
-    },
-    {
-      id: 11,
-      user: { first_name: "Ronald", last_name: "Wood" },
-      date: "2016/12/04 02:23:48",
-      gender: "Male",
-    },
-    {
-      id: 12,
-      user: { first_name: "Michael", last_name: "Harper" },
-      date: "2016/07/27 13:28:15",
-      gender: "Male",
-    },
-    {
-      id: 13,
-      user: { first_name: "George", last_name: "Dunn" },
-      date: "2017/03/07 12:26:52",
-      gender: "Male",
-    },
-    {
-      id: 14,
-      user: { first_name: "Eric", last_name: "Rogers" },
-      date: "2016/06/07 05:41:52",
-      gender: "Male",
-    },
-    {
-      id: 15,
-      user: { first_name: "Juan", last_name: "Meyer" },
-      date: "2017/02/01 04:56:34",
-      gender: "Male",
-    },
-    {
-      id: 16,
-      user: { first_name: "Silvia", last_name: "Rosa" },
-      date: "2017/01/26 11:50:04",
-      gender: "Female",
-    },
-    {
-      id: 17,
-      user: { first_name: "Lori", last_name: "Cunningham" },
-      date: "2016/05/01 10:00:56",
-      gender: "Female",
-    },
-    {
-      id: 18,
-      user: { first_name: "Charles", last_name: "Graham" },
-      date: "2016/05/31 06:43:30",
-      gender: "Male",
-    },
-    {
-      id: 19,
-      user: { first_name: "Henry", last_name: "Morrison" },
-      date: "2016/09/27 16:15:44",
-      gender: "Male",
-    },
-    {
-      id: 20,
-      user: { first_name: "Albert", last_name: "Mendoza" },
-      date: "2016/08/08 05:29:24",
-      gender: "Male",
-    },
-    {
-      id: 21,
-      user: { first_name: "Ruby", last_name: "Snyder" },
-      date: "2017/04/01 12:04:39",
-      gender: "Female",
-    },
-    {
-      id: 22,
-      user: { first_name: "Jesse", last_name: "Warren" },
-      date: "2016/08/20 01:36:38",
-      gender: "Male",
-    },
-    {
-      id: 23,
-      user: { first_name: "Carlos", last_name: "Ferguson" },
-      date: "2016/05/31 10:40:29",
-      gender: "Male",
-    },
-    {
-      id: 24,
-      user: { first_name: "Melissa", last_name: "Peters" },
-      date: "2016/07/23 00:41:54",
-      gender: "Female",
-    },
-    {
-      id: 25,
-      user: { first_name: "Arthur", last_name: "Garza" },
-      date: "2017/03/11 14:11:37",
-      gender: "Male",
-    },
-    {
-      id: 26,
-      user: { first_name: "Joe", last_name: "Berry" },
-      date: "2016/07/09 15:16:56",
-      gender: "Male",
-    },
-    {
-      id: 27,
-      user: { first_name: "Joseph", last_name: "Bishop" },
-      date: "2016/10/04 19:44:54",
-      gender: "Male",
-    },
-    {
-      id: 28,
-      user: { first_name: "Sarah", last_name: "Harper" },
-      date: "2016/09/23 05:09:11",
-      gender: "Female",
-    },
-    {
-      id: 29,
-      user: { first_name: "Christopher", last_name: "Fuller" },
-      date: "2016/04/12 00:05:35",
-      gender: "Male",
-    },
-    {
-      id: 30,
-      user: { first_name: "Alan", last_name: "Mendoza" },
-      date: "2016/04/22 10:48:02",
-      gender: "Male",
-    },
-    {
-      id: 31,
-      user: { first_name: "James", last_name: "Davis" },
-      date: "2017/01/16 15:17:03",
-      gender: "Male",
-    },
-    {
-      id: 32,
-      user: { first_name: "Scott", last_name: "Welch" },
-      date: "2016/10/04 23:31:51",
-      gender: "Male",
-    },
-    {
-      id: 33,
-      user: { first_name: "Mildred", last_name: "Myers" },
-      date: "2016/11/23 13:46:18",
-      gender: "Female",
-    },
-    {
-      id: 34,
-      user: { first_name: "Victor", last_name: "Martinez" },
-      date: "2016/04/06 17:05:07",
-      gender: "Male",
-    },
-    {
-      id: 35,
-      user: { first_name: "Susan", last_name: "Medina" },
-      date: "2016/12/09 10:33:37",
-      gender: "Female",
-    },
-    {
-      id: 36,
-      user: { first_name: "Judy", last_name: "Long" },
-      date: "2016/07/26 16:19:04",
-      gender: "Female",
-    },
-    {
-      id: 37,
-      user: { first_name: "Joan", last_name: "Myers" },
-      date: "2016/09/22 04:55:54",
-      gender: "Female",
-    },
-    {
-      id: 38,
-      user: { first_name: "Rachel", last_name: "Gonzales" },
-      date: "2016/07/15 13:56:38",
-      gender: "Female",
-    },
-    {
-      id: 39,
-      user: { first_name: "Roger", last_name: "Hunt" },
-      date: "2016/08/14 10:43:11",
-      gender: "Male",
-    },
-    {
-      id: 40,
-      user: { first_name: "Dorothy", last_name: "Howard" },
-      date: "2016/06/19 05:34:49",
-      gender: "Female",
-    },
-    {
-      id: 41,
-      user: { first_name: "Eugene", last_name: "Lynch" },
-      date: "2016/12/24 08:19:24",
-      gender: "Male",
-    },
-    {
-      id: 42,
-      user: { first_name: "Kathy", last_name: "Webb" },
-      date: "2017/04/01 21:09:05",
-      gender: "Female",
-    },
-    {
-      id: 43,
-      user: { first_name: "Antonio", last_name: "White" },
-      date: "2017/02/10 06:51:20",
-      gender: "Male",
-    },
-    {
-      id: 44,
-      user: { first_name: "Louis", last_name: "Spencer" },
-      date: "2016/10/08 02:20:22",
-      gender: "Male",
-    },
-    {
-      id: 45,
-      user: { first_name: "Andrea", last_name: "Marshall" },
-      date: "2016/09/04 10:59:57",
-      gender: "Female",
-    },
-    {
-      id: 46,
-      user: { first_name: "Eugene", last_name: "Sims" },
-      date: "2017/03/15 06:39:48",
-      gender: "Male",
-    },
-    {
-      id: 47,
-      user: { first_name: "Mildred", last_name: "Gibson" },
-      date: "2016/04/18 06:43:54",
-      gender: "Female",
-    },
-    {
-      id: 48,
-      user: { first_name: "Joan", last_name: "Arnold" },
-      date: "2016/12/16 04:52:23",
-      gender: "Female",
-    },
-    {
-      id: 49,
-      user: { first_name: "Jesse", last_name: "Schmidt" },
-      date: "2016/06/11 02:44:33",
-      gender: "Male",
-    },
-    {
-      id: 50,
-      user: { first_name: "David", last_name: "Frazier" },
-      date: "2017/02/15 21:46:30",
-      gender: "Male",
-    },
-    {
-      id: 51,
-      user: { first_name: "Nicholas", last_name: "Howell" },
-      date: "2016/11/01 15:08:31",
-      gender: "Male",
-    },
-    {
-      id: 52,
-      user: { first_name: "Douglas", last_name: "Chapman" },
-      date: "2017/02/08 03:33:24",
-      gender: "Male",
-    },
-    {
-      id: 53,
-      user: { first_name: "Bruce", last_name: "Simmons" },
-      date: "2016/07/14 12:11:17",
-      gender: "Male",
-    },
-    {
-      id: 54,
-      user: { first_name: "Antonio", last_name: "George" },
-      date: "2016/11/07 19:12:55",
-      gender: "Male",
-    },
-    {
-      id: 55,
-      user: { first_name: "Chris", last_name: "Marshall" },
-      date: "2016/07/03 12:11:45",
-      gender: "Male",
-    },
-    {
-      id: 56,
-      user: { first_name: "Ashley", last_name: "Hudson" },
-      date: "2016/10/14 21:08:05",
-      gender: "Female",
-    },
-    {
-      id: 57,
-      user: { first_name: "Alan", last_name: "Edwards" },
-      date: "2017/03/22 21:10:25",
-      gender: "Male",
-    },
-    {
-      id: 58,
-      user: { first_name: "George", last_name: "Clark" },
-      date: "2016/04/28 03:15:05",
-      gender: "Male",
-    },
-    {
-      id: 59,
-      user: { first_name: "Frank", last_name: "Porter" },
-      date: "2016/09/08 00:48:14",
-      gender: "Male",
-    },
-    {
-      id: 60,
-      user: { first_name: "Christopher", last_name: "Palmer" },
-      date: "2016/05/24 08:58:12",
-      gender: "Male",
-    },
-  ];
-
-  export default {
-    data() {
-      return {
-        data,
-        isPaginated: true,
-        isPaginationSimple: false,
-        paginationPosition: "bottom",
-        defaultSortDirection: "asc",
-        sortIcon: "arrow-up",
-        sortIconSize: "small",
-        currentPage: 1,
-        perPage: 5,
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Async Data
-
-::: demo
-
-```html
-<template>
-    <section>
-        <o-table
-            :data="data"
-            :loading="loading"
-            paginated
-            backend-pagination
-            :total="total"
-            :per-page="perPage"
-            @page-change="onPageChange"
-            aria-next-label="Next page"
-            aria-previous-label="Previous page"
-            aria-page-label="Page"
-            aria-current-label="Current page"
-            backend-sorting
-            :default-sort-direction="defaultSortOrder"
-            :default-sort="[sortField, sortOrder]"
-            @sort="onSort">
-            <o-table-column field="original_title" label="Title" sortable v-slot="props">
-                {{ props.row.original_title }}
-            </o-table-column>
-            <o-table-column field="vote_average" label="Vote Average" numeric sortable v-slot="props">
-                <span class="tag" :class="type(props.row.vote_average)">
-                    {{ props.row.vote_average }}
-                </span>
-            </o-table-column>
-            <o-table-column field="vote_count" label="Vote Count" numeric sortable v-slot="props">
-                    {{ props.row.vote_count }}
-            </o-table-column>
-            <o-table-column field="release_date" label="Release Date" sortable centered v-slot="props">
-                {{ props.row.release_date ? new Date(props.row.release_date).toLocaleDateString() : 'unknown' }}
-            </o-table-column>
-            <o-table-column label="Overview" width="500" v-slot="props">
-                {{ props.row.overview }}
-            </o-table-column>
-        </o-table>
-    </section>
-</template>
-<script>
-    export default {
-        data() {
-            return {
-                data: [],
-                total: 0,
-                loading: false,
-                sortField: 'vote_count',
-                sortOrder: 'desc',
-                defaultSortOrder: 'desc',
-                page: 1,
-                perPage: 20
-            }
-        },
-        methods: {
-            /*
-            * Load async data
-            */
-            loadAsyncData() {
-                const params = [
-                    'api_key=bb6f51bef07465653c3e553d6ab161a8',
-                    'language=en-US',
-                    'include_adult=false',
-                    'include_video=false',
-                    `sort_by=${this.sortField}.${this.sortOrder}`,
-                    `page=${this.page}`
-                ].join('&')
-                this.loading = true
-                fetch(`https://api.themoviedb.org/3/discover/movie?${params}`)
-                    .then(response => response.json())
-                    .then(( data ) => {
-                        // api.themoviedb.org manage max 1000 pages
-                        this.data = []
-                        let currentTotal = data.total_results
-                        if (data.total_results / this.perPage > 1000) {
-                            currentTotal = this.perPage * 1000
-                        }
-                        this.total = currentTotal
-                        data.results.forEach((item) => {
-                            item.release_date = item.release_date ? item.release_date.replace(/-/g, '/') : null
-                            this.data.push(item)
-                        })
-                        this.loading = false
-                    })
-                    .catch((error) => {
-                        this.data = []
-                        this.total = 0
-                        this.loading = false
-                        throw error
-                    })
-            },
-            /*
-            * Handle page-change event
-            */
-            onPageChange(page) {
-                this.page = page
-                this.loadAsyncData()
-            },
-            /*
-            * Handle sort event
-            */
-            onSort(field, order) {
-                this.sortField = field
-                this.sortOrder = order
-                this.loadAsyncData()
-            },
-            /*
-            * Type style in relation to the value
-            */
-            type(value) {
-                const number = parseFloat(value)
-                if (number < 6) {
-                    return 'is-danger'
-                } else if (number >= 6 && number < 8) {
-                    return 'is-warning'
-                } else if (number >= 8) {
-                    return 'is-success'
-                }
-            }
-        },
-        mounted() {
-            this.loadAsyncData()
-        }
-    }
-</script>
-```
-
-:::
-
-### Checkable
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-button
-        variant="danger"
-        @click="checkedRows = []"
-        :disabled="!checkedRows.length"
-        icon-left="times"
-      >
-        <span>Clear checked</span>
-      </o-button>
-      <o-select v-model="checkboxPosition">
-        <option value="left">Checkbox at left</option>
-        <option value="right">Checkbox at right</option>
-      </o-select>
-    </o-field>
-
-    <o-table
-      :data="data"
-      :columns="columns"
-      :checked-rows.sync="checkedRows"
-      :is-row-checkable="(row) => row.id !== 3 && row.id !== 4"
-      checkable
-      :checkbox-position="checkboxPosition"
-    >
-      <template slot="bottom-left">
-        <b>Total checked</b>: {{ checkedRows.length }}
-      </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      const data = [
-        {
-          id: 1,
-          first_name: "Jesse",
-          last_name: "Simmons",
-          date: "2016-10-15 13:43:27",
-          gender: "Male",
-        },
-        {
-          id: 2,
-          first_name: "John",
-          last_name: "Jacobs",
-          date: "2016-12-15 06:00:53",
-          gender: "Male",
-        },
-        {
-          id: 3,
-          first_name: "Tina",
-          last_name: "Gilbert",
-          date: "2016-04-26 06:26:28",
-          gender: "Female",
-        },
-        {
-          id: 4,
-          first_name: "Clarence",
-          last_name: "Flores",
-          date: "2016-04-10 10:28:46",
-          gender: "Male",
-        },
-        {
-          id: 5,
-          first_name: "Anne",
-          last_name: "Lee",
-          date: "2016-12-06 14:38:38",
-          gender: "Female",
-        },
-      ];
-
-      return {
-        data,
-        checkboxPosition: "left",
-        checkedRows: [data[1], data[3]],
-        columns: [
-          {
-            field: "id",
-            label: "ID",
-            width: "40",
-            numeric: true,
-          },
-          {
-            field: "first_name",
-            label: "First Name",
-          },
-          {
-            field: "last_name",
-            label: "Last Name",
-          },
-          {
-            field: "date",
-            label: "Date",
-            position: "centered",
-          },
-          {
-            field: "gender",
-            label: "Gender",
-          },
-        ],
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Sticky
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <div class="control">
-        <o-switch v-model="stickyHeaders">Sticky Headers</o-switch>
-      </div>
-    </o-field>
-    <o-table
-      :data="data"
-      :columns="columns"
-      :sticky-header="stickyHeaders"
-    ></o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            user: { first_name: "Jesse", last_name: "Simmons" },
-            date: "2016/10/15 13:43:27",
-            gender: "Male",
-          },
-          {
-            id: 2,
-            user: { first_name: "John", last_name: "Jacobs" },
-            date: "2016/12/15 06:00:53",
-            gender: "Male",
-          },
-          {
-            id: 3,
-            user: { first_name: "Tina", last_name: "Gilbert" },
-            date: "2016/04/26 06:26:28",
-            gender: "Female",
-          },
-          {
-            id: 4,
-            user: { first_name: "Clarence", last_name: "Flores" },
-            date: "2016/04/10 10:28:46",
-            gender: "Male",
-          },
-          {
-            id: 5,
-            user: { first_name: "Anne", last_name: "Lee" },
-            date: "2016/12/06 14:38:38",
-            gender: "Female",
-          },
-          {
-            id: 6,
-            user: { first_name: "Sara", last_name: "Armstrong" },
-            date: "2016/09/23 18:50:04",
-            gender: "Female",
-          },
-          {
-            id: 7,
-            user: { first_name: "Anthony", last_name: "Webb" },
-            date: "2016/08/30 23:49:38",
-            gender: "Male",
-          },
-          {
-            id: 8,
-            user: { first_name: "Andrew", last_name: "Greene" },
-            date: "2016/11/20 14:57:47",
-            gender: "Male",
-          },
-          {
-            id: 9,
-            user: { first_name: "Russell", last_name: "White" },
-            date: "2016/07/13 09:29:49",
-            gender: "Male",
-          },
-          {
-            id: 10,
-            user: { first_name: "Lori", last_name: "Hunter" },
-            date: "2016/12/09 01:44:05",
-            gender: "Female",
-          },
-        ],
-        columns: [
-          {
-            field: "id",
-            label: "ID",
-            width: "40",
-            numeric: true,
-            sticky: true,
-            thAttrs: () => ({ 'class': "is-sticky-column-one" }),
-            tdAttrs: () => ({ 'class': "is-sticky-column-one" }),
-          },
-          {
-            field: "user.first_name",
-            label: "First Name",
-          },
-          {
-            field: "user.last_name",
-            label: "Last Name",
-          },
-          {
-            field: "date",
-            label: "Date",
-            position: "centered",
-            sticky: true,
-            thAttrs: () => ({ 'class': "is-sticky-column-two" }),
-            tdAttrs: () => ({ 'class': "is-sticky-column-two" }),
-          },
-          {
-            field: "gender",
-            label: "Gender",
-          },
-          {
-            field: "id",
-            label: "Column A",
-          },
-          {
-            field: "id",
-            label: "Column B",
-          },
-          {
-            field: "id",
-            label: "Column C",
-          },
-          {
-            field: "id",
-            label: "Column D",
-          },
-          {
-            field: "id",
-            label: "Column E",
-          },
-          {
-            field: "id",
-            label: "Column F",
-          },
-          {
-            field: "id",
-            label: "Column G",
-          },
-          {
-            field: "id",
-            label: "Column H",
-          },
-          {
-            field: "id",
-            label: "Column I",
-          },
-          {
-            field: "id",
-            label: "Column L",
-          },
-          {
-            field: "id",
-            label: "Column M",
-          },
-          {
-            field: "id",
-            label: "Column N",
-          },
-          {
-            field: "id",
-            label: "Column O",
-          },
-        ],
-        stickyHeaders: true,
-      };
-    },
-  };
-</script>
-
-<style>
-  .is-sticky-column-one {
-    background: #006724 !important;
-    color: white !important;
-  }
-  .is-sticky-column-two {
-    background: #167df0 !important;
-    color: white !important;
-  }
-</style>
-```
-
-:::
-
-### Detailed
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-field grouped group-multiline>
-      <o-checkbox v-model="showDetailIcon">Show detail chevron</o-checkbox>
-      <o-checkbox v-model="showDefaultDetail">Custom detail column</o-checkbox>
-      <div v-for="(column, index) in columnsVisible" :key="index">
-        <o-checkbox v-model="column.display">
-          {{ column.title }}
-        </o-checkbox>
-      </div>
-    </o-field>
-
-    <o-table
-      :data="data"
-      ref="table"
-      detailed
-      hoverable
-      :custom-detail-row="!showDefaultDetail"
-      :opened-detailed="['Board Games']"
-      :default-sort="['name', 'asc']"
-      detail-key="name"
-      :show-detail-icon="showDetailIcon"
-    >
-      <o-table-column
-        field="name"
-        :visible="columnsVisible['name'].display"
-        :label="columnsVisible['name'].title"
-        width="300"
-        sortable
-        v-slot="props"
-      >
-        <template v-if="showDetailIcon">
-          {{ props.row.name }}
-        </template>
-        <template v-else>
-          <a @click="toggle(props.row)">
-            {{ props.row.name }}
-          </a>
-        </template>
-      </o-table-column>
-
-      <o-table-column
-        field="sold"
-        :visible="columnsVisible['sold'].display"
-        :label="columnsVisible['sold'].title"
-        sortable
-        position="centered"
-        v-slot="props"
-      >
-        {{ props.row.sold }}
-      </o-table-column>
-
-      <o-table-column
-        field="available"
-        :visible="columnsVisible['available'].display"
-        :label="columnsVisible['available'].title"
-        sortable
-        position="centered"
-        v-slot="props"
-      >
-        {{ props.row.available }}
-      </o-table-column>
-
-      <o-table-column
-        :visible="columnsVisible['cleared'].display"
-        :label="columnsVisible['cleared'].title"
-        position="centered"
-        v-slot="props"
-      >
-        <span>
-          {{ Math.round((props.row.sold / props.row.available) * 100) }}%
-        </span>
-      </o-table-column>
-
-      <template slot="detail" slot-scope="props">
-        <tr v-for="item in props.row.items" :key="item.name">
-          <td v-if="showDetailIcon"></td>
-          <td v-show="columnsVisible['name'].display">
-            &nbsp;&nbsp;&nbsp;&nbsp;{{ item.name }}
-          </td>
-          <td v-show="columnsVisible['sold'].display">{{ item.sold }}</td>
-          <td v-show="columnsVisible['available'].display">
-            {{ item.available }}
-          </td>
-          <td v-show="columnsVisible['cleared'].display">
-            <span>
-              {{ Math.round((item.sold / item.available) * 100) }}%
-            </span>
-          </td>
-        </tr>
-      </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            name: "Board Games",
-            sold: 131,
-            available: 301,
-            items: [
-              {
-                name: "Monopoly",
-                sold: 57,
-                available: 100,
-              },
-              {
-                name: "Scrabble",
-                sold: 23,
-                available: 84,
-              },
-              {
-                name: "Chess",
-                sold: 37,
-                available: 61,
-              },
-              {
-                name: "Battleships",
-                sold: 14,
-                available: 56,
-              },
-            ],
-          },
-          {
-            name: "Jigsaws & Puzzles",
-            sold: 88,
-            available: 167,
-            items: [
-              {
-                name: "World Map",
-                sold: 31,
-                available: 38,
-              },
-              {
-                name: "London",
-                sold: 23,
-                available: 29,
-              },
-              {
-                name: "Sharks",
-                sold: 20,
-                available: 44,
-              },
-              {
-                name: "Disney",
-                sold: 14,
-                available: 56,
-              },
-            ],
-          },
-          {
-            name: "Books",
-            sold: 434,
-            available: 721,
-            items: [
-              {
-                name: "Hamlet",
-                sold: 101,
-                available: 187,
-              },
-              {
-                name: "The Lord Of The Rings",
-                sold: 85,
-                available: 156,
-              },
-              {
-                name: "To Kill a Mockingbird",
-                sold: 78,
-                available: 131,
-              },
-              {
-                name: "Catch-22",
-                sold: 73,
-                available: 98,
-              },
-              {
-                name: "Frankenstein",
-                sold: 51,
-                available: 81,
-              },
-              {
-                name: "Alice's Adventures In Wonderland",
-                sold: 46,
-                available: 68,
-              },
-            ],
-          },
-        ],
-        columnsVisible: {
-          name: { title: "Name", display: true },
-          sold: { title: "Stock Sold", display: true },
-          available: { title: "Stock Available", display: true },
-          cleared: { title: "Stock Cleared", display: true },
-        },
-        showDetailIcon: true,
-        showDefaultDetail: true,
-      };
-    },
-    methods: {
-      toggle(row) {
-        this.$refs.table.toggleDetails(row);
-      },
-    },
-  };
-</script>
-```
-
-:::
-
-### Searchable
-
-::: demo
-
-```html
-<template>
-  <section>
-    <o-table :data="data" :columns="columns"> </o-table>
-    <hr />
-    <p>
-      You can debounce search filter to avoid multiple filtering when typing.
-    </p>
-    <o-table :data="data" :columns="columns" :debounce-search="1000"> </o-table>
-    <p>You can also customize the search input using a scoped slot.</p>
-    <o-table :data="data">
-      <template v-for="column in columns">
-        <o-table-column :key="column.id" v-bind="column">
-          <template
-            v-if="column.searchable && !column.numeric"
-            slot="searchable"
-            slot-scope="props"
-          >
-            <o-input
-              v-model="props.filters[props.column.field]"
-              placeholder="Search..."
-              icon="search"
-              size="small"
-            />
-          </template>
-          <template v-slot="props">
-            {{ props.row[column.field] }}
-          </template>
-        </o-table-column>
-      </template>
-    </o-table>
-  </section>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        data: [
-          {
-            id: 1,
-            first_name: "Jesse",
-            last_name: "Simmons",
-            date: "2016-10-15 13:43:27",
-            gender: "Male",
-          },
-          {
-            id: 2,
-            first_name: "John",
-            last_name: "Jacobs",
-            date: "2016-12-15 06:00:53",
-            gender: "Male",
-          },
-          {
-            id: 3,
-            first_name: "Tina",
-            last_name: "Gilbert",
-            date: "2016-04-26 06:26:28",
-            gender: "Female",
-          },
-          {
-            id: 4,
-            first_name: "Clarence",
-            last_name: "Flores",
-            date: "2016-04-10 10:28:46",
-            gender: "Male",
-          },
-          {
-            id: 5,
-            first_name: "Anne",
-            last_name: "Lee",
-            date: "2016-12-06 14:38:38",
-            gender: "Female",
-          },
-        ],
-        columns: [
-          {
-            field: "id",
-            label: "ID",
-            width: "100",
-            numeric: true,
-            searchable: true,
-          },
-          {
-            field: "first_name",
-            label: "First Name",
-            searchable: true,
-          },
-          {
-            field: "last_name",
-            label: "Last Name",
-            searchable: true,
-          },
-          {
-            field: "date",
-            label: "Date",
-            position: "centered",
-          },
-          {
-            field: "gender",
-            label: "Gender",
-          },
-        ],
-      };
-    },
-  };
-</script>
-```
-
-:::
-
-### Draggable rows/columns
-
-::: demo
-
-```html
-<template>
-  <div>
-    <p>
-      Use <code>draggable</code>/<code>draggable-column</code> prop to allow rows and columns to be draggable. Manage dragging using <code>dragstart</code>/<code>columndragstart</code>,<code>dragover</code>/<code>columndragover</code> and <code>drop</code>/<code>columndrop</code> events
-    </p>
-    <o-table
-      :data="data"
-      :columns="columns"
-      draggable
-      draggable-column
-      @dragstart="dragstart"
-      @drop="drop"
-      @dragover="dragover"
-      @dragleave="dragleave"
-      @columndragstart="columndragstart"
-      @columndrop="columndrop"
-      @columndragover="columndragover"
-      @columndragleave="columndragleave">
-    </o-table>
-  </div>
-</template>
-<script>
-  export default {
-      data() {
-          return {
-              data: [
-                  { 'id': 1, 'first_name': 'Jesse', 'last_name': 'Simmons', 'date': '2016-10-15 13:43:27', 'gender': 'Male' },
-                  { 'id': 2, 'first_name': 'John', 'last_name': 'Jacobs', 'date': '2016-12-15 06:00:53', 'gender': 'Male' },
-                  { 'id': 3, 'first_name': 'Tina', 'last_name': 'Gilbert', 'date': '2016-04-26 06:26:28', 'gender': 'Female' },
-                  { 'id': 4, 'first_name': 'Clarence', 'last_name': 'Flores', 'date': '2016-04-10 10:28:46', 'gender': 'Male' },
-                  { 'id': 5, 'first_name': 'Anne', 'last_name': 'Lee', 'date': '2016-12-06 14:38:38', 'gender': 'Female' }
-              ],
-              columns: [
-                  {
-                      field: 'id',
-                      label: 'ID',
-                      width: '40',
-                      numeric: true
-                  },
-                  {
-                      field: 'first_name',
-                      label: 'First Name',
-                  },
-                  {
-                      field: 'last_name',
-                      label: 'Last Name',
-                  },
-                  {
-                      field: 'date',
-                      label: 'Date',
-                      centered: true
-                  },
-                  {
-                      field: 'gender',
-                      label: 'Gender',
-                  }
-              ],
-              draggingRow: null,
-              draggingRowIndex: null,
-              draggingColumn: null,
-              draggingColumnIndex: null
-          }
-      },
-      methods: {
-        dragstart(payload) {
-          this.draggingRow = payload.row
-          this.draggingRowIndex = payload.index
-          payload.event.dataTransfer.effectAllowed = 'copy'
-        },
-        dragover(payload) {
-          payload.event.dataTransfer.dropEffect = 'copy'
-          payload.event.target.closest('tr').classList.add('is-selected')
-          payload.event.preventDefault()
-        },
-        dragleave(payload) {
-          payload.event.target.closest('tr').classList.remove('is-selected')
-          payload.event.preventDefault()
-        },
-        drop(payload) {
-          payload.event.target.closest('tr').classList.remove('is-selected')
-          const droppedOnRowIndex = payload.index
-          this.$oruga.notification.open(`Moved ${this.draggingRow.first_name} from row ${this.draggingRowIndex + 1} to ${droppedOnRowIndex + 1}`)
-        },
-
-        columndragstart(payload) {
-          this.draggingColumn = payload.column
-          this.draggingColumnIndex = payload.index
-          payload.event.dataTransfer.effectAllowed = 'copy'
-        },
-        columndragover(payload) {
-          payload.event.dataTransfer.dropEffect = 'copy'
-          payload.event.target.closest('th').classList.add('is-selected')
-          payload.event.preventDefault()
-        },
-        columndragleave(payload) {
-          payload.event.target.closest('th').classList.remove('is-selected')
-          payload.event.preventDefault()
-        },
-        columndrop(payload) {
-          payload.event.target.closest('th').classList.remove('is-selected')
-          const droppedOnColumnIndex = payload.index
-          this.$oruga.notification.open(`Moved ${this.draggingColumn.field} from column ${this.draggingColumnIndex + 1} to ${droppedOnColumnIndex + 1}`)
-        }
-      }
-  }
-</script>
-```
-
-:::
diff --git a/packages/oruga/src/components/table/index.js b/packages/oruga/src/components/table/index.js
deleted file mode 100644
index a8d9963e1..000000000
--- a/packages/oruga/src/components/table/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import Table from './Table'
-import TableColumn from './TableColumn'
-
-import { use, registerComponent } from '../../utils/plugins'
-import { setVueInstance, VueInstance } from '../../utils/config'
-
-const Plugin = {
-    install(Vue) {
-        // individual import + extend method into Table.vue
-        if (typeof VueInstance === 'undefined') {
-            setVueInstance(Vue)
-        }
-        registerComponent(Vue, Table)
-        registerComponent(Vue, TableColumn)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Table as OTable,
-    TableColumn as OTableColumn
-}
diff --git a/packages/oruga/src/components/tabs/Inspector.vue b/packages/oruga/src/components/tabs/Inspector.vue
deleted file mode 100644
index 8bf2730d3..000000000
--- a/packages/oruga/src/components/tabs/Inspector.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-tabs v-model="activeTab" v-bind="s">
-                    <o-tab-item v-bind="s" :value="1" label="Pictures" icon="images">
-                        Lorem ipsum dolor sit amet.
-                    </o-tab-item>
-                    <o-tab-item v-bind="s" :value="2" label="Music" icon="music">
-                        Lorem <br />
-                        ipsum <br />
-                        dolor <br />
-                        sit <br />
-                        amet.
-                    </o-tab-item>
-                    <o-tab-item v-bind="s" :value="3" label="Videos" icon="video">
-                        Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales
-                        felis lobortis eget.
-                    </o-tab-item>
-                </o-tabs>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData" :subitem="subitem"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            activeTab: 1,
-            subitem: "tab-item",
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "navSizeClass",
-                    description: "Size of the navigation",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                    }
-                },
-                {
-                    class: "navTypeClass",
-                    description: "Type of the navigation",
-                    properties: ["type"],
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: () => {}
-                },
-                {
-                    class: "verticalClass",
-                    description: "Class of Tabs component when vertical",
-                    properties: ['vertical'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Class of Tabs component when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true
-                    }
-                },
-                {
-                    class: "multilineClass",
-                    description: "Class of Tabs component when multiline",
-                    properties: ['multiline'],
-                    action: (cmp) => {
-                        cmp.data.multiline = true
-                    }
-                },
-                {
-                    class: "positionClass",
-                    description: "Class of Tabs component when when is vertical and its position changes",
-                    properties: ['position', 'vertical'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = true
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "tabItemWrapperClass",
-                    description: "Class of the tab item wrapper",
-                    specificity: "when <b>expandedClass</b> is applied",
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the tab content",
-                },
-                {
-                    class: "itemClass",
-                    description: "Class of the tab item",
-                    subitem: true
-                },
-                {
-                    class: "itemHeaderClass",
-                    description: "Class of the tab item header",
-                    specificity: "when <b>verticalClass</b> or <b>expandedClass</b> or <b>positionClass</b> is applied",
-                    subitem: true,
-                },
-                {
-                    class: "itemHeaderActiveClass",
-                    description: "Class of the tab item header when active",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                },
-                {
-                    class: "itemHeaderDisabledClass",
-                    description: "Class of the tab item header when disabled",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "itemHeaderTypeClass",
-                    description: "Class of the tab item header type",
-                    subitem: true,
-                    suffixes: ['default', 'boxed', 'toggle'],
-                    action: () => {}
-                },
-                {
-                    class: "itemHeaderIconClass",
-                    description: "Class of the tab item header icon",
-                    subitem: true,
-                    action: () => {
-                    }
-                },
-                {
-                    class: "itemHeaderTextClass",
-                    description: "Class of the tab item header text",
-                    subitem: true,
-                    action: () => {
-                    }
-                },
-                {
-                    class: "navTabsClass",
-                    description: "Class of the Tabs component nav tabs",
-                    specificity: "when <b>positionClass</b> is applied",
-                },
-                {
-                    class: "navPositionClass",
-                    description: "Class of the Tabs component nav position",
-                    properties: ['position'],
-                    suffixes: ['bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.vertical = false
-                        cmp.data.position = 'right'
-                    }
-                },
-            ]
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/tabs/TabItem.spec.js b/packages/oruga/src/components/tabs/TabItem.spec.js
deleted file mode 100644
index 7a5dcfbae..000000000
--- a/packages/oruga/src/components/tabs/TabItem.spec.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import {mount} from '@vue/test-utils'
-import OTabs from '@components/tabs/Tabs'
-import OTabItem from '@components/tabs/TabItem'
-
-import {setOptions} from '@utils/config'
-import { getOptions } from '../../utils/config'
-
-let wrapper
-let wrapperParent
-
-const WrapperComp = {
-    data() {
-        return {
-            show1: true
-        }
-    },
-    template: `
-        <OTabs>
-            <OTabItem v-if="show1" value="tab1"/>
-            <OTabItem ref="testItem" value="tab2"/>
-            <OTabItem value="tab3" :visible="false"/>
-        </OTabs>`,
-    components: {
-        OTabs, OTabItem
-    }
-}
-
-describe('OTabItem', () => {
-    beforeEach(() => {
-        wrapperParent = mount(WrapperComp)
-        wrapper = wrapperParent.find({ ref: 'testItem' })
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-        expect(wrapper.vm.value).toBe('tab2')
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('computes its position correctly', () => {
-        expect(wrapper.vm.index).toBe(1)
-    })
-
-    it('transition correctly when activate is called', () => {
-        wrapper.vm.activate(0)
-        expect(wrapper.vm.transitionName).toBe('slide-prev')
-
-        wrapper.vm.activate(2)
-        expect(wrapper.vm.transitionName).toBe('slide-next')
-    })
-
-    it('transition correctly when deactivate is called', () => {
-        wrapper.vm.deactivate(2)
-        expect(wrapper.vm.transitionName).toBe('slide-prev')
-
-        wrapper.vm.deactivate(0)
-        expect(wrapper.vm.transitionName).toBe('slide-next')
-    })
-
-    /*
-    it('doesn\'t mount when it has no parent', () => {
-        const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {})
-
-        try {
-            wrapper = mount({
-                template: `<OTabItem/>`,
-                components: {
-                    OTabItem
-                },
-                destroyed() {
-                    spy()
-                }
-            })
-        } catch (error) {
-            expect(error.message).stringMatching(/You should wrap/)
-        } finally {
-            spy.mockRestore()
-        }
-    })
-    */
-
-    it('transforms default item tag accordingly to props', async () => {
-        expect(wrapperParent.find('.o-tabs__nav-item').is('button')).toBe(true)
-        setOptions(Object.assign(getOptions(), {
-            tabs: {
-                itemTag: 'a',
-            },
-        }))
-        wrapperParent = mount(WrapperComp)
-        await wrapperParent.vm.$nextTick()
-        expect(wrapperParent.find('.o-tabs__nav-item').is('a')).toBe(true)
-    })
-
-    it('unregisters when destroyed', async () => {
-        const wrapper = mount({
-            template: `
-        <OTabs>
-            <OTabItem ref="item1"/>
-            <OTabItem v-if="item2" ref="item2"/>
-        </OTabs>`,
-            props: {
-                item2: {
-                    type: Boolean,
-                    default: true
-                }
-            },
-            components: {
-                OTabs, OTabItem
-            }
-        })
-
-        expect(wrapper.find({ref: 'item2'})).toBeTruthy()
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find(OTabs).vm.items.length).toBe(2)
-
-        wrapper.setProps({item2: false})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.find(OTabs).vm.items.length).toBe(1)
-
-        wrapper.setProps({item2: true})
-        wrapper.find(OTabs).setProps({value: 1})
-    })
-})
diff --git a/packages/oruga/src/components/tabs/TabItem.vue b/packages/oruga/src/components/tabs/TabItem.vue
deleted file mode 100644
index 2439e2a3f..000000000
--- a/packages/oruga/src/components/tabs/TabItem.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import TabbedChildMixin from '../../utils/TabbedChildMixin'
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * @displayName Tab Item
- */
-export default {
-    name: 'OTabItem',
-    mixins: [BaseComponentMixin, TabbedChildMixin('tab')],
-    configField: 'tabs',
-    props: {
-        /** Item will be disabled */
-        disabled: Boolean,
-        /**
-         * Tabs item tag name
-         */
-        tag: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'tabs.itemTag', 'button')
-            }
-        },
-        itemClass: [String, Function, Array],
-        itemHeaderClass: [String, Function, Array],
-        itemHeaderActiveClass: [String, Function, Array],
-        itemHeaderDisabledClass: [String, Function, Array],
-        itemHeaderTypeClass: [String, Function, Array],
-        itemHeaderIconClass: [String, Function, Array],
-        itemHeaderTextClass: [String, Function, Array]
-    },
-    computed: {
-        elementClasses() {
-            return [
-                this.computedClass('itemClass', 'o-tab-item__content')
-            ]
-        },
-        headerClasses() {
-            return [
-                this.computedClass('itemHeaderClass', 'o-tabs__nav-item'),
-                { [this.computedClass('itemHeaderActiveClass', 'o-tabs__nav-item-{*}--active', this.parent.type)]: this.isActive },
-                { [this.computedClass('itemHeaderDisabledClass', 'o-tabs__nav-item-{*}--disabled', this.parent.type)]: this.disabled },
-                { [this.computedClass('itemHeaderTypeClass', 'o-tabs__nav-item-', this.parent.type)]: this.parent.type },
-            ]
-        },
-        headerIconClasses() {
-            return [
-                this.computedClass('itemHeaderIconClass', 'o-tabs__nav-item-icon')
-            ]
-        },
-        headerTextClasses() {
-            return [
-                this.computedClass('itemHeaderTextClass', 'o-tabs__nav-item-text')
-            ]
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/tabs/Tabs.spec.js b/packages/oruga/src/components/tabs/Tabs.spec.js
deleted file mode 100644
index 9b0956c04..000000000
--- a/packages/oruga/src/components/tabs/Tabs.spec.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import { mount } from '@vue/test-utils'
-import OTabs from '@components/tabs/Tabs'
-import OTabItem from '@components/tabs/TabItem'
-
-let wrapper
-
-const WrapperComp = {
-    template: `
-        <OTabs value="tab1">
-            <OTabItem value="tab1"></OTabItem>
-            <OTabItem value="tab2" :visible="false"></OTabItem>
-        </OTabs>`,
-    components: {
-        OTabs, OTabItem
-    }
-}
-
-describe('OTabs', () => {
-    beforeEach(() => {
-        wrapper = mount(WrapperComp).find(OTabs)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    it('manage main classes accordingly', async () => {
-        wrapper.setProps({
-            expanded: false,
-            vertical: false,
-            position: 'centered'
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.rootClasses[2]['o-tabs--fullwidth']).toBeFalsy()
-        expect(wrapper.vm.rootClasses[3]['o-tabs--vertical']).toBeFalsy()
-
-        wrapper.setProps({expanded: true})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.rootClasses[2]['o-tabs--fullwidth']).toBeTruthy()
-
-        wrapper.setProps({vertical: true})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.rootClasses[3]['o-tabs--vertical']).toBeTruthy()
-
-        wrapper.setProps({position: 'right'})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.rootClasses[1]['o-tabs--centered']).toBeFalsy()
-    })
-
-    /*
-    it('emit input event with value when active tab is modified', async () => {
-        const idx = 'tab2'
-        wrapper.vm.activeId = idx
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        const valueEmitted = wrapper.emitted().input
-
-        expect(valueEmitted).toBeTruthy()
-        expect(valueEmitted[0][0]).toBe(idx)
-    })
-    */
-
-    it('emit input event with value when childClick is called', async () => {
-        const val = 'tab2'
-
-        wrapper.vm.childClick(wrapper.vm.items[1])
-        wrapper.vm.childClick(wrapper.vm.items[1])
-
-        await wrapper.vm.$nextTick() // Wait until $emits have been handled
-
-        const valueEmitted = wrapper.emitted().input
-        expect(valueEmitted[0][0]).toBe(val)
-        // Will be called only once even if we clicked multiple times
-        expect(valueEmitted.length).toBe(1)
-    })
-
-    it('updates the tab when the value is changed', async () => {
-        wrapper.setProps({value: 'tab2'})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeId).toBe('tab2')
-
-        wrapper.setProps({value: 0})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.activeId).toBe(0)
-    })
-
-    it('still renders if there is no item', () => {
-        wrapper = mount({
-            template: `<OTabs value="tab1"></OTabs>`,
-            components: {
-                OTabs
-            }
-        }).find(OTabs)
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/tabs/Tabs.vue b/packages/oruga/src/components/tabs/Tabs.vue
deleted file mode 100644
index 77ba0ebc4..000000000
--- a/packages/oruga/src/components/tabs/Tabs.vue
+++ /dev/null
@@ -1,142 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <nav
-            :class="navClasses"
-            role="tablist"
-            :aria-orientation="vertical ? 'vertical' : 'horizontal'"
-        >
-            <slot name="start" />
-            <div
-                v-for="childItem in items"
-                :key="childItem.newValue"
-                v-show="childItem.visible"
-                :class="itemWrapperClasses"
-                role="tab"
-                :aria-controls="`${childItem.value}-content`"
-                :aria-selected="`${childItem.isActive}`">
-                <o-slot-component
-                    v-if="childItem.$scopedSlots.header"
-                    :component="childItem"
-                    :tag="childItem.tag"
-                    name="header"
-                    @click.native="childClick(childItem)"
-                    @keydown.native.left.prevent="prev"
-                    @keydown.native.right.prevent="next"
-                    @keydown.native.up.prevent="prev"
-                    @keydown.native.down.prevent="next"
-                    @keydown.native.home.prevent="homePressed"
-                    @keydown.native.end.prevent="endPressed"
-                    :class="childItem.headerClasses"
-                />
-                <component
-                    v-else
-                    :is="childItem.tag"
-                    @click="childClick(childItem)"
-                    @keydown.left.prevent="prev"
-                    @keydown.right.prevent="next"
-                    @keydown.up.prevent="prev"
-                    @keydown.down.prevent="next"
-                    @keydown.home.prevent="homePressed"
-                    @keydown.end.prevent="endPressed"
-                    :class="childItem.headerClasses">
-                    <o-icon
-                        v-if="childItem.icon"
-                        :rootClass="childItem.headerIconClasses"
-                        :icon="childItem.icon"
-                        :pack="childItem.iconPack"
-                        :size="size"/>
-                    <span :class="childItem.headerTextClasses">{{ childItem.label }}</span>
-                </component>
-            </div>
-            <slot name="end" />
-        </nav>
-        <section :class="contentClasses" role="tabpanel">
-            <slot/>
-        </section>
-    </div>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import TabbedMixin from '../../utils/TabbedMixin.js'
-import { getValueByPath } from '../../utils/helpers'
-import { getOptions } from '../../utils/config'
-
-/**
- * Responsive horizontal navigation tabs, switch between contents with ease
- * @displayName Tabs
- * @requires ./TabItem.vue
- * @example ./examples/Tabs.md
- * @style _tabs.scss
- */
-export default {
-    name: 'OTabs',
-    mixins: [BaseComponentMixin, TabbedMixin('tab')],
-    configField: 'tabs',
-    props: {
-        /**
-         * Tab type
-         * @values boxed, toggle
-         */
-        type: {
-            type: String,
-            default: 'default'
-        },
-         /**
-         * Tabs will be expanded (full-width)
-         */
-        expanded: Boolean,
-        /** Tab will have an animation */
-        animated: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'tabs.animated', true)
-            }
-        },
-        /** Show tab items multiline when there is no space */
-        multiline: Boolean,
-        rootClass: [String, Function, Array],
-        positionClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        verticalClass: [String, Function, Array],
-        multilineClass: [String, Function, Array],
-        navTabsClass: [String, Function, Array],
-        navSizeClass: [String, Function, Array],
-        navPositionClass: [String, Function, Array],
-        navTypeClass: [String, Function, Array],
-        contentClass: [String, Function, Array],
-        transitioningClass: [String, Function, Array],
-        tabItemWrapperClass: [String, Function, Array],
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-tabs'),
-                { [this.computedClass('positionClass', 'o-tabs--', this.position)]: this.position && this.vertical },
-                { [this.computedClass('expandedClass', 'o-tabs--fullwidth')]: this.expanded },
-                { [this.computedClass('verticalClass', 'o-tabs--vertical')]: this.vertical },
-                { [this.computedClass('multilineClass', 'o-tabs--multiline')]: this.multiline }
-            ]
-        },
-        itemWrapperClasses() {
-            return [
-                this.computedClass('tabItemWrapperClass', 'o-tabs__nav-item-wrapper'),
-            ]
-        },
-        navClasses() {
-            return [
-                this.computedClass('navTabsClass', 'o-tabs__nav'),
-                { [this.computedClass('navSizeClass', 'o-tabs__nav--', this.size)]: this.size },
-                { [this.computedClass('navPositionClass', 'o-tabs__nav--', this.position)]: this.position && !this.vertical },
-                { [this.computedClass('navTypeClass', 'o-tabs__nav--', this.type)]: this.type }
-            ]
-        },
-        contentClasses() {
-            return [
-                this.computedClass('contentClass', 'o-tabs__content'),
-                { [this.computedClass('transitioningClass', 'o-tabs__content--transitioning')]: this.isTransitioning }
-            ]
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap b/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap
deleted file mode 100644
index 00394b0f5..000000000
--- a/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTabItem render correctly 1`] = `<div class="o-tab-item__content" id="tab-tab2" style="display: none;"></div>`;
diff --git a/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap b/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap
deleted file mode 100644
index 6d1e9a57f..000000000
--- a/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap
+++ /dev/null
@@ -1,25 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTabs render correctly 1`] = `
-<div class="o-tabs">
-    <nav role="tablist" aria-orientation="horizontal" class="o-tabs__nav o-tabs__nav--default">
-        <div role="tab" aria-controls="tab1-content" aria-selected="true" class="o-tabs__nav-item-wrapper"><button class="o-tabs__nav-item o-tabs__nav-item-default--active o-tabs__nav-item-default">
-                <!----> <span class="o-tabs__nav-item-text"></span>
-            </button></div>
-        <div role="tab" aria-controls="tab2-content" aria-selected="false" class="o-tabs__nav-item-wrapper" style="display: none;"><button class="o-tabs__nav-item o-tabs__nav-item-default">
-                <!----> <span class="o-tabs__nav-item-text"></span>
-            </button></div>
-    </nav>
-    <section role="tabpanel" class="o-tabs__content">
-        <div class="o-tab-item__content" id="tab-tab1"></div>
-        <div class="o-tab-item__content" id="tab-tab2" style="display: none;"></div>
-    </section>
-</div>
-`;
-
-exports[`OTabs still renders if there is no item 1`] = `
-<div class="o-tabs">
-    <nav role="tablist" aria-orientation="horizontal" class="o-tabs__nav o-tabs__nav--default"> </nav>
-    <section role="tabpanel" class="o-tabs__content"></section>
-</div>
-`;
diff --git a/packages/oruga/src/components/tabs/examples/Tabs.md b/packages/oruga/src/components/tabs/examples/Tabs.md
deleted file mode 100644
index 18e951fe8..000000000
--- a/packages/oruga/src/components/tabs/examples/Tabs.md
+++ /dev/null
@@ -1,267 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <p>
-            <o-button @click="activeTab = 1">Set Music</o-button>
-        </p>
-        <p>
-            <o-switch v-model="showBooks"> Show Books item </o-switch>
-            <o-switch v-model="multiline"> Multiline </o-switch>
-        </p>
-        <o-tabs v-model="activeTab" :multiline="multiline">
-            <o-tab-item value="0" label="Pictures">
-                Lorem ipsum dolor sit amet.
-            </o-tab-item>
-
-            <o-tab-item :value="1" label="Music">
-                Lorem <br>
-                ipsum <br>
-                dolor <br>
-                sit <br>
-                amet.
-            </o-tab-item>
-
-            <o-tab-item value="2" :visible="showBooks" label="Books">
-                What light is light, if Silvia be not seen? <br>
-                What joy is joy, if Silvia be not byโ€” <br>
-                Unless it be to think that she is by <br>
-                And feed upon the shadow of perfection? <br>
-                Except I be by Silvia in the night, <br>
-                There is no music in the nightingale.
-            </o-tab-item>
-
-            <o-tab-item value="3" label="Videos" icon="video" disabled>
-                Nunc nec velit nec libero vestibulum eleifend.
-                Curabitur pulvinar congue luctus.
-                Nullam hendrerit iaculis augue vitae ornare.
-                Maecenas vehicula pulvinar tellus, id sodales felis lobortis eget.
-            </o-tab-item>
-        </o-tabs>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                activeTab: "0",
-                showBooks: false,
-                multiline: false
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Custom header
-
-::: demo
-```html
-<template>
-    <o-tabs type="boxed">
-        <o-tab-item>
-            <template slot="header">
-                <o-icon icon="info-circle" rootClass="custom-icon"></o-icon>
-                <span> Issues 3 </span>
-            </template>
-        </o-tab-item>
-        <o-tab-item>
-            <template slot="header">
-                <o-icon icon="retweet" rootClass="custom-icon"></o-icon>
-                <span> Pull Requests {{count}} </span>
-            </template>
-        </o-tab-item>
-    </o-tabs>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            count: 1
-        }
-    },
-    mounted() {
-        setTimeout(() => {
-            this.count++;
-        }, 3 * 1000)
-    }
-}
-</script>
-
-<style>
-.custom-icon {
-  margin-right: 5px;
-}
-</style>
-```
-:::
-
-### Long header
-
-::: demo
-```html
-<template>
-    <o-tabs type="boxed">
-        <o-tab-item v-for="(item, index) in new Array(45)" :key="`longitem-${index}`">
-            <template slot="header">
-                <span>Head {{index}}</span>
-            </template>
-        </o-tab-item>
-    </o-tabs>
-</template>
-<script>
-    export default {
-        data() {
-            return {
-                expanded: false,
-                atRight: false,
-                size: null,
-                type: 'default'
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Vertical
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <div class="control">
-                <o-switch v-model="atRight"> Right position </o-switch>
-            </div>
-            <div class="control">
-                <o-switch v-model="expanded"> Expanded </o-switch>
-            </div>
-            <o-field label="Size">
-                <o-select v-model="size" placeholder="Size">
-                    <option :value="null">Default</option>
-                    <option value="small">Small</option>
-                    <option value="medium">Medium</option>
-                    <option value="large">Large</option>
-                </o-select>
-            </o-field>
-            <o-field label="Type">
-                <o-select v-model="type" placeholder="Type">
-                    <option value="default">Default</option>
-                    <option value="boxed">Boxed</option>
-                    <option value="toggle">Toggle</option>
-                </o-select>
-            </o-field>
-        </o-field>
-
-        <o-tabs :position="atRight ? 'right' : ''"
-                :size="size"
-                :type="type"
-                vertical
-                :expanded="expanded">
-            <o-tab-item label="Pictures" icon="images">
-                Lorem ipsum dolor sit amet. <br>
-                Lorem ipsum dolor sit amet. <br>
-                Lorem ipsum dolor sit amet. <br>
-                Lorem ipsum dolor sit amet. <br>
-                Lorem ipsum dolor sit amet. <br>
-                Lorem ipsum dolor sit amet.
-            </o-tab-item>
-
-            <o-tab-item label="Music" icon="music">
-                What light is light, if Silvia be not seen? <br>
-                What joy is joy, if Silvia be not byโ€” <br>
-                Unless it be to think that she is by <br>
-                And feed upon the shadow of perfection? <br>
-                Except I be by Silvia in the night, <br>
-                There is no music in the nightingale.
-            </o-tab-item>
-
-            <o-tab-item label="Videos" icon="video" disabled>
-                Nunc nec velit nec libero vestibulum eleifend.
-                Curabitur pulvinar congue luctus.
-                Nullam hendrerit iaculis augue vitae ornare.
-                Maecenas vehicula pulvinar tellus, id sodales felis lobortis eget.
-            </o-tab-item>
-        </o-tabs>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                expanded: false,
-                atRight: false,
-                size: null,
-                type: 'default'
-            }
-        }
-    }
-</script>
-```
-:::
-
-
-### Types
-
-::: demo
-```html
-<template>
-    <section>
-        <o-tabs type="boxed">
-            <o-tab-item label="Pictures" icon="images"></o-tab-item>
-            <o-tab-item label="Music" icon="music"></o-tab-item>
-            <o-tab-item label="Videos" icon="video"></o-tab-item>
-        </o-tabs>
-
-        <o-tabs type="toggle">
-            <o-tab-item label="Pictures" icon="images"></o-tab-item>
-            <o-tab-item label="Music" icon="music"></o-tab-item>
-            <o-tab-item label="Videos" icon="video"></o-tab-item>
-        </o-tabs>
-
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Position
-
-::: demo
-```html
-<template>
-    <section>
-        <o-tabs type="boxed" position="centered">
-            <o-tab-item label="Pictures" icon="images"></o-tab-item>
-            <o-tab-item label="Music" icon="music"></o-tab-item>
-            <o-tab-item label="Videos" icon="video"></o-tab-item>
-        </o-tabs>
-
-        <o-tabs type="toggle" position="right">
-            <o-tab-item label="Pictures" icon="images"></o-tab-item>
-            <o-tab-item label="Music" icon="music"></o-tab-item>
-            <o-tab-item label="Videos" icon="video"></o-tab-item>
-        </o-tabs>
-
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/tabs/index.js b/packages/oruga/src/components/tabs/index.js
deleted file mode 100644
index 79d14f51e..000000000
--- a/packages/oruga/src/components/tabs/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Tabs from './Tabs'
-import TabItem from './TabItem'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Tabs)
-        registerComponent(Vue, TabItem)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Tabs as OTabs,
-    TabItem as OTabItem
-}
diff --git a/packages/oruga/src/components/timepicker/Inspector.vue b/packages/oruga/src/components/timepicker/Inspector.vue
deleted file mode 100644
index 377e7a1e7..000000000
--- a/packages/oruga/src/components/timepicker/Inspector.vue
+++ /dev/null
@@ -1,101 +0,0 @@
-<template>
-    <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-field label="Select time">
-                    <o-timepicker v-bind="s" placeholder="Click to select..." ref="timepicker">
-                        <div>This is the footer</div>
-                    </o-timepicker>
-                </o-field>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    methods: {
-        openTimePicker() {
-            setTimeout(() => {
-                this.$refs.timepicker.$el.getElementsByClassName('o-drop__trigger')[0].click()
-            }, 500)
-        }
-    },
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Class of the root element",
-                },
-                {
-                    class: "sizeClass",
-                    description: "Class of the Timepicker component size",
-                    properties: ["size"],
-                    suffixes: ['small', 'medium', 'large'],
-                    action: (cmp) => {
-                        cmp.data.size = 'large';
-                        this.openTimePicker();
-                    },
-                },
-                {
-                    class: "boxClass",
-                    description: "Class of the Timepicker component box where you choose the date",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "separatorClass",
-                    description: "Class of the Timepicker separator",
-                    action: () => {
-                        this.openTimePicker();
-                    },
-                },
-                {
-                    class: "footerClass",
-                    description: "Class of the Timepicker footer",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "mobileClass",
-                    description: "Class of the Table when on mobile",
-                    warning: "Switch to mobile view to see it in action!"
-                },
-                {
-                    class: "inputClasses",
-                    realClass: "inputClasses.rootClass",
-                    description: "Classes to apply on internal input.",
-                    componentRef: "Input"
-                },
-                {
-                    class: "dropdownClasses",
-                    realClass: "dropdownClasses.rootClass",
-                    description: "Classes to apply on dropdown.",
-                    componentRef: "Dropdown",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-                {
-                    class: "selectClasses",
-                    realClass: "selectClasses.selectClass",
-                    description: "Classes to apply on select.",
-                    componentRef: "Select",
-                    action: () => {
-                        this.openTimePicker();
-                    }
-                },
-            ],
-        };
-    }
-}
-</script>
-<style>
-.datepicker__table {
-    border-collapse: collapse;
-}
-</style>
diff --git a/packages/oruga/src/components/timepicker/Timepicker.spec.js b/packages/oruga/src/components/timepicker/Timepicker.spec.js
deleted file mode 100644
index ad023d370..000000000
--- a/packages/oruga/src/components/timepicker/Timepicker.spec.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OTimepicker from '@components/timepicker/Timepicker'
-
-let wrapper
-
-describe('Timepicker', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OTimepicker)
-    })
-
-    it('is called', () => {
-        expect(wrapper.name()).toBe('OTimepicker')
-        expect(wrapper.isVueInstance()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-
-    // https://github.com/vuejs/vue-test-utils/issues/738#issuecomment-674988368
-    it('returns "1" for nativeStep if enableSeconds is true', async () => {
-        expect(wrapper.vm.nativeStep).toBeNull()
-        wrapper = shallowMount(
-            OTimepicker, {
-                propsData: { enableSeconds: true }
-            }
-        )
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.nativeStep).toBe('1')
-    })
-
-
-    // it('disables hour if no selectable minutes available', async () => {
-    //     wrapper.setProps({
-    //         minTime: new Date(2019, 8, 22, 11, 55),
-    //         incrementMinutes: 10
-    //     })
-    //     await wrapper.vm.$nextTick()
-    //     expect(wrapper.find('option[value="11"]').attributes()['disabled']).toBe('disabled')
-    //     expect(wrapper.find('option[value="12"]').attributes()['disabled']).not.toBe('disabled')
-    // })
-
-})
diff --git a/packages/oruga/src/components/timepicker/Timepicker.vue b/packages/oruga/src/components/timepicker/Timepicker.vue
deleted file mode 100644
index fc96997d3..000000000
--- a/packages/oruga/src/components/timepicker/Timepicker.vue
+++ /dev/null
@@ -1,246 +0,0 @@
-<template>
-    <div :class="rootClasses">
-        <o-dropdown
-            v-if="!isMobile || inline"
-            ref="dropdown"
-            v-bind="dropdownBind"
-            :position="position"
-            :disabled="disabled"
-            :inline="inline"
-            :append-to-body="appendToBody"
-            append-to-body-copy-parent
-            @active-change="onActiveChange">
-            <template #trigger v-if="!inline">
-                <slot name="trigger">
-                    <o-input
-                        ref="input"
-                        v-bind="inputBind"
-                        autocomplete="off"
-                        :value="formatValue(computedValue)"
-                        :placeholder="placeholder"
-                        :size="size"
-                        :icon="icon"
-                        :icon-pack="iconPack"
-                        :disabled="disabled"
-                        :readonly="!editable"
-                        :rounded="rounded"
-                        :use-html5-validation="useHtml5Validation"
-                        @keyup.native.enter="toggle(true)"
-                        @change.native="onChange($event.target.value)"
-                        @focus="handleOnFocus"/>
-                </slot>
-            </template>
-
-            <o-dropdown-item
-                override
-                tag="div"
-                :item-class="boxClasses"
-                :disabled="disabled"
-                :clickable="false">
-
-                <o-select
-                    override
-                    v-bind="selectBind"
-                    v-model="hoursSelected"
-                    @change.native="onHoursChange($event.target.value)"
-                    :disabled="disabled"
-                    placeholder="00">
-                    <option
-                        v-for="hour in hours"
-                        :value="hour.value"
-                        :key="hour.value"
-                        :disabled="isHourDisabled(hour.value)">
-                        {{ hour.label }}
-                    </option>
-                </o-select>
-                <span :class="separatorClasses">{{ hourLiteral }}</span>
-                <o-select
-                    override
-                    v-bind="selectBind"
-                    v-model="minutesSelected"
-                    @change.native="onMinutesChange($event.target.value)"
-                    :disabled="disabled"
-                    placeholder="00">
-                    <option
-                        v-for="minute in minutes"
-                        :value="minute.value"
-                        :key="minute.value"
-                        :disabled="isMinuteDisabled(minute.value)">
-                        {{ minute.label }}
-                    </option>
-                </o-select>
-                <template v-if="enableSeconds">
-                    <span :class="separatorClasses">{{ minuteLiteral }}</span>
-                    <o-select
-                        override
-                        v-bind="selectBind"
-                        v-model="secondsSelected"
-                        @change.native="onSecondsChange($event.target.value)"
-                        :disabled="disabled"
-                        placeholder="00">
-                        <option
-                            v-for="second in seconds"
-                            :value="second.value"
-                            :key="second.value"
-                            :disabled="isSecondDisabled(second.value)">
-                            {{ second.label }}
-                        </option>
-                    </o-select>
-                    <span :class="separatorClasses">{{ secondLiteral }}</span>
-                </template>
-                <o-select
-                    override
-                    v-bind="selectBind"
-                    v-model="meridienSelected"
-                    @change.native="onMeridienChange($event.target.value)"
-                    v-if="!isHourFormat24"
-                    :disabled="disabled">
-                    <option
-                        v-for="meridien in meridiens"
-                        :value="meridien"
-                        :key="meridien"
-                        :disabled="isMeridienDisabled(meridien)">
-                        {{ meridien }}
-                    </option>
-                </o-select>
-
-                <footer
-                    v-if="$slots.default !== undefined"
-                    :class="footerClasses">
-                    <slot/>
-                </footer>
-            </o-dropdown-item>
-        </o-dropdown>
-
-        <o-input
-            v-else
-            ref="input"
-            v-bind="inputBind"
-            type="time"
-            :step="nativeStep"
-            autocomplete="off"
-            :value="formatHHMMSS(computedValue)"
-            :placeholder="placeholder"
-            :size="size"
-            :icon="icon"
-            :icon-pack="iconPack"
-            :rounded="rounded"
-            :max="formatHHMMSS(maxTime)"
-            :min="formatHHMMSS(minTime)"
-            :disabled="disabled"
-            :readonly="false"
-            :use-html5-validation="useHtml5Validation"
-            @change.native="onChange($event.target.value)"
-            @focus="handleOnFocus"
-            @blur="onBlur() && checkHtml5Validity()"
-            @invalid="onInvalid" />
-    </div>
-</template>
-
-<script>
-import Dropdown from '../dropdown/Dropdown'
-import DropdownItem from '../dropdown/DropdownItem'
-import Input from '../input/Input'
-import Select from '../select/Select'
-import Icon from '../icon/Icon'
-
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import TimepickerMixin from '../../utils/TimepickerMixin'
-import MatchMediaMixin from '../../utils/MatchMediaMixin'
-
-import { getOptions } from '../../utils/config'
-import { getValueByPath } from '../../utils/helpers'
-
-/**
- * An input with a simple dropdown/modal for selecting a time, uses native timepicker for mobile
- * @displayName Timepicker
- * @example ./examples/Timepicker.md
- * @style _timepicker.scss
- */
-export default {
-    name: 'OTimepicker',
-    components: {
-        [Input.name]: Input,
-        [Select.name]: Select,
-        [Icon.name]: Icon,
-        [Dropdown.name]: Dropdown,
-        [DropdownItem.name]: DropdownItem
-    },
-    configField: 'timepicker',
-    mixins: [BaseComponentMixin, TimepickerMixin, MatchMediaMixin],
-    inheritAttrs: false,
-    props: {
-        rootClass: [String, Function, Array],
-        sizeClass: [String, Function, Array],
-        boxClass: [String, Function, Array],
-        separatorClass: [String, Function, Array],
-        footerClass: [String, Function, Array],
-        mobileClass: [String, Function, Array],
-        inputClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'timepicker.inputClasses', {})
-            }
-        },
-        dropdownClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'timepicker.dropdownClasses', {})
-            }
-        },
-        selectClasses: {
-            type: Object,
-            default: () => {
-                return getValueByPath(getOptions(), 'timepicker.selectClasses', {})
-            }
-        }
-    },
-    computed: {
-        inputBind() {
-            return {
-                ...this.$attrs,
-                ...this.inputClasses
-            }
-        },
-        dropdownBind() {
-            return {
-                'root-class': this.computedClass('dropdownClasses.rootClass', 'o-tpck__dropdown'),
-                ...this.dropdownClasses
-            }
-        },
-        selectBind() {
-            return {
-                'select-class': this.computedClass('selectClasses.selectClass', 'o-tpck__select'),
-                'placeholder-class': this.computedClass('selectClasses.placeholderClass', 'o-tpck__select-placeholder'),
-                ...this.selectClasses
-            }
-        },
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-tpck'),
-                { [this.computedClass('sizeClass', 'o-tpck--', this.size)]: this.size },
-                { [this.computedClass('mobileClass', 'o-tpck--mobile')]: this.isMatchMedia },
-            ]
-        },
-        boxClasses() {
-            return [
-                this.computedClass('boxClass', 'o-tpck__box')
-            ]
-        },
-        separatorClasses() {
-            return [
-                this.computedClass('separatorClass', 'o-tpck__separator')
-            ]
-        },
-        footerClasses() {
-            return [
-                this.computedClass('footerClass', 'o-tpck__footer')
-            ]
-        },
-        nativeStep() {
-            if (this.enableSeconds) return '1'
-            return null
-        },
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap b/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap
deleted file mode 100644
index 1593faa56..000000000
--- a/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap
+++ /dev/null
@@ -1,240 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Timepicker render correctly 1`] = `
-<div class="o-tpck">
-    <o-dropdown-stub maxheight="200" mobilemodal="true" animation="fade" trapfocus="true" closeonclick="true" canclose="true" triggers="click" menutag="div" appendtobodycopyparent="true" rootclass="o-tpck__dropdown">
-        <o-dropdown-item-stub override="true" tag="div" tabindex="0" ariarole="" itemclass="o-tpck__box">
-            <o-select-stub override="true" usehtml5validation="true" statusicon="true" placeholder="00" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder">
-                <option value="1">
-                    1
-                </option>
-                <option value="2">
-                    2
-                </option>
-                <option value="3">
-                    3
-                </option>
-                <option value="4">
-                    4
-                </option>
-                <option value="5">
-                    5
-                </option>
-                <option value="6">
-                    6
-                </option>
-                <option value="7">
-                    7
-                </option>
-                <option value="8">
-                    8
-                </option>
-                <option value="9">
-                    9
-                </option>
-                <option value="10">
-                    10
-                </option>
-                <option value="11">
-                    11
-                </option>
-                <option value="0">
-                    12
-                </option>
-            </o-select-stub> <span class="o-tpck__separator">:</span>
-            <o-select-stub override="true" usehtml5validation="true" statusicon="true" placeholder="00" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder">
-                <option value="0">
-                    00
-                </option>
-                <option value="1">
-                    01
-                </option>
-                <option value="2">
-                    02
-                </option>
-                <option value="3">
-                    03
-                </option>
-                <option value="4">
-                    04
-                </option>
-                <option value="5">
-                    05
-                </option>
-                <option value="6">
-                    06
-                </option>
-                <option value="7">
-                    07
-                </option>
-                <option value="8">
-                    08
-                </option>
-                <option value="9">
-                    09
-                </option>
-                <option value="10">
-                    10
-                </option>
-                <option value="11">
-                    11
-                </option>
-                <option value="12">
-                    12
-                </option>
-                <option value="13">
-                    13
-                </option>
-                <option value="14">
-                    14
-                </option>
-                <option value="15">
-                    15
-                </option>
-                <option value="16">
-                    16
-                </option>
-                <option value="17">
-                    17
-                </option>
-                <option value="18">
-                    18
-                </option>
-                <option value="19">
-                    19
-                </option>
-                <option value="20">
-                    20
-                </option>
-                <option value="21">
-                    21
-                </option>
-                <option value="22">
-                    22
-                </option>
-                <option value="23">
-                    23
-                </option>
-                <option value="24">
-                    24
-                </option>
-                <option value="25">
-                    25
-                </option>
-                <option value="26">
-                    26
-                </option>
-                <option value="27">
-                    27
-                </option>
-                <option value="28">
-                    28
-                </option>
-                <option value="29">
-                    29
-                </option>
-                <option value="30">
-                    30
-                </option>
-                <option value="31">
-                    31
-                </option>
-                <option value="32">
-                    32
-                </option>
-                <option value="33">
-                    33
-                </option>
-                <option value="34">
-                    34
-                </option>
-                <option value="35">
-                    35
-                </option>
-                <option value="36">
-                    36
-                </option>
-                <option value="37">
-                    37
-                </option>
-                <option value="38">
-                    38
-                </option>
-                <option value="39">
-                    39
-                </option>
-                <option value="40">
-                    40
-                </option>
-                <option value="41">
-                    41
-                </option>
-                <option value="42">
-                    42
-                </option>
-                <option value="43">
-                    43
-                </option>
-                <option value="44">
-                    44
-                </option>
-                <option value="45">
-                    45
-                </option>
-                <option value="46">
-                    46
-                </option>
-                <option value="47">
-                    47
-                </option>
-                <option value="48">
-                    48
-                </option>
-                <option value="49">
-                    49
-                </option>
-                <option value="50">
-                    50
-                </option>
-                <option value="51">
-                    51
-                </option>
-                <option value="52">
-                    52
-                </option>
-                <option value="53">
-                    53
-                </option>
-                <option value="54">
-                    54
-                </option>
-                <option value="55">
-                    55
-                </option>
-                <option value="56">
-                    56
-                </option>
-                <option value="57">
-                    57
-                </option>
-                <option value="58">
-                    58
-                </option>
-                <option value="59">
-                    59
-                </option>
-            </o-select-stub>
-            <!---->
-            <o-select-stub override="true" usehtml5validation="true" statusicon="true" value="AM" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder">
-                <option value="AM">
-                    AM
-                </option>
-                <option value="PM">
-                    PM
-                </option>
-            </o-select-stub>
-            <!---->
-        </o-dropdown-item-stub>
-    </o-dropdown-stub>
-</div>
-`;
diff --git a/packages/oruga/src/components/timepicker/examples/Timepicker.md b/packages/oruga/src/components/timepicker/examples/Timepicker.md
deleted file mode 100644
index a2b173573..000000000
--- a/packages/oruga/src/components/timepicker/examples/Timepicker.md
+++ /dev/null
@@ -1,180 +0,0 @@
-
-## Examples
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field grouped group-multiline>
-            <div class="control">
-                <o-switch v-model="enableSeconds">Enable seconds</o-switch>
-            </div>
-            <o-field label="Locale">
-                <o-select v-model="locale">
-                    <option :value="undefined"></option>
-                    <option value="de-DE">de-DE</option>
-                    <option value="en-CA">en-CA</option>
-                    <option value="en-GB">en-GB</option>
-                    <option value="en-US">en-US</option>
-                    <option value="es-ES">es-ES</option>
-                    <option value="es-MX">es-MX</option>
-                    <option value="fr-CA">fr-CA</option>
-                    <option value="fr-FR">fr-FR</option>
-                    <option value="it-IT">it-IT</option>
-                    <option value="ja-JP">ja-JP</option>
-                    <option value="pt-BR">pt-BR</option>
-                    <option value="ru-RU">ru-RU</option>
-                    <option value="zn-CN">zn-CN</option>
-                </o-select>
-            </o-field>
-            <o-field label="Hour format">
-                <o-select v-model="hourFormat">
-                    <option :value="undefined"></option>
-                    <option value="12">12</option>
-                    <option value="24">24</option>
-                </o-select>
-            </o-field>
-        </o-field>
-        <o-field label="Select time">
-            <o-timepicker
-                rounded
-                placeholder="Click to select..."
-                icon="clock"
-                :enable-seconds="enableSeconds"
-                :hour-format="hourFormat"
-                :locale="locale">
-            </o-timepicker>
-        </o-field>
-    </section>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            hourFormat: undefined, // Browser locale
-            enableSeconds: false,
-            locale: undefined // Browser locale
-        }
-    }
-}
-</script>
-```
-:::
-
-### Min/Max date
-
-::: demo
-```html
-<template>
-    <o-field label="Select time">
-        <o-timepicker
-            placeholder="Click to select..."
-            :min-time="minTime"
-            :max-time="maxTime">
-        </o-timepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            const min = new Date()
-            min.setHours(9)
-            min.setMinutes(0)
-            const max = new Date()
-            max.setHours(18)
-            max.setMinutes(0)
-            return {
-                minTime: min,
-                maxTime: max
-            }
-        }
-    }
-</script>
-```
-:::
-
-
-### Footer
-
-::: demo
-```html
-<template>
-    <o-field label="Select time">
-        <o-timepicker v-model="time"
-            placeholder="Click to select...">
-
-            <o-button
-                label="Now"
-                variant="primary"
-                icon-left="clock"
-                @click="time = new Date()" />
-            <o-button
-                label="Clear"
-                variant="danger"
-                icon-left="times"
-                outlined
-                @click="time = null" />
-        </o-timepicker>
-    </o-field>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                time: new Date()
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Granularity
-
-::: demo
-```html
-<template>
-    <o-field label="Select timepicker">
-        <o-timepicker
-            placeholder="Click to select"
-            icon="clock"
-            :incrementMinutes="minutesGranularity"
-            :incrementHours="hoursGranularity">
-        </o-timepicker>
-    </o-field>
-</template>
-<script>
-export default {
-    data() {
-        return {
-            minutesGranularity: 15,
-            hoursGranularity: 2
-        }
-    }
-}
-</script>
-```
-:::
-
-### Inline
-
-::: demo
-```html
-<template>
-    <o-timepicker v-model="time" inline></o-timepicker>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                time: new Date()
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/timepicker/index.js b/packages/oruga/src/components/timepicker/index.js
deleted file mode 100644
index bf38cea47..000000000
--- a/packages/oruga/src/components/timepicker/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Timepicker from './Timepicker'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Timepicker)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Timepicker as BTimepicker
-}
diff --git a/packages/oruga/src/components/tooltip/Inspector.vue b/packages/oruga/src/components/tooltip/Inspector.vue
deleted file mode 100644
index 492eb4b15..000000000
--- a/packages/oruga/src/components/tooltip/Inspector.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <o-tooltip v-bind="s" label="Tooltip!" always>
-                    <o-button>
-                        Delayed
-                    </o-button>
-                </o-tooltip>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "contentClass",
-                    description: "Class of the tooltip content",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "triggerClass",
-                    description: "Class of the tooltip trigger",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "multilineClass",
-                    description: "Class of the tooltip content when is multiline",
-                    action: (cmp) => {
-                        cmp.data.multiline = true
-                    }
-                },
-                {
-                    class: "arrowClass",
-                    description: "Class of the tooltip arrow",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "arrowOrderClass",
-                    description: "Class of the tooltip arrow when its position changes",
-                    properties: ['position'],
-                    suffixes: ['top', 'bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "orderClass",
-                    description: "Class of the tooltip trigger when its position changes",
-                    properties: ['position'],
-                    suffixes: ['top', 'bottom', 'left', 'right'],
-                    action: (cmp) => {
-                        cmp.data.position = 'right'
-                    }
-                },
-                {
-                    class: "alwaysClass",
-                    description: "Class of the tooltip trigger when is always visible",
-                    action: () => {
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the tooltip variant',
-                    properties: ["variant"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/tooltip/Tooltip.spec.js b/packages/oruga/src/components/tooltip/Tooltip.spec.js
deleted file mode 100644
index 9ad47ed29..000000000
--- a/packages/oruga/src/components/tooltip/Tooltip.spec.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OTooltip from '@components/tooltip/Tooltip'
-
-let wrapper
-
-describe('OTooltip', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OTooltip)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/tooltip/Tooltip.vue b/packages/oruga/src/components/tooltip/Tooltip.vue
deleted file mode 100644
index a2c172f9f..000000000
--- a/packages/oruga/src/components/tooltip/Tooltip.vue
+++ /dev/null
@@ -1,390 +0,0 @@
-<template>
-    <div
-        ref="tooltip"
-        :class="rootClasses">
-        <transition
-            :name="newAnimation"
-            @after-leave="metrics = null"
-            @enter-cancelled="metrics = null">
-            <div
-                v-show="active && (isActive || always)"
-                ref="content"
-                :class="contentClasses">
-                <span :class="arrowClasses"></span>
-                <template v-if="label">{{ label }}</template>
-                <template v-else-if="$slots.default">
-                    <slot name="content" />
-                </template>
-            </div>
-        </transition>
-        <div
-            ref="trigger"
-            :class="triggerClasses"
-            :style="triggerStyle"
-            @click="onClick"
-            @contextmenu="onContextMenu"
-            @mouseenter="onHover"
-            @focus.capture="onFocus"
-            @blur.capture="close"
-            @mouseleave="close">
-            <slot ref="slot" />
-        </div>
-    </div>
-</template>
-
-<script>
-import { getOptions } from '../../utils/config'
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import { createAbsoluteElement, removeElement, getValueByPath, isWebKit } from '../../utils/helpers'
-
-const opposites = {
-    top: 'bottom',
-    bottom: 'top',
-    right: 'left',
-    left: 'right',
-}
-
-function intersectionArea(a, b) {
-  const left = Math.max(a.left, b.left)
-  const right = Math.min(a.right, b.right)
-  const top = Math.max(a.top, b.top)
-  const bottom = Math.min(a.bottom, b.bottom)
-  return Math.max(right - left, 0) * Math.max(bottom - top, 0)
-}
-
-/**
- * @param rect the bounding rectangle of the trigger element
- * @return the "anchor points" (points where the arrow attaches) for each side of the tooltip
- */
-const anchors = rect => ({
-  top: { x: (rect.left + rect.right) * 0.5, y: rect.top },
-  bottom: { x: (rect.left + rect.right) * 0.5, y: rect.bottom },
-  left: { x: rect.left, y: (rect.top + rect.bottom) * 0.5 },
-  right: { x: rect.right, y: (rect.top + rect.bottom) * 0.5 },
-})
-
-/**
- * Display a brief helper text to your user
- * @displayName Tooltip
- * @example ./examples/Tooltip.md
- * @style _tooltip.scss
- */
-export default {
-    name: 'OTooltip',
-    mixins: [BaseComponentMixin],
-    configField: 'tooltip',
-    props: {
-        /** Whether tooltip is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */
-        active: {
-            type: Boolean,
-            default: true
-        },
-        /** Tooltip text */
-        label: String,
-        /** Tooltip delay before it appears (number in ms) */
-        delay: Number,
-        /**
-         * Tooltip position in relation to the element
-         * @values top, bottom, left, right
-         */
-        position: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'tooltip.position', 'top') },
-            validator(value) {
-                return [
-                    'top',
-                    'bottom',
-                    'left',
-                    'right',
-                    'auto',
-                ].indexOf(value) > -1
-            }
-        },
-        /**
-         * Tooltip trigger events
-         * @values hover, click, focus, contextmenu
-         */
-        triggers: {
-            type: Array,
-            default: () => { return getValueByPath(getOptions(), 'tooltip.triggers', ['hover']) }
-        },
-        /** Tooltip will be always active */
-        always: Boolean,
-        /** Tooltip will have an animation */
-        animated: {
-            type: Boolean,
-            default: true
-        },
-        /** Tooltip default animation */
-        animation: {
-            type: String,
-            default: () => { return getValueByPath(getOptions(), 'tooltip.animation', 'fade') }
-        },
-        /**
-         * Tooltip auto close options
-         * @values true, false, 'inside', 'outside'
-         */
-        autoClose: {
-            type: [Array, Boolean],
-            default: true
-        },
-        /** Tooltip will be multilined */
-        multiline: Boolean,
-        /** Append tooltip content to body */
-        appendToBody: Boolean,
-        /**
-        * Color of the tooltip
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: [String, Function, Array],
-        rootClass: [String, Function, Array],
-        contentClass: [String, Function, Array],
-        orderClass: [String, Function, Array],
-        triggerClass: [String, Function, Array],
-        multilineClass: [String, Function, Array],
-        alwaysClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        arrowClass: [String, Function, Array],
-        arrowOrderClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            isActive: false,
-            triggerStyle: {},
-            bodyEl: undefined, // Used to append to body
-            metrics: null, // Used for automatic tooltip positioning
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-tip')
-            ]
-        },
-        triggerClasses() {
-            return [
-                this.computedClass('triggerClass', 'o-tip__trigger'),
-            ]
-        },
-        arrowClasses() {
-            return [
-                this.computedClass('arrowClass', 'o-tip__arrow'),
-                { [this.computedClass('arrowOrderClass', 'o-tip__arrow--', this.newPosition)]: this.newPosition },
-                { [this.computedClass('variantArrowClass', 'o-tip__arrow--', this.variant)]: this.variant },
-            ]
-        },
-        contentClasses() {
-            return [
-                this.computedClass('contentClass', 'o-tip__content'),
-                { [this.computedClass('orderClass', 'o-tip__content--', this.newPosition)]: this.newPosition },
-                { [this.computedClass('variantClass', 'o-tip__content--', this.variant)]: this.variant },
-                { [this.computedClass('multilineClass', 'o-tip__content--multiline')]: this.multiline },
-                { [this.computedClass('alwaysClass', 'o-tip__content--always')]: this.always }
-            ]
-        },
-        newAnimation() {
-            return this.animated ? this.animation : undefined
-        },
-        newPosition() {
-            if (this.position !== 'auto') {
-                return this.position
-            }
-            const defaultPosition = getValueByPath(getOptions(), 'tooltip.position', 'top')
-            let bestPosition = defaultPosition
-            if (this.metrics != null) {
-                let viewRect;
-                const viewport = window.visualViewport;
-                if (viewport != undefined) {
-                    if (isWebKit()) {
-                        // On WebKit, getBoundingClientRect offsets relative to the the visual viewport's origin, not the layout viewport's.
-                        // See https://bugs.webkit.org/show_bug.cgi?id=170981
-                        viewRect = new DOMRect(0, 0, viewport.width, viewport.height);
-                    } else {
-                        viewRect = new DOMRect(viewport.offsetLeft, viewport.offsetTop, viewport.width, viewport.height);
-                    }
-                } else {
-                    viewRect = new DOMRect(0, 0, document.documentElement.clientWidth, document.documentElement.clientHeight)
-                }
-                const triggerAnchors = anchors(this.metrics.trigger)
-                const contentRect = this.metrics.content
-                const contentAnchors = anchors(contentRect)
-                const contentRectAtAnchor = pos => {
-                    const triggerAnchor = triggerAnchors[pos]
-                    const contentAnchor = contentAnchors[opposites[pos]]
-                    // Translates contentRect so contentAnchor is on top of triggerAnchor
-                    // NOTE: this doesn't account for the extra offset that the tooltip arrow provides.
-                    // That offset should be small, and it's tricky to get it from the CSS.
-                    return new DOMRect(
-                    contentRect.x + (triggerAnchor.x - contentAnchor.x),
-                    contentRect.y + (triggerAnchor.y - contentAnchor.y),
-                    contentRect.width,
-                    contentRect.height,
-                    )
-                }
-                const defaultOpposite = opposites[defaultPosition]
-                const crossPosition = (defaultPosition === 'top' || defaultPosition === 'bottom') ? 'left' : 'top'
-                const crossOpposite = opposites[crossPosition]
-                // In descending order of priority
-                const positions = [defaultPosition, defaultOpposite, crossPosition, crossOpposite]
-                let maxOverlap = 0
-                for (const position of positions) {
-                    const overlap = intersectionArea(viewRect, contentRectAtAnchor(position))
-                    if (overlap > maxOverlap) {
-                        maxOverlap = overlap
-                        bestPosition = position
-                    }
-                }
-            }
-            return bestPosition
-        },
-    },
-    watch: {
-        isActive(value) {
-            this.$emit(value ? 'open' : 'close')
-            if (value && this.position === 'auto') {
-                this.$nextTick(() => {
-                    this.metrics = {
-                        content: this.$refs.content.getBoundingClientRect(),
-                        trigger: this.$refs.trigger.getBoundingClientRect(),
-                    }
-                })
-            }
-            if (value && this.appendToBody) {
-                this.updateAppendToBody()
-            }
-        }
-    },
-    methods: {
-        updateAppendToBody() {
-            const tooltip = this.$refs.tooltip
-            const trigger = this.$refs.trigger
-            if (tooltip && trigger) {
-                // update wrapper tooltip
-                const tooltipEl = this.$data.bodyEl.children[0]
-                tooltipEl.classList.forEach((item) => tooltipEl.classList.remove(...item.split(' ')))
-                if (this.$vnode && this.$vnode.data && this.$vnode.data.staticClass) {
-                    tooltipEl.classList.add(this.$vnode.data.staticClass)
-                }
-                this.rootClasses.forEach((item) => {
-                    if (typeof item === 'object') {
-                        Object.keys(item).filter(key => key && item[key]).forEach(
-                            key => tooltipEl.classList.add(key))
-                    } else {
-                        tooltipEl.classList.add(...item.split(' '))
-                    }
-                })
-                tooltipEl.style.width = `${trigger.clientWidth}px`
-                tooltipEl.style.height = `${trigger.clientHeight}px`
-                const rect = trigger.getBoundingClientRect()
-                const top = rect.top + window.scrollY
-                const left = rect.left + window.scrollX
-                const wrapper = this.$data.bodyEl
-                wrapper.style.position = 'absolute'
-                wrapper.style.top = `${top}px`
-                wrapper.style.left = `${left}px`
-                wrapper.style.zIndex = this.isActive || this.always ? '99' : '-1'
-                this.triggerStyle = { zIndex: this.isActive || this.always ? '100' : undefined }
-            }
-        },
-        onClick() {
-            if (this.triggers.indexOf('click') < 0) return
-            // if not active, toggle after clickOutside event
-            // this fixes toggling programmatic
-            this.$nextTick(() => {
-                setTimeout(() => this.open())
-            })
-        },
-        onHover() {
-            if (this.triggers.indexOf('hover') < 0) return
-            this.open()
-        },
-        onFocus() {
-            if (this.triggers.indexOf('focus') < 0) return
-            this.open()
-        },
-        onContextMenu(event) {
-            if (this.triggers.indexOf('contextmenu') < 0) return
-            event.preventDefault()
-            this.open()
-        },
-        open() {
-            if (this.delay) {
-                this.timer = setTimeout(() => {
-                    this.isActive = true
-                    this.timer = null
-                }, this.delay)
-            } else {
-                this.isActive = true
-            }
-        },
-        close() {
-            if (typeof this.autoClose === 'boolean') {
-                this.isActive = !this.autoClose
-            }
-            if (this.autoClose && this.timer) clearTimeout(this.timer)
-        },
-        /**
-        * Close tooltip if clicked outside.
-        */
-        clickedOutside(event) {
-            if (this.isActive) {
-                if (Array.isArray(this.autoClose)) {
-                    if (this.autoClose.indexOf('outside') >= 0) {
-                        if (!this.isInWhiteList(event.target)) this.isActive = false
-                    }
-                    if (this.autoClose.indexOf('inside') >= 0) {
-                        if (this.isInWhiteList(event.target)) this.isActive = false
-                    }
-                }
-            }
-        },
-        /**
-         * Keypress event that is bound to the document
-         */
-        keyPress({ key }) {
-            if (this.isActive && (key === 'Escape' || key === 'Esc')) {
-                if (Array.isArray(this.autoClose)) {
-                    if (this.autoClose.indexOf('escape') >= 0) this.isActive = false
-                }
-            }
-        },
-        /**
-        * White-listed items to not close when clicked.
-        */
-        isInWhiteList(el) {
-            if (el === this.$refs.content) return true
-            // All chidren from content
-            if (this.$refs.content !== undefined) {
-                const children = this.$refs.content.querySelectorAll('*')
-                for (const child of children) {
-                    if (el === child) {
-                        return true
-                    }
-                }
-            }
-            return false
-        }
-    },
-    mounted() {
-        if (this.appendToBody) {
-            this.$data.bodyEl = createAbsoluteElement(this.$refs.content)
-            this.updateAppendToBody()
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('click', this.clickedOutside)
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('click', this.clickedOutside)
-            document.removeEventListener('keyup', this.keyPress)
-        }
-        if (this.appendToBody) {
-            removeElement(this.$data.bodyEl)
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap b/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap
deleted file mode 100644
index 2189fd4af..000000000
--- a/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap
+++ /dev/null
@@ -1,12 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OTooltip render correctly 1`] = `
-<div class="o-tip">
-    <transition-stub name="fade">
-        <div class="o-tip__content o-tip__content--top" style="display: none;"><span class="o-tip__arrow o-tip__arrow--top"></span>
-            <!---->
-        </div>
-    </transition-stub>
-    <div class="o-tip__trigger"></div>
-</div>
-`;
diff --git a/packages/oruga/src/components/tooltip/examples/Tooltip.md b/packages/oruga/src/components/tooltip/examples/Tooltip.md
deleted file mode 100644
index 488622100..000000000
--- a/packages/oruga/src/components/tooltip/examples/Tooltip.md
+++ /dev/null
@@ -1,168 +0,0 @@
-
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <section>
-        <o-tooltip label="Tooltip right"
-            position="right">
-            <o-button>
-                Right
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip label="Tooltip top">
-            <o-button>
-                Top (default)
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip label="Tooltip bottom"
-            position="bottom">
-            <o-button>
-                Bottom
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip label="Tooltip left"
-            position="left">
-            <o-button>
-                Left
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip label="delayed by 1000ms"
-            :delay="1000">
-            <o-button variant="warning">
-                Delayed
-            </o-button>
-        </o-tooltip>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Multiline
-
-::: demo
-```html
-<template>
-    <section>
-        <o-tooltip
-            label="Tooltip multiline, probably because it's too long for a casual tooltip"
-            multiline>
-            <o-button>
-                Multiline (default)
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip
-            label="It's not brief, but it's also not long"
-            size="small"
-            multiline>
-            <o-button>
-                Multiline (small)
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip
-            label="Tooltip large multiline, because it's too long to be on a medium size. Did I tell you it's really long? Yes, it is โ€” I assure you!"
-            position="bottom"
-            size="large"
-            multiline>
-            <o-button>
-                Multiline (large)
-            </o-button>
-        </o-tooltip>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Slot
-
-::: demo
-```html
-<template>
-    <section>
-        <o-tooltip position="bottom" multiline>
-            <o-button>Html Content</o-button>
-            <template v-slot:content>
-                <b>Lorem ipsum dolor sit amet</b>, consectetur warning elit. <i>Fusce id fermentum quam</i>.
-            </template>
-        </o-tooltip>
-
-        <o-tooltip variant="primary" :triggers="['click']" :auto-close="['outside', 'escape']">
-            <template v-slot:content>
-                <o-icon icon="heart" variant="danger"></o-icon>
-                <o-icon icon="thumbs-up" variant="info"></o-icon>
-                <o-icon icon="thumbs-down" variant="warning"></o-icon>
-                <o-icon icon="smile-beam"></o-icon>
-            </template>
-            <o-button>Action</o-button>
-        </o-tooltip>
-    </section>
-</template>
-
-<script>
-    export default {
-    }
-</script>
-```
-:::
-
-### Toggle
-
-::: demo
-```html
-<template>
-    <section>
-        <o-button
-            @click="active = !active">
-            Toggle
-        </o-button>
-
-        <hr>
-
-        <o-tooltip label="I'm never closing"
-            :active="active"
-            always>
-            <o-button>
-                Always
-            </o-button>
-        </o-tooltip>
-
-        <o-tooltip label="Tooltip right"
-            position="right"
-            :active="active">
-            <o-button>
-                Right
-            </o-button>
-        </o-tooltip>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                active: true
-            }
-        }
-    }
-</script>
-```
-:::
diff --git a/packages/oruga/src/components/tooltip/index.js b/packages/oruga/src/components/tooltip/index.js
deleted file mode 100644
index 97d2a3f9b..000000000
--- a/packages/oruga/src/components/tooltip/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Tooltip from './Tooltip'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Tooltip)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Tooltip as OTooltip
-}
diff --git a/packages/oruga/src/components/upload/Inspector.vue b/packages/oruga/src/components/upload/Inspector.vue
deleted file mode 100644
index 558b1eb1a..000000000
--- a/packages/oruga/src/components/upload/Inspector.vue
+++ /dev/null
@@ -1,81 +0,0 @@
-<template>
-     <div>
-        <doc-wrapper>
-            <template v-slot:default="s">
-                <section>
-                    <o-field>
-                        <o-upload v-bind="s">
-                            <section class="ex-center">
-                                <p>
-                                    <o-icon icon="upload" size="is-large"> </o-icon>
-                                </p>
-                                <p v-if="s.dragDrop">Drop your files here or click to upload</p>
-                                <p v-if="!s.dragDrop">Click to upload</p>
-                            </section>
-                        </o-upload>
-                    </o-field>
-                </section>
-            </template>
-        </doc-wrapper>
-        <inspector :inspectData="inspectData"></inspector>
-    </div>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            inspectData: [
-                {
-                    class: "rootClass",
-                    description: "Root class of the element",
-                },
-                {
-                    class: "draggableClass",
-                    description: "Upload class when draggable",
-                    properties: ['dragDrop'],
-                    action: (cmp) => {
-                        cmp.data.dragDrop = true;
-                    }
-                },
-                {
-                    class: "expandedClass",
-                    description: "Upload class when expanded",
-                    properties: ['expanded'],
-                    action: (cmp) => {
-                        cmp.data.expanded = true;
-                    }
-                },
-                {
-                    class: "disabledClass",
-                    description: "Upload class when disabled",
-                    properties: ['disabled'],
-                    action: (cmp) => {
-                        cmp.data.disabled = true;
-                    }
-                },
-                {
-                    class: "hoveredClass",
-                    description: "Upload class on dragging",
-                    properties: ['dragDrop'],
-                    warning: 'Drag & drop a file to see it in action!',
-                    action: (cmp) => {
-                        cmp.data.dragDrop = true;
-                    }
-                },
-                {
-                    class: "variantClass",
-                    description : 'Class of the upload variant',
-                    properties: ["variant", "dragDrop"],
-                    suffixes: ['primary', 'info', 'warning', 'danger'],
-                    warning: 'Drag & drop a file to see it in action!',
-                    action: (cmp) => {
-                        cmp.data.variant = 'warning';
-                        cmp.data.dragDrop = true;
-                    }
-                }
-            ]
-        };
-    },
-};
-</script>
diff --git a/packages/oruga/src/components/upload/Upload.spec.js b/packages/oruga/src/components/upload/Upload.spec.js
deleted file mode 100644
index f2db0d380..000000000
--- a/packages/oruga/src/components/upload/Upload.spec.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OUpload from '@components/upload/Upload'
-
-let wrapper
-
-describe('OUpload', () => {
-    beforeEach(() => {
-        wrapper = shallowMount(OUpload)
-    })
-
-    it('is called', () => {
-        expect(wrapper.exists()).toBeTruthy()
-    })
-
-    it('render correctly', () => {
-        expect(wrapper.html()).toMatchSnapshot()
-    })
-})
diff --git a/packages/oruga/src/components/upload/Upload.vue b/packages/oruga/src/components/upload/Upload.vue
deleted file mode 100644
index e88670870..000000000
--- a/packages/oruga/src/components/upload/Upload.vue
+++ /dev/null
@@ -1,210 +0,0 @@
-<template>
-    <label :class="rootClasses">
-        <template v-if="!dragDrop">
-            <slot/>
-        </template>
-
-        <div
-            v-else
-            :class="draggableClasses"
-            @mouseenter="updateDragDropFocus(true)"
-            @mouseleave="updateDragDropFocus(false)"
-            @dragover.prevent="updateDragDropFocus(true)"
-            @dragleave.prevent="updateDragDropFocus(false)"
-            @dragenter.prevent="updateDragDropFocus(true)"
-            @drop.prevent="onFileChange">
-            <slot/>
-        </div>
-
-        <input
-            ref="input"
-            type="file"
-            v-bind="$attrs"
-            :multiple="multiple"
-            :accept="accept"
-            :disabled="disabled"
-            @change="onFileChange">
-    </label>
-</template>
-
-<script>
-import BaseComponentMixin from '../../utils/BaseComponentMixin'
-import FormElementMixin from '../../utils/FormElementMixin'
-import { File } from '../../utils/ssr'
-
-/**
- * Upload one or more files
- * @displayName Upload
- * @example ./examples/Upload.md
- * @style _upload.scss
- */
-export default {
-    name: 'OUpload',
-    mixins: [BaseComponentMixin, FormElementMixin],
-    configField: 'upload',
-    inheritAttrs: false,
-    props: {
-        /** @model */
-        value: [Object, File, Array],
-        /** Same as native, also push new item to v-model instead of replacing */
-        multiple: Boolean,
-        /** Same as native disabled */
-        disabled: Boolean,
-        /** Same as native accept */
-        accept: String,
-        /** Accepts drag & drop and change its style */
-        dragDrop: Boolean,
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: {
-            type: String
-        },
-        /** Replace last chosen files every time (like native file input element) */
-        native: {
-            type: Boolean,
-            default: false
-        },
-        /** Upload will be expanded (full-width) */
-        expanded: {
-            type: Boolean,
-            default: false
-        },
-        rootClass: [String, Function, Array],
-        draggableClass: [String, Function, Array],
-        variantClass: [String, Function, Array],
-        expandedClass: [String, Function, Array],
-        disabledClass: [String, Function, Array],
-        hoveredClass: [String, Function, Array]
-    },
-    data() {
-        return {
-            newValue: this.value,
-            dragDropFocus: false
-        }
-    },
-    computed: {
-        rootClasses() {
-            return [
-                this.computedClass('rootClass', 'o-upl'),
-                { [this.computedClass('expandedClass', 'o-upl--expanded')]: this.expanded },
-                { [this.computedClass('disabledClass', 'o-upl--disabled')]: this.disabled }
-            ]
-        },
-        draggableClasses() {
-            return [
-                this.computedClass('draggableClass', 'o-upl__draggable'),
-                { [this.computedClass('hoveredClass', 'o-upl__draggable--hovered')]: !this.variant && this.dragDropFocus },
-                { [this.computedClass('variantClass', 'o-upl__draggable--hovered-', this.variant)]: this.variant && this.dragDropFocus },
-            ]
-        },
-        $elementRef() {
-            return 'input'
-        }
-    },
-    watch: {
-        /**
-         *   When v-model is changed:
-         *   1. Set internal value.
-         *   2. Reset interna input file value
-         *   3. If it's invalid, validate again.
-         */
-        value(value) {
-            this.newValue = value
-            if (!value || (Array.isArray(value) && value.length === 0)) {
-                this.$refs.input.value = null
-            }
-            !this.isValid && !this.dragDrop && this.checkHtml5Validity()
-        },
-    },
-    methods: {
-        /**
-        * Listen change event on input type 'file',
-        * emit 'input' event and validate
-        */
-        onFileChange(event) {
-            if (this.disabled) return
-            if (this.dragDrop) this.updateDragDropFocus(false)
-            const value = event.target.files || event.dataTransfer.files
-            if (value.length === 0) {
-                if (!this.newValue) return
-                if (this.native) this.newValue = null
-            } else if (!this.multiple) {
-                // only one element in case drag drop mode and isn't multiple
-                if (this.dragDrop && value.length !== 1) return
-                else {
-                    const file = value[0]
-                    if (this.checkType(file)) this.newValue = file
-                    else if (this.newValue) {
-                        this.newValue = null
-                        this.clearInput()
-                    } else {
-                        // Force input back to empty state and recheck validity
-                        this.clearInput()
-                        this.checkHtml5Validity()
-                        return
-                    }
-                }
-            } else {
-                // always new values if native or undefined local
-                let newValues = false
-                if (this.native || !this.newValue) {
-                    this.newValue = []
-                    newValues = true
-                }
-                for (let i = 0; i < value.length; i++) {
-                    const file = value[i]
-                    if (this.checkType(file)) {
-                        this.newValue.push(file)
-                        newValues = true
-                    }
-                }
-                if (!newValues) return
-            }
-            this.$emit('input', this.newValue)
-            !this.dragDrop && this.checkHtml5Validity()
-        },
-
-        /*
-        * Reset file input value
-        */
-        clearInput() {
-            this.$refs.input.value = null
-        },
-
-        /**
-        * Listen drag-drop to update internal variable
-        */
-        updateDragDropFocus(focus) {
-            if (!this.disabled) {
-                this.dragDropFocus = focus
-            }
-        },
-
-        /**
-        * Check mime type of file
-        */
-        checkType(file) {
-            if (!this.accept) return true
-            const types = this.accept.split(',')
-            if (types.length === 0) return true
-            for (let i = 0; i < types.length; i++) {
-                const type = types[i].trim()
-                if (type) {
-                    if (type.substring(0, 1) === '.') {
-                        const extension = file.name.toLowerCase().slice(-type.length)
-                        if (extension === type.toLowerCase()) {
-                            return true
-                        }
-                    } else {
-                        // check mime type
-                        if (file.type.match(type)) return true
-                    }
-                }
-            }
-            return false
-        }
-    }
-}
-</script>
diff --git a/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap b/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap
deleted file mode 100644
index 0e23458f5..000000000
--- a/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`OUpload render correctly 1`] = `<label class="o-upl"> <input type="file"></label>`;
diff --git a/packages/oruga/src/components/upload/examples/Upload.md b/packages/oruga/src/components/upload/examples/Upload.md
deleted file mode 100644
index 1655834c8..000000000
--- a/packages/oruga/src/components/upload/examples/Upload.md
+++ /dev/null
@@ -1,90 +0,0 @@
-## Examples
-
-### Base
-
-::: demo
-```html
-<template>
-    <o-field class="file">
-        <o-upload v-model="file">
-            <o-button tag="a" variant="primary">
-                <o-icon icon="upload"></o-icon>
-                <span>Click to upload</span>
-            </o-button>
-        </o-upload>
-        <span class="file-name" v-if="file">
-            {{ file.name }}
-        </span>
-    </o-field>
-    
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                file: null
-            }
-        }
-    }
-</script>
-```
-:::
-
-### Drag&Drop
-
-::: demo
-```html
-<template>
-    <section>
-        <o-field>
-            <o-upload v-model="dropFiles"
-                multiple
-                drag-drop>
-                <section class="ex-center">
-                    <p>
-                        <o-icon
-                            icon="upload"
-                            size="is-large">
-                        </o-icon>
-                    </p>
-                    <p>Drop your files here or click to upload</p>
-                </section>
-            </o-upload>
-        </o-field>
-
-        <div class="tags">
-            <span v-for="(file, index) in dropFiles"
-                :key="index">
-                {{file.name}}
-                <o-button icon-left="times" size="small"
-                    native-type="button"
-                    @click="deleteDropFile(index)">
-                </o-button>
-            </span>
-        </div>
-    </section>
-</template>
-
-<script>
-    export default {
-        data() {
-            return {
-                dropFiles: []
-            }
-        },
-        methods: {
-            deleteDropFile(index) {
-                this.dropFiles.splice(index, 1)
-            }
-        }
-    }
-</script>
-
-<style>
-.ex-center {
-    text-align: center;
-}
-</style>
-```
-:::
diff --git a/packages/oruga/src/components/upload/index.js b/packages/oruga/src/components/upload/index.js
deleted file mode 100644
index 2058664b4..000000000
--- a/packages/oruga/src/components/upload/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Upload from './Upload'
-
-import { use, registerComponent } from '../../utils/plugins'
-
-const Plugin = {
-    install(Vue) {
-        registerComponent(Vue, Upload)
-    }
-}
-
-use(Plugin)
-
-export default Plugin
-
-export {
-    Upload as OUpload
-}
diff --git a/packages/oruga/src/directives/clickOutside.js b/packages/oruga/src/directives/clickOutside.js
deleted file mode 100644
index 2a588f532..000000000
--- a/packages/oruga/src/directives/clickOutside.js
+++ /dev/null
@@ -1,81 +0,0 @@
-const isTouch =
-  typeof window !== 'undefined' && ('ontouchstart' in window || navigator.msMaxTouchPoints > 0)
-const events = isTouch ? ['touchstart', 'click'] : ['click']
-
-const instances = []
-
-function processArgs(bindingValue) {
-    const isFunction = typeof bindingValue === 'function'
-    if (!isFunction && typeof bindingValue !== 'object') {
-        throw new Error(`v-click-outside: Binding value should be a function or an object, ${typeof bindingValue} given`)
-    }
-
-    return {
-        handler: isFunction ? bindingValue : bindingValue.handler,
-        middleware: bindingValue.middleware || ((isClickOutside) => isClickOutside),
-        events: bindingValue.events || events
-    }
-}
-
-function onEvent({ el, event, handler, middleware }) {
-    const isClickOutside = event.target !== el && !el.contains(event.target)
-
-    if (!isClickOutside || !middleware(event, el)) {
-        return
-    }
-
-    handler(event, el)
-}
-
-function toggleEventListeners({ eventHandlers } = {}, action = 'add') {
-    eventHandlers.forEach(({ event, handler }) => {
-        document[`${action}EventListener`](event, handler)
-    })
-}
-
-function bind(el, { value }) {
-    const { handler, middleware, events } = processArgs(value)
-
-    const instance = {
-        el,
-        eventHandlers: events.map((eventName) => ({
-            event: eventName,
-            handler: (event) => onEvent({ event, el, handler, middleware })
-        }))
-    }
-
-    toggleEventListeners(instance, 'add')
-
-    instances.push(instance)
-}
-
-function update(el, { value }) {
-    const { handler, middleware, events } = processArgs(value)
-    // `filter` instead of `find` for compat with IE
-    const instance = instances.filter((instance) => instance.el === el)[0]
-
-    toggleEventListeners(instance, 'remove')
-
-    instance.eventHandlers = events.map((eventName) => ({
-        event: eventName,
-        handler: (event) => onEvent({ event, el, handler, middleware })
-    }))
-
-    toggleEventListeners(instance, 'add')
-}
-
-function unbind(el) {
-    // `filter` instead of `find` for compat with IE
-    const instance = instances.filter((instance) => instance.el === el)[0]
-
-    toggleEventListeners(instance, 'remove')
-}
-
-const directive = {
-    bind,
-    update,
-    unbind,
-    instances
-}
-
-export default directive
diff --git a/packages/oruga/src/directives/trapFocus.js b/packages/oruga/src/directives/trapFocus.js
deleted file mode 100644
index 87dfe5ac9..000000000
--- a/packages/oruga/src/directives/trapFocus.js
+++ /dev/null
@@ -1,59 +0,0 @@
-const findFocusable = (element, programmatic = false) => {
-    if (!element) {
-        return null
-    }
-    if (programmatic) {
-        return element.querySelectorAll(`*[tabindex="-1"]`)
-    }
-    return element.querySelectorAll(`a[href]:not([tabindex="-1"]),
-                                     area[href],
-                                     input:not([disabled]),
-                                     select:not([disabled]),
-                                     textarea:not([disabled]),
-                                     button:not([disabled]),
-                                     iframe,
-                                     object,
-                                     embed,
-                                     *[tabindex]:not([tabindex="-1"]),
-                                     *[contenteditable]`)
-}
-
-let onKeyDown
-
-const bind = (el, { value = true }) => {
-    if (value) {
-        let focusable = findFocusable(el)
-        let focusableProg = findFocusable(el, true)
-
-        if (focusable && focusable.length > 0) {
-            onKeyDown = (event) => {
-                // Need to get focusable each time since it can change between key events
-                // ex. changing month in a datepicker
-                focusable = findFocusable(el)
-                focusableProg = findFocusable(el, true)
-                const firstFocusable = focusable[0]
-                const lastFocusable = focusable[focusable.length - 1]
-
-                if (event.target === firstFocusable && event.shiftKey && event.key === 'Tab') {
-                    event.preventDefault()
-                    lastFocusable.focus()
-                } else if ((event.target === lastFocusable || Array.from(focusableProg).indexOf(event.target) >= 0) && !event.shiftKey && event.key === 'Tab') {
-                    event.preventDefault()
-                    firstFocusable.focus()
-                }
-            }
-            el.addEventListener('keydown', onKeyDown)
-        }
-    }
-}
-
-const unbind = (el) => {
-    el.removeEventListener('keydown', onKeyDown)
-}
-
-const directive = {
-    bind,
-    unbind
-}
-
-export default directive
diff --git a/packages/oruga/src/index.js b/packages/oruga/src/index.js
deleted file mode 100644
index 076a91518..000000000
--- a/packages/oruga/src/index.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as plugins from './components/plugins'
-
-import { merge } from './utils/helpers'
-import { setOptions, setVueInstance, Programmatic as ConfigProgrammatic, getOptions } from './utils/config'
-import { use, registerComponentProgrammatic, registerPlugin } from './utils/plugins'
-
-const Oruga = {
-    install(Vue, options = {}) {
-        setVueInstance(Vue)
-        // Options
-        const defaultConfig = getOptions()
-        setOptions(merge(defaultConfig, options, true))
-        // Components
-        for (const componentKey in plugins) {
-            registerPlugin(Vue, plugins[componentKey])
-        }
-        // Config component
-        registerComponentProgrammatic(Vue, 'config', ConfigProgrammatic)
-    }
-}
-
-use(Oruga)
-
-export default Oruga
-
-// export all vue components
-export * from './components'
-// export all components as vue plugin
-export * from './components/plugins'
-// export programmatic components
-export { LoadingProgrammatic } from './components/loading'
-export { ModalProgrammatic } from './components/modal'
-export { NotificationProgrammatic } from './components/notification'
-export { Programmatic as ConfigProgrammatic } from './utils/config'
-
-// export config plugin
-export { Plugin as Config } from './utils/config'
diff --git a/packages/oruga/src/scss/components/_autocomplete.scss b/packages/oruga/src/scss/components/_autocomplete.scss
deleted file mode 100644
index 5eba2003b..000000000
--- a/packages/oruga/src/scss/components/_autocomplete.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-
-/* @docs */
-$autocomplete-item-color: #000000 !default;
-$autocomplete-item-disabled-opacity: $base-disabled-opacity !default;
-$autocomplete-item-font-size: $base-font-size !default;
-$autocomplete-item-hover-background-color: #f5f5f5 !default;
-$autocomplete-item-hover-color: #000000 !default;
-$autocomplete-item-line-height: $base-line-height !default;
-$autocomplete-item-padding: .375rem 1rem !default;
-$autocomplete-menu-background: #ffffff !default;
-$autocomplete-menu-border-radius: $base-border-radius !default;
-$autocomplete-menu-box-shadow: 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) !default;
-$autocomplete-menu-margin: 0 !default;
-$autocomplete-menu-max-height: 200px !default;
-$autocomplete-menu-padding: .5rem 0 .5rem 0 !default;
-$autocomplete-menu-zindex: 20 !default;
-/* @docs */
-
-.o-acp {
-    position: relative;
-    &__menu {
-        display: block;
-        width: 100%;
-        position: absolute;
-        left: 0;
-        top: 100%;
-        overflow: auto;
-        @include avariable('z-index', 'autocomplete-menu-zindex', $autocomplete-menu-zindex);
-        @include avariable('background-color', 'autocomplete-menu-background', $autocomplete-menu-background);
-        @include avariable('border-radius', 'autocomplete-menu-border-radius', $autocomplete-menu-border-radius);
-        @include avariable('box-shadow', 'autocomplete-menu-box-shadow', $autocomplete-menu-box-shadow);
-        @include avariable('padding', 'autocomplete-menu-padding', $autocomplete-menu-padding);
-        @include avariable('margin', 'autocomplete-menu-margin', $autocomplete-menu-margin);
-        @include avariable('max-height', 'autocomplete-menu-max-height', $autocomplete-menu-max-height);
-        &--top {
-            top: auto;
-            bottom: 100%;
-        }
-    }
-    &__item {
-        display: block;
-        position: relative;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        cursor: pointer;
-        @include avariable('color', 'autocomplete-item-color', $autocomplete-item-color);
-        @include avariable('font-size', 'autocomplete-item-font-size', $autocomplete-item-font-size);
-        @include avariable('line-height', 'autocomplete-item-line-height', $autocomplete-item-line-height);
-        @include avariable('padding', 'autocomplete-item-padding', $autocomplete-item-padding);
-        &-group-title, &--empty {
-            pointer-events: none;
-            @include avariable('opacity', 'autocomplete-item-disabled-opacity', $autocomplete-item-disabled-opacity);
-        }
-        &--hover, &:hover {
-            @include avariable('background', 'autocomplete-item-hover-background-color', $autocomplete-item-hover-background-color);
-            @include avariable('color', 'autocomplete-item-hover-color', $autocomplete-item-hover-color);
-        }
-    }
-    &--expanded {
-        width: 100%;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_button.scss b/packages/oruga/src/scss/components/_button.scss
deleted file mode 100644
index 35e1ce19f..000000000
--- a/packages/oruga/src/scss/components/_button.scss
+++ /dev/null
@@ -1,161 +0,0 @@
-
-/* @docs */
-$button-background-color: $primary !default;
-$button-color: $primary-invert !default;
-$button-border-radius: $base-border-radius !default;
-$button-border: 1px solid $button-background-color !default;
-$button-box-shadow: none !default;
-$button-font-weight: 400 !default;
-$button-line-height: $base-line-height !default;
-$button-margin-icon-to-text: .1875em !default;
-$button-margin: 0 !default;
-$button-height: $control-height !default;
-$button-padding: $control-padding-vertical .75em !default;
-$button-rounded-border-radius: $base-rounded-border-radius !default;
-$button-disabled-opacity: $base-disabled-opacity !default;
-$button-outlined-background-color: transparent !default;
-/* @docs */
-
-
-@keyframes spinAround {
-    from {
-        transform: rotate(0deg);
-    }
-
-    to {
-        transform: rotate(359deg);
-    }
-}
-
-.o-btn {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    position: relative;
-    display: inline-flex;
-    cursor: pointer;
-    text-align: center;
-    white-space: nowrap;
-    align-items: center;
-    justify-content: center;
-    vertical-align: top;
-    text-decoration: none;
-    @include unselectable;
-    @include avariable('background-color', 'button-background-color', $button-background-color);
-    @include avariable('color', 'button-color', $button-color);
-    @include avariable('padding', 'button-padding', $button-padding);
-    @include avariable('border', 'button-border', $button-border);
-    @include avariable('border-radius', 'button-border-radius', $button-border-radius);
-    @include avariable('box-shadow', 'button-box-shadow', $button-box-shadow);
-    @include avariable('font-size', 'base-font-size', $base-font-size);
-    @include avariable('font-weight', 'button-font-weight', $button-font-weight);
-    @include avariable('line-height', 'button-line-height', $button-line-height);
-    @include avariable('margin', 'button-margin', $button-margin);
-    @include avariable('height', 'button-height', $button-height);
-    &__wrapper {
-        @include side-flex-gap($button-margin-icon-to-text);
-        display: inline-flex;
-        align-items: center;
-        justify-content: center;
-        position: relative;
-        width: 100%;
-    }
-    &__label {
-        width: 100%;
-    }
-    &--expanded {
-        width: 100%;
-    }
-    &--rounded {
-        @include avariable('border-radius', 'button-rounded-border-radius', $button-rounded-border-radius);
-    }
-    &--disabled {
-        @include avariable('opacity', 'button-disabled-opacity', $button-disabled-opacity);
-        cursor: not-allowed;
-        pointer-events: none;
-    }
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('button-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        $color-invert: nth($pair, 2);
-        &--#{$name} {
-            border-color: transparent;
-            @include avariable('background-color', ('variant-' + #{$name}), $color);
-            @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-            &:hover {
-                // background-color: darken($color, 2.5%)
-                // IE 11 needs polyfill
-                filter: brightness(97.5%);
-            }
-        }
-    }
-    &--outlined {
-        @include avariable('background-color', 'button-outlined-background-color', $button-outlined-background-color);
-        @include avariable('border-color', 'button-background-color', $button-background-color);
-        @include avariable('color', 'button-background-color', $button-background-color);
-        &:hover {
-            border-color: transparent;
-            @include avariable('background-color', 'button-background-color', $button-background-color);
-            @include avariable('color', 'button-color', $button-color);
-        }
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &-#{$name} {
-                @include avariable('background-color', 'button-outlined-background-color', $button-outlined-background-color);
-                @include avariable('border-color', ('variant-' + #{$name}), $color);
-                @include avariable('color', ('variant-' + #{$name}), $color);
-                &:hover {
-                    border-color: transparent;
-                    @include avariable('background-color', ('variant-' + #{$name}), $color);
-                    @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-                }
-            }
-        }
-    }
-    &--loading{
-        color: transparent!important;
-        pointer-events: none;
-    }
-    &--loading::after{
-        -webkit-animation: spinAround 500ms infinite linear;
-        left: calc(50% - 0.5em);
-        top: calc(50% - 0.5em);
-        position: absolute!important;
-        border: 2px solid #dbdbdb;
-        border-radius: 9999px;
-        border-right-color: transparent;
-        border-top-color: transparent;
-        content: "";
-        display: block;
-        height: 1em;
-        width: 1em;
-    }
-    &--inverted {
-        @include avariable('background-color', 'button-color', $button-color);
-        @include avariable('border-color', 'button-color', $button-color);
-        @include avariable('color', 'button-background-color', $button-background-color);
-        &:hover {
-            // background-color: darken($color-invert, 5%)
-            // IE 11 needs polyfill
-            filter: brightness(95%);
-        }
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &-#{$name} {
-                @include avariable('background-color', ('variant-invert-' + #{$name}), $color-invert);
-                @include avariable('border-color', ('variant-invert-' + #{$name}), $color-invert);
-                @include avariable('color', ('variant-' + #{$name}), $color);
-                &:hover {
-                    // background-color: darken($color-invert, 5%)
-                    // IE 11 needs polyfill
-                    filter: brightness(95%);
-                }
-            }
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_carousel.scss b/packages/oruga/src/scss/components/_carousel.scss
deleted file mode 100644
index 7b4a1815d..000000000
--- a/packages/oruga/src/scss/components/_carousel.scss
+++ /dev/null
@@ -1,136 +0,0 @@
-/* @docs */
-$carousel-arrow-background: $white !default;
-$carousel-arrow-color: $primary !default;
-$carousel-arrow-icon-spaced: 1.5rem !default;
-$carousel-arrow-top: 50% !default;
-$carousel-arrow-size: 1.5rem !default;
-$carousel-arrow-border-radius: $base-rounded-border-radius !default;
-$carousel-arrow-border: 1px solid $carousel-arrow-background !default;
-$carousel-arrow-transition: $speed-slow $easing !default;
-$carousel-indicators-background: rgba($white , 0.50) !default;
-$carousel-indicators-padding: .5rem !default;
-$carousel-indicator-margin: 0 .5rem 0 0 !default;
-$carousel-indicator-color: $primary !default;
-$carousel-indicator-background: $white !default;
-$carousel-indicator-border: 1px solid $carousel-indicator-color !default;
-$carousel-indicator-active-background: $carousel-indicator-color !default;
-$carousel-indicator-active-border: 1px solid $carousel-indicator-color !default;
-$carousel-indicator-transition: $speed-slow $easing !default;
-$carousel-indicator-size: 10px !default;
-$carousel-indicator-dots-border-radius: $base-border-radius !default;
-$carousel-indicator-lines-height: 5px !default;
-$carousel-indicator-lines-width: 25px !default;
-$carousel-items-transition: all $speed-slower ease-out 0s !default;
-$carousel-item-border: 2px solid transparent !default;
-$carousel-overlay-background: hsla(0,0%,4%,.86) !default;
-$carousel-overlay-zindex: 40 !default;
-/* @docs */
-
-.o-car {
-    @include unselectable;
-    position: relative;
-    overflow: hidden;
-    width: 100%;
-    &__overlay {
-        bottom: 0;
-        left: 0;
-        right: 0;
-        top: 0;
-        align-items: center;
-        flex-direction: column;
-        justify-content: center;
-        display: flex;
-        max-height: 100vh;
-        position: fixed;
-        @include avariable('background-color', 'carousel-overlay-background', $carousel-overlay-background);
-        @include avariable('z-index', 'carousel-overlay-zindex', $carousel-overlay-zindex);
-    }
-    &__scene {
-        position: relative;
-        width: 100%;
-    }
-    &__items {
-        display: flex;
-        width: 100%;
-        &:not(&--dragging) {
-            @include avariable('transition', 'carousel-items-transition', $carousel-items-transition);
-        }
-    }
-    &__item {
-        @include avariable('border', 'carousel-item-border', $carousel-item-border);
-        flex-shrink: 0;
-    }
-    &__indicators {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        @include avariable('padding', 'carousel-indicators-padding', $carousel-indicators-padding);
-        @include avariable('background', 'carousel-indicators-background', $carousel-indicators-background);
-        &--inside {
-            position: absolute;
-            &--bottom {
-                bottom: 0;
-            }
-            &--top {
-                top: 0;
-            }
-        }
-    }
-    &__indicator {
-        &:not(:last-child) {
-            @include avariable('margin', 'carousel-indicator-margin', $carousel-indicator-margin);
-        }
-        &__item {
-            display: block;
-            @include avariable('border', 'carousel-indicator-border', $carousel-indicator-border);
-            @include avariable('background', 'carousel-indicator-background', $carousel-indicator-background);
-            @include avariable('transition', 'carousel-indicator-transition', $carousel-indicator-transition);
-            &--active, :hover {
-                @include avariable('background', 'carousel-indicator-active-background', $carousel-indicator-active-background);
-                @include avariable('border', 'carousel-indicator-active-border', $carousel-indicator-active-border);
-            }
-            &--boxes {
-                @include avariable('width', 'carousel-indicator-size', $carousel-indicator-size);
-                @include avariable('height', 'carousel-indicator-size', $carousel-indicator-size);
-            }
-            &--dots {
-                @include avariable('border-radius', 'carousel-indicator-dots-border-radius', $carousel-indicator-dots-border-radius);
-                @include avariable('width', 'carousel-indicator-size', $carousel-indicator-size);
-                @include avariable('height', 'carousel-indicator-size', $carousel-indicator-size);
-            }
-            &---lines {
-                @include avariable('width', 'carousel-indicator-lines-height', $carousel-indicator-lines-height);
-                @include avariable('height', 'carousel-indicator-lines-width', $carousel-indicator-lines-width);
-            }
-        }
-    }
-
-    &__arrow__icon {
-        cursor: pointer;
-        @include avariable('background', 'carousel-arrow-background', $carousel-arrow-background);
-        @include avariable('color', 'carousel-arrow-color', $carousel-arrow-color);
-        @include avariable('width', 'carousel-arrow-size', $carousel-arrow-size);
-        @include avariable('height', 'carousel-arrow-size', $carousel-arrow-size);
-        @include avariable('border-radius', 'carousel-arrow-border-radius', $carousel-arrow-border-radius);
-        @include avariable('border', 'carousel-arrow-border', $carousel-arrow-border);
-        @include avariable('transition', 'carousel-arrow-transition', $carousel-arrow-transition);
-    }
-    &__arrow__icon-prev,
-    &__arrow__icon-next {
-        position: absolute;
-        @include avariable('top', 'carousel-arrow-top', $carousel-arrow-top);
-        @include evariable(
-            'transform', 'translateY($length)',
-            eparam('$length', variable('carousel-arrow-top', -$carousel-arrow-top))
-        );
-        z-index: 1;
-    }
-    &__arrow__icon-prev {
-        @include avariable('left', 'carousel-arrow-icon-spaced', $carousel-arrow-icon-spaced);
-    }
-    &__arrow__icon-next {
-        @include avariable('right', 'carousel-arrow-icon-spaced', $carousel-arrow-icon-spaced);
-    }
-
-}
diff --git a/packages/oruga/src/scss/components/_checkbox.scss b/packages/oruga/src/scss/components/_checkbox.scss
deleted file mode 100644
index 353062761..000000000
--- a/packages/oruga/src/scss/components/_checkbox.scss
+++ /dev/null
@@ -1,111 +0,0 @@
-/* @docs */
-$checkbox-active-background-color: $primary !default;
-$checkbox-background-color: $primary !default;
-$checkbox-border-color: $primary !default;
-$checkbox-border-radius: $base-border-radius !default;
-$checkbox-border-width: 2px !default;
-$checkbox-checked-box-shadow-length: 0 0 0.5em !default;
-$checkbox-checked-box-shadow-opacity: 0.8 !default;
-$checkbox-checkmark-color: $primary-invert !default;
-$checkbox-disabled-opacity: $base-disabled-opacity !default;
-$checkbox-label-padding: 0 0 0 0.5em !default;
-$checkbox-margin-sibiling: 0.5em !default;
-$checkbox-size: 1rem !default;
-$checkbox-line-height: 1.5 !default;
-/* @docs */
-
-@function svg_checkmark($color) {
-    $start: '<svg width="100%" height="100%" viewBox="0 0 234 225" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">';
-    $content: '<g transform="matrix(4.16667,0,0,4.16667,0,0)"><g transform="matrix(3.13817,0,0,3.13817,-69.2796,-49.5156)"><path style="fill:#{$color}" d="M22.504,26.219L28.637,32.386L39.494,18.284L37.348,16.379L28,27.725L24.46,24.196L22.504,26.219Z"></path></g></g>';
-    $end: '</svg>';
-    @return svg-encode('#{$start}#{$content}#{$end}');
-}
-
-@function svg_indeterminate($color) {
-    $start: '<svg width="100%" height="100%" viewBox="0 0 417 417" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">';
-    $content: '<g transform="matrix(4.16667,0,0,4.16667,0,0)"><g transform="matrix(6.96176,0,0,20.5682,-118.661,-806.753)"><path style="fill:#{$color}" d="M31.265,41.654C31.265,41.324 30.474,41.057 29.5,41.057L18.953,41.057C17.979,41.057 17.188,41.324 17.188,41.654C17.188,41.984 17.979,42.252 18.953,42.252L29.5,42.252C30.474,42.252 31.265,41.984 31.265,41.654Z"/></g></g>';
-    $end: '</svg>';
-    @return svg-encode('#{$start}#{$content}#{$end}');
-}
-
-.o-chk {
-    display: inline-flex;
-    align-items: center;
-    cursor: pointer;
-    position: relative;
-    @include unselectable;
-    @include avariable('line-height', 'checkbox-line-height', $checkbox-line-height);
-    @include avariable('margin-right', 'checkbox-margin-sibiling', $checkbox-margin-sibiling);
-
-    &__check {
-        @include avariable('width', 'checkbox-size', $checkbox-size);
-        @include avariable('height', 'checkbox-size', $checkbox-size);
-        outline: none;
-        margin: 0;
-        vertical-align: top;
-        background-position: center;
-        background-size: contain;
-        -webkit-appearance: none;
-        -moz-appearance: none;
-        appearance: none;
-        -webkit-print-color-adjust: exact;
-        print-color-adjust: exact;
-        flex-shrink: 0;
-        cursor: pointer;
-        background-repeat: no-repeat;
-        @include avariable('background-color', 'checkbox-background-color', $checkbox-background-color);
-        @include avariable('border-radius', 'checkbox-border-radius', $checkbox-border-radius);
-        @include avariable('border-width', 'checkbox-border-width', $checkbox-border-width);
-        @include avariable('border-color', 'checkbox-border-color', $checkbox-border-color);
-        border-style: solid;
-        transition-property: background;
-        @include avariable('transition-duration', 'transition-duration', $speed-slow);
-        @include avariable('transition-timing-function', 'transition-timing', $easing);
-
-        &--checked {
-            @include avariable(
-                'background-color',
-                'checkbox-active-background-color',
-                $checkbox-active-background-color
-            );
-            @include avariable('border-color', 'checkbox-active-background-color', $checkbox-active-background-color);
-            background-image: url(svg_checkmark(variable('checkbox-checkmark-color', $checkbox-checkmark-color)));
-        }
-        &--indeterminate {
-            @include avariable(
-                'background-color',
-                'checkbox-active-background-color',
-                $checkbox-active-background-color
-            );
-            @include avariable('border-color', 'checkbox-active-background-color', $checkbox-active-background-color);
-            background-image: url(svg_indeterminate(variable('checkbox-checkmark-color', $checkbox-checkmark-color)));
-        }
-    }
-    &__label {
-        @include avariable('padding', 'checkbox-label-padding', $checkbox-label-padding);
-    }
-    &--disabled {
-        @include avariable('opacity', 'checkbox-disabled-opacity', $checkbox-disabled-opacity);
-    }
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('checkbox-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        $color-invert: nth($pair, 2);
-        &--#{$name} {
-            .o-chk__check {
-                @include avariable('border-color', ('variant-' + #{$name}), $color);
-                @include avariable('background-color', ('variant-' + #{$name}), $color);
-            }
-            .o-chk__check--checked {
-                background-image: url(svg_checkmark(variable(('variant-invert-' + #{$name}), $color-invert)));
-            }
-            .o-chk__check--indeterminate {
-                background-image: url(svg_indeterminate(variable(('variant-invert-' + #{$name}), $color-invert)));
-            }
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_collapse.scss b/packages/oruga/src/scss/components/_collapse.scss
deleted file mode 100644
index 2dcf01709..000000000
--- a/packages/oruga/src/scss/components/_collapse.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-/* @docs */
-/* @docs */
-
-.o-clps {
-    &__trigger {
-        cursor: pointer;
-    }
-    &__content {
-        display: inherit;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_datepicker.scss b/packages/oruga/src/scss/components/_datepicker.scss
deleted file mode 100644
index 10d1c776d..000000000
--- a/packages/oruga/src/scss/components/_datepicker.scss
+++ /dev/null
@@ -1,273 +0,0 @@
-/* @docs */
-$datepicker-font-size: $base-font-size !default;
-$datepicker-box-line-height: $base-line-height !default;
-$datepicker-box-padding: .375rem 1rem !default;
-$datepicker-header-padding: 0 0 0.875rem 0 !default;
-$datepicker-header-margin: 0 0 0.875rem 0 !default;
-$datepicker-header-border-bottom: 1px solid $grey-lighter !default;
-$datepicker-footer-padding: 0.875rem .5rem 0 .5rem !default;
-$datepicker-footer-margin: 0.875rem 0 0.875rem 0 !default;
-$datepicker-footer-border-top: 1px solid $grey-lighter !default;
-$datepicker-table-head-padding: 0 0 0.875rem 0 !default;
-$datepicker-table-head-margin: 0 0 0.875rem 0 !default;
-$datepicker-table-head-border-bottom: 1px solid $grey-lighter !default;
-$datepicker-table-head-item-color: $grey !default;
-$datepicker-table-head-item-font-weight: 600 !default;
-$datepicker-item-today-border: solid 1px rgba($primary, 0.5) !default;
-$datepicker-item-selectable-color: $grey-dark !default;
-$datepicker-item-disabled-color: $grey-light !default;
-$datepicker-item-border-radius: $base-border-radius !default;
-$datepicker-item-padding: 0.5rem 0.75rem !default;
-$datepicker-item-selected-color: $primary-invert !default;
-$datepicker-item-selected-background-color: $primary !default;
-$datepicker-item-selected-border-radius: 0 !default;
-$datepicker-item-selected-within-background-color: rgba($datepicker-item-selected-background-color, 0.5) !default;
-$datepicker-item-hovered-background-color: $grey !default;
-$datepicker-item-hovered-color: $grey-lighter !default;
-$datepicker-item-hovered-background-color: #f5f5f5 !default;
-$datepicker-item-hovered-within-background-color: rgba($datepicker-item-hovered-background-color, 0.5) !default;
-$datepicker-item-nearby-color: $grey-light !default;
-$datepicker-events-item-padding: .3rem .75rem .75rem !default;
-$datepicker-event-background-color: $grey-light !default;
-$datepicker-event-dots-size: .35em !default;
-$datepicker-event-dots-margin: 0 .1em !default;
-$datepicker-event-bars-height: .25em !default;
-$datepicker-btn-border-color: $grey-lighter !default;
-$datepicker-btn-border-radius: $base-border-radius !default;
-$datepicker-btn-border: 1px solid transparent !default;
-$datepicker-btn-color: #363636 !default;
-$datepicker-btn-height: 2.25em !default;
-$datepicker-btn-hover-border-color: $grey-light !default;
-$datepicker-btn-hover-color: #363636 !default;
-$datepicker-btn-line-height: $base-line-height !default;
-$datepicker-btn-margin: .25rem !default;
-$datepicker-btn-min-width: 2.25em !default;
-$datepicker-btn-padding: .5em .5em !default;
-/* @docs */
-
-.o-dpck {
-    @include avariable('font-size', 'datepicker-font-size', $datepicker-font-size);
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('datepicker-font-size-' + #{$name}), $value);
-        }
-    }
-    &__dropdown {
-        width: 100%;
-    }
-    &__box {
-        display: block;
-        position: relative;
-        @include avariable('line-height', 'datepicker-box-line-height', $datepicker-box-line-height);
-        @include avariable('padding', 'datepicker-box-padding', $datepicker-box-padding);
-    }
-    &__header {
-        @include avariable('padding', 'datepicker-header-padding', $datepicker-header-padding);
-        @include avariable('margin', 'datepicker-header-margin', $datepicker-header-margin);
-        @include avariable('border-bottom', 'datepicker-header-border-bottom', $datepicker-header-border-bottom);
-        &__buttons {
-            align-items: center;
-            display: flex;
-            justify-content: center;
-            text-align: center;
-            @each $name, $value in $sizes {
-                &--#{$name} {
-                    @include avariable('font-size', ('datepicker-font-size-' + #{$name}), $value);
-                }
-            }
-        }
-        &__previous, &__next {
-            justify-content: center;
-            text-align: center;
-            text-decoration: none;
-            cursor: pointer;
-            -moz-appearance: none;
-            -webkit-appearance: none;
-            align-items: center;
-            box-shadow: none;
-            display: inline-flex;
-            position: relative;
-            vertical-align: top;
-            @include unselectable;
-            @include avariable('line-height', 'datepicker-btn-line-height', $datepicker-btn-line-height);
-            @include avariable('border', 'datepicker-btn-border', $datepicker-btn-border);
-            @include avariable('border-radius', 'datepicker-btn-border-radius', $datepicker-btn-border-radius);
-            @include avariable('border-color', 'datepicker-btn-border-color', $datepicker-btn-border-color);
-            @include avariable('color', 'datepicker-btn-color', $datepicker-btn-color);
-            @include avariable('min-width', 'datepicker-btn-min-width', $datepicker-btn-min-width);
-            @include avariable('height', 'datepicker-btn-height', $datepicker-btn-height);
-            @include avariable('padding', 'datepicker-btn-padding', $datepicker-btn-padding);
-            @include avariable('margin', 'datepicker-btn-margin', $datepicker-btn-margin);
-            &:hover {
-                text-decoration: none;
-                @include avariable('border-color', 'datepicker-btn-hover-border-color', $datepicker-btn-hover-border-color);
-                @include avariable('color', 'datepicker-btn-hover-color', $datepicker-btn-hover-color);
-            }
-        }
-        &__previous {
-            order: 1;
-        }
-        &__next {
-            order: 3;
-        }
-        &__list {
-            order: 2;
-            align-items: center;
-            display: flex;
-            justify-content: center;
-            text-align: center;
-            list-style: none;
-            flex-wrap: wrap;
-            margin: 0;
-            padding: 0;
-            @include side-flex-gap($datepicker-btn-margin * 0.5);
-        }
-    }
-    &__footer {
-        @include avariable('padding', 'datepicker-header-padding', $datepicker-footer-padding);
-        @include avariable('margin', 'datepicker-header-margin', $datepicker-footer-margin);
-        @include avariable('border-top', 'datepicker-header-border-top', $datepicker-footer-border-top);
-    }
-    &__table, &__month {
-        display: table;
-        margin: 0 auto 0 auto;
-        &__head {
-            display: table-header-group;
-            @include avariable('padding', 'datepicker-table-head-padding', $datepicker-table-head-padding);
-            @include avariable('margin', 'datepicker-table-head-margin', $datepicker-table-head-margin);
-            @include avariable('border-bottom', 'datepicker-table-head-border-bottom', $datepicker-table-head-border-bottom);
-        }
-        &__body {
-            display: table-row-group;
-        }
-        &__row {
-            display: table-row;
-        }
-        &__head-cell {
-            @include avariable('padding', 'datepicker-table-head-item-padding', $datepicker-table-head-item-color);
-            @include avariable('font-weight', 'datepicker-table-head-item-font-weight', $datepicker-table-head-item-font-weight);
-        }
-        &__cell {
-            text-align: center;
-            vertical-align: middle;
-            display: table-cell;
-            text-decoration: none;
-            @include avariable('border-radius', 'datepicker-item-border-radius', $datepicker-item-border-radius);
-            @include avariable('padding', 'datepicker-item-padding', $datepicker-item-padding);
-            &--unselectable {
-                @include avariable('color', 'datepicker-item-disabled-color', $datepicker-item-disabled-color);
-            }
-            &--today {
-                @include avariable('border', 'datepicker-item-today-border', $datepicker-item-today-border);
-            }
-            &--selectable {
-                @include avariable('color', 'datepicker-item-selectable-color', $datepicker-item-selectable-color);
-            }
-            &--first-hovered {
-                @include avariable('background-color', 'datepicker-item-hovered-background-color', $datepicker-item-hovered-background-color);
-                @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color);
-                @include avariable('border-bottom-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-                @include avariable('border-top-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--within-hovered {
-                @include avariable('background-color', 'datepicker-item-hovered-within-background-color', $datepicker-item-hovered-within-background-color);
-                @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color);
-                @include avariable('border-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--last-hovered {
-                @include avariable('background-color', 'datepicker-item-hovered-background-color', $datepicker-item-hovered-background-color);
-                @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color);
-                @include avariable('border-bottom-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-                @include avariable('border-top-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) {
-                @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color);
-                @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color);
-            }
-            &--first-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) {
-                @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color);
-                @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color);
-                @include avariable('border-bottom-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-                @include avariable('border-top-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--within-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) {
-                @include avariable('background-color', 'datepicker-item-selected-within-background-color', $datepicker-item-selected-within-background-color);
-                @include avariable('border-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--last-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) {
-                @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color);
-                @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color);
-                @include avariable('border-bottom-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-                @include avariable('border-top-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius);
-            }
-            &--nearby:not(&--selected) {
-                @include avariable('color', 'datepicker-item-nearby-color', $datepicker-item-nearby-color);
-            }
-            &--invisible {
-                visibility: hidden;
-            }
-            &--events {
-                @include avariable('padding', 'datepicker-events-item-padding', $datepicker-events-item-padding);
-                position: relative;
-            }
-        }
-        &__events {
-            display: flex;
-            justify-content: center;
-            position: absolute;
-            width: 100%;
-            left: 0;
-            bottom: 15%;
-        }
-        &__event {
-            @include avariable('background-color', 'datepicker-event-background-color', $datepicker-event-background-color);
-            @each $name, $pair in $colors {
-                $color: nth($pair, 1);
-                &--#{$name} {
-                    background-color: $color;
-                    @include avariable('background-color', ('variant-' + #{$name}), $color);
-                }
-            }
-            &--dots {
-                border-radius: 50%;
-                @include avariable('margin', 'datepicker-event-dots-margin', $datepicker-event-dots-margin);
-                @include avariable('height', 'datepicker-event-dots-size', $datepicker-event-dots-size);
-                @include avariable('width', 'datepicker-event-dots-size', $datepicker-event-dots-size);
-            }
-            &--bars {
-                @include avariable('height', 'datepicker-event-bars-height', $datepicker-event-bars-height);
-                width: 100%;
-            }
-        }
-    }
-    &__month__table {
-        display: inline-flex;
-        flex-wrap: wrap;
-        flex-direction: row;
-        width: 17rem;
-    }
-    &__month__cell {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        width: 33.33%;
-        height: 2.5rem;
-    }
-    &--mobile {
-        .o-dpck__header__previous {
-            order: 1;
-            flex-grow: 1;
-            flex-shrink: 1;
-        }
-        .o-dpck__header__next {
-            order: 3;
-            flex-grow: 1;
-            flex-shrink: 1;
-        }
-        .o-dpck__header__list {
-            order: 2;
-            flex-grow: 1;
-            flex-shrink: 1;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_datetimepicker.scss b/packages/oruga/src/scss/components/_datetimepicker.scss
deleted file mode 100644
index 385ea7994..000000000
--- a/packages/oruga/src/scss/components/_datetimepicker.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-/* @docs */
-/* @docs */
-
-.o-dtpck {
-    &__time {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_dropdown.scss b/packages/oruga/src/scss/components/_dropdown.scss
deleted file mode 100644
index 6172149a3..000000000
--- a/packages/oruga/src/scss/components/_dropdown.scss
+++ /dev/null
@@ -1,132 +0,0 @@
-
-/* @docs */
-$dropdown-disabled-opacity: $base-disabled-opacity !default;
-$dropdown-item-active-background-color: $primary !default;
-$dropdown-item-active-color: $primary-invert !default;
-$dropdown-item-color: #000000 !default;
-$dropdown-item-disabled-opacity: $base-disabled-opacity !default;
-$dropdown-item-font-size: $base-font-size !default;
-$dropdown-item-hover-background-color: #f5f5f5 !default;
-$dropdown-item-hover-color: #000000 !default;
-$dropdown-item-line-height: $base-line-height !default;
-$dropdown-item-padding: .375rem 1rem !default;
-$dropdown-item-font-weight: 400 !default;
-$dropdown-menu-background: #ffffff !default;
-$dropdown-menu-border-radius: $base-border-radius !default;
-$dropdown-menu-box-shadow: 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) !default;
-$dropdown-menu-margin: 0 !default;
-$dropdown-menu-padding: .5rem 0 .5rem 0 !default;
-$dropdown-menu-width: 12rem !default;
-$dropdown-menu-zindex: 20 !default;
-$dropdown-mobile-max-height: calc(100vh - 120px) !default;
-$dropdown-mobile-max-width: 460px !default;
-$dropdown-mobile-overlay-color: rgba(#000000, 0.86) !default;
-$dropdown-mobile-overlay-zindex: 40!default;
-$dropdown-mobile-width: calc(100vw - 40px) !default;
-$dropdown-mobile-zindex: 50 !default;
-/* @docs */
-
-.o-drop {
-    display: inline-flex;
-    position: relative;
-    vertical-align: top;
-    &--inline {
-        display: inline;
-        .o-drop__menu {
-            position: static;
-            display: inline-block;
-            padding: 0;
-        }
-    }
-    &__overlay {
-        position: fixed;
-        bottom: 0;
-        left: 0;
-        right: 0;
-        top: 0;
-        cursor: pointer;
-        display: none;
-        @include avariable('background-color', 'dropdown-mobile-overlay-color', $dropdown-mobile-overlay-color);
-        @include avariable('z-index', 'dropdown-mobile-overlay-zindex', $dropdown-mobile-overlay-zindex);
-    }
-    &__trigger {
-        width: 100%;
-    }
-    &__menu {
-        position: absolute;
-        left: 0;
-        top: 100%;
-        display: block;
-        @include avariable('min-width', 'dropdown-menu-width', $dropdown-menu-width);
-        @include avariable('z-index', 'dropdown-menu-zindex', $dropdown-menu-zindex);
-        @include avariable('background-color', 'dropdown-menu-background', $dropdown-menu-background);
-        @include avariable('border-radius', 'dropdown-menu-border-radius', $dropdown-menu-border-radius);
-        @include avariable('box-shadow', 'dropdown-menu-box-shadow', $dropdown-menu-box-shadow);
-        @include avariable('padding', 'dropdown-menu-padding', $dropdown-menu-padding);
-        @include avariable('margin', 'dropdown-menu-margin', $dropdown-menu-margin);
-        &--top-left {
-            top: auto;
-            bottom: 100%;
-            right: 0;
-            left: auto;
-        }
-        &--bottom-left {
-            right: 0;
-            left: auto;
-        }
-        &--top-right {
-            top: auto;
-            bottom: 100%;
-        }
-    }
-    &__item {
-        display: block;
-        position: relative;
-        cursor: pointer;
-        @include avariable('color', 'dropdown-item-color', $dropdown-item-color);
-        @include avariable('font-size', 'dropdown-item-font-size', $dropdown-item-font-size);
-        @include avariable('font-weight', 'dropdown-item-font-weight', $dropdown-item-font-weight);
-        @include avariable('line-height', 'dropdown-item-line-height', $dropdown-item-line-height);
-        @include avariable('padding', 'dropdown-item-padding', $dropdown-item-padding);
-        &--disabled {
-            @include avariable('opacity', 'dropdown-item-disabled-opacity', $dropdown-item-disabled-opacity);
-            pointer-events: none;
-        }
-        &--active {
-            @include avariable('background-color', 'dropdown-item-active-background-color', $dropdown-item-active-background-color);
-            @include avariable('color', 'dropdown-item-active-color', $dropdown-item-active-color);
-        }
-        &:hover:not(&--active) {
-            @include avariable('background-color', 'dropdown-item-hover-background-color', $dropdown-item-hover-background-color);
-            @include avariable('color', 'dropdown-item-hover-color', $dropdown-item-hover-color);
-        }
-    }
-    &--expanded {
-        width: 100%;
-        .o-drop__menu {
-            width: 100%;
-        }
-    }
-    &--disabled {
-        @include avariable('opacity', 'dropdown-disabled-opacity', $dropdown-disabled-opacity);
-        pointer-events: none;
-    }
-    &--mobile {
-        > .o-drop__menu {
-            position: fixed;
-            top: 25%;
-            left: 50%;
-            bottom: auto;
-            right: auto;
-            transform: translate3d(-50%, -25%, 0);
-            overflow-y: auto;
-            @include avariable('width', 'dropdown-mobile-width', $dropdown-mobile-width);
-            @include avariable('max-width', 'dropdown-mobile-max-width', $dropdown-mobile-max-width);
-            @include avariable('max-height', 'dropdown-mobile-max-height', $dropdown-mobile-max-height);
-            @include avariable('z-index', 'dropdown-mobile-zindex', $dropdown-mobile-zindex);
-        }
-        > .o-drop__overlay {
-            display: block;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_field.scss b/packages/oruga/src/scss/components/_field.scss
deleted file mode 100644
index 50784d895..000000000
--- a/packages/oruga/src/scss/components/_field.scss
+++ /dev/null
@@ -1,107 +0,0 @@
-
-/* @docs */
-$field-label-color: #363636 !default;
-$field-label-font-weight: 600 !default;
-$field-margin-bottom: .75rem !default;
-$field-message-font-size: .75rem !default;
-$field-message-margin-top: .25rem !default;
-$field-margin-right: .37rem !default;
-$field-horizontal-label-margin: 0 1.5rem 0 0 !default;
-/* @docs */
-
-.o-field {
-    flex-grow: 1;
-    &:not(:last-child) {
-        @include avariable('margin-bottom', 'field-margin-bottom', $field-margin-bottom);
-    }
-    &__label {
-        display: block;
-        @include avariable('color', 'field-label-color', $field-label-color);
-        @include avariable('font-size', 'base-font-size', $base-font-size);
-        @include avariable('font-weight', 'field-label-font-weight', $field-label-font-weight);
-        @each $name, $value in $sizes {
-            &-#{$name} {
-                @include avariable('font-size', ('field-font-size-' + #{$name}), $value);
-            }
-        }
-    }
-    &__message {
-        display: block;
-        @include avariable('font-size', 'field-message-font-size', $field-message-font-size);
-        @include avariable('margin-top', 'field-message-margin-top', $field-message-margin-top);
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            &-#{$name} {
-                @include avariable('color', ('variant-' + #{$name}), $color);
-            }
-        }
-    }
-    &--addons {
-        display: flex;
-        justify-content: flex-start;
-        > *:first-child:not(:only-child) button,
-        > button:first-child,
-        > *:first-child:not(:only-child) input,
-        > input:first-child,
-        > *:first-child:not(:only-child) select,
-        > select:first-child {
-            border-bottom-right-radius: 0;
-            border-top-right-radius: 0;
-        }
-        > *:last-child:not(:only-child) button,
-        > button:last-child,
-        > *:last-child:not(:only-child) input,
-        > input:last-child,
-        > *:last-child:not(:only-child) select,
-        > select:last-child {
-            border-bottom-left-radius: 0;
-            border-top-left-radius: 0;
-        }
-        > *:not(:first-child):not(:last-child) button,
-        > button:not(:first-child):not(:last-child),
-        > *:not(:first-child):not(:last-child) input,
-        > input:not(:first-child):not(:last-child),
-        > *:not(:first-child):not(:last-child) select,
-        > select:not(:first-child):not(:last-child) {
-            border-radius: 0;
-        }
-    }
-    &--grouped {
-        display: flex;
-        @include side-flex-gap($field-margin-right);
-    }
-    &--grouped-multiline {
-        flex-wrap: wrap;
-        &:last-child {
-            @include avariable('margin-bottom', 'field-margin-bottom', -$field-margin-bottom);
-        }
-    }
-    &__horizontal-body {
-        display: flex;
-        flex-basis: 0;
-        flex-grow: 5;
-        flex-shrink: 1;
-        @include side-flex-gap($field-margin-right);
-    }
-    &--horizontal {
-        display: flex;
-    }
-    &__horizontal-label {
-        flex-basis: 0;
-        flex-grow: 1;
-        flex-shrink: 0;
-        margin: $field-horizontal-label-margin;
-        text-align: right;
-    }
-    &--mobile {
-        .o-field__horizontal-body {
-            all: unset;
-        }
-        &.o-field--horizontal {
-            all: unset;
-        }
-        .o-field__horizontal-label {
-            all: unset;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_icon.scss b/packages/oruga/src/scss/components/_icon.scss
deleted file mode 100644
index e5af95670..000000000
--- a/packages/oruga/src/scss/components/_icon.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-
-/* @docs */
-$icon-spin-duration: 2s !default;
-/* @docs */
-
-@keyframes icon-spin {
-    0% {
-        -webkit-transform: rotate(0deg);
-        transform: rotate(0deg);
-    }
-    100% {
-        -webkit-transform: rotate(359deg);
-        transform: rotate(359deg);
-    }
-}
-
-.o-icon {
-    align-items: center;
-    display: inline-flex;
-    justify-content: center;
-    transition: transform $speed-slow $easing, opacity $speed $easing;
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('icon-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        &--#{$name} {
-            @include avariable('color', ('variant-' + #{$name}), $color);
-        }
-    }
-    &--clickable {
-        pointer-events: auto;
-        cursor: pointer;
-    }
-    &--spin {
-        animation-name: icon-spin;
-        animation-iteration-count: infinite;
-        animation-timing-function: linear;
-        @include avariable('animation-duration', 'icon-spin-duration', $icon-spin-duration);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_input.scss b/packages/oruga/src/scss/components/_input.scss
deleted file mode 100644
index bf6daff14..000000000
--- a/packages/oruga/src/scss/components/_input.scss
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/* @docs */
-$input-background-color: #ffffff !default;
-$input-border-color: $grey-lighter !default;
-$input-border-style: solid !default;
-$input-border-width: 1px !default;
-$input-border-radius: $base-border-radius !default;
-$input-rounded-border-radius: $base-rounded-border-radius !default;
-$input-box-shadow: inset 0 1px 2px hsla(0,0%,4%,.1) !default;
-$input-color: #363636 !default;
-$input-icon-zindex: 4 !default;
-$input-counter-font-size: .75rem !default;
-$input-counter-margin: .25rem 0 0 .5rem !default;
-$input-height: $control-height !default;
-$input-line-height: $base-line-height !default;
-$input-margin: 0 !default;
-$input-padding: $control-padding-vertical $control-padding-horizontal !default;
-$input-textarea-max-height: 600px !default;
-$input-textarea-min-height: 120px !default;
-$input-textarea-padding: 0.625em !default;
-// @deprecated
-$input-width: 100% !default;
-// @deprecated
-$input-max-width: 100% !default;
-/* @docs */
-
-.o-ctrl-input {
-    display: block;
-    position: relative;
-    &--expanded {
-        width: 100%;
-        flex-grow: 1;
-        flex-shrink: 1;
-    }
-}
-
-.o-input {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    display: inline-flex;
-    position: relative;
-    vertical-align: top;
-    width: $input-width;
-    @include avariable('box-shadow', 'input-box-shadow', $input-box-shadow);
-    @include avariable('max-width', 'input-max-width', $input-max-width);
-    @include avariable('background-color', 'input-background-color', $input-background-color);
-    @include avariable('border-color', 'input-border-color', $input-border-color);
-    @include avariable('border-style', 'input-border-style', $input-border-style);
-    @include avariable('border-width', 'input-border-width', $input-border-width);
-    @include avariable('border-radius', 'input-border-radius', $input-border-radius);
-    @include avariable('color', 'input-color', $input-color);
-    @include avariable('font-size', 'base-font-size', $base-font-size);
-    @include avariable('height', 'input-height', $input-height);
-    @include avariable('line-height', 'input-line-height', $input-line-height);
-    @include avariable('padding', 'input-padding', $input-padding);
-    @include avariable('margin', 'input-margin', $input-margin);
-    &-iconspace-left {
-        @include avariable('padding-left', 'input-height', $input-height);
-    }
-    &-iconspace-right {
-        @include avariable('padding-right', 'input-height', $input-height);
-    }
-    &--rounded {
-        @include avariable('border-radius', 'input-rounded-border-radius', $input-rounded-border-radius);
-    }
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('input-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        &--#{$name} {
-            @include avariable('border-color', ('variant-' + #{$name}), $color);
-        }
-    }
-    &__textarea {
-        display: block;
-        max-width: 100%;
-        min-width: 100%;
-        height: auto;
-        resize: vertical;
-        @include avariable('padding', 'input-textarea-padding', $input-textarea-padding);
-        &:not([rows]) {
-            @include avariable('max-height', 'input-textarea-max-height', $input-textarea-max-height);
-            @include avariable('min-height', 'input-textarea-min-height', $input-textarea-min-height);
-        }
-    }
-    &__counter {
-        display: block;
-        float: right;
-        @include avariable('font-size', 'input-counter-font-size', $input-counter-font-size);
-        @include avariable('margin', 'input-counter-margin', $input-counter-margin);
-    }
-    &__icon-left, &__icon-right {
-        position: absolute;
-        top: 0;
-        height: 100%;
-        @include avariable('width', 'input-height', $input-height);
-        @include avariable('z-index', 'input-icon-zindex', $input-icon-zindex);
-    }
-    &__icon-right {
-        right: 0;
-    }
-    &__icon-left {
-        left: 0;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_inputitems.scss b/packages/oruga/src/scss/components/_inputitems.scss
deleted file mode 100644
index 0bd9991b0..000000000
--- a/packages/oruga/src/scss/components/_inputitems.scss
+++ /dev/null
@@ -1,93 +0,0 @@
-/* @docs */
-$inputitems-background-color: $input-background-color !default;
-$inputitems-height: calc(2em - 1px) !default;
-$inputitems-padding: calc(.275em - 1px) 0 0 !default;
-$inputitems-border-color: $grey-lighter !default;
-$inputitems-border-style: solid !default;
-$inputitems-border-width: 1px !default;
-$inputitems-border-radius: $base-border-radius !default;
-$inputitems-color: #363636 !default;
-$inputitems-line-height: $base-line-height !default;
-$inputitems-box-shadow: inset 0 1px 2px hsla(0,0%,4%,.1) !default;
-$inputitems-max-width: 100% !default;
-$inputitems-width: 100% !default;
-$inputitems-counter-font-size: .75rem !default;
-$inputitems-counter-margin: .25rem 0 0 .5rem !default;
-$inputitems-item-background-color: $primary !default;
-$inputitems-item-color: $primary-invert !default;
-$inputitems-item-border-radius: $base-border-radius !default;
-$inputitems-item-margin: 0 0 0 0.275em !default;
-$inputitems-item-padding: 0 .75em 0 .75em !default;
-$inputitems-margin-icon-to-text: .1875em !default;
-/* @docs */
-
-.o-inputit {
-    display: block;
-    &__container {
-        display: flex;
-        align-items: center;
-        justify-content: flex-start;
-        position: relative;
-        vertical-align: top;
-        flex-wrap: wrap;
-        @include avariable('max-width', 'inputitems-max-width', $inputitems-max-width);
-        @include avariable('width', 'inputitems-width', $inputitems-width);
-        @include avariable('padding', 'inputitems-padding', $inputitems-padding);
-        @include avariable('background-color', 'inputitems-background-color', $inputitems-background-color);
-        @include avariable('border-color', 'inputitems-border-color', $inputitems-border-color);
-        @include avariable('border-style', 'inputitems-border-style', $inputitems-border-style);
-        @include avariable('border-width', 'inputitems-border-width', $inputitems-border-width);
-        @include avariable('border-radius', 'inputitems-border-radius', $inputitems-border-radius);
-        @include avariable('color', 'inputitems-color', $inputitems-color);
-        @include avariable('font-size', 'base-font-size', $base-font-size);
-        @include avariable('line-height', 'inputitems-line-height', $inputitems-line-height);
-        @include avariable('box-shadow', 'inputitems-box-shadow', $inputitems-box-shadow);
-        @each $name, $value in $sizes {
-            &--#{$name} {
-                @include avariable('font-size', ('inputitems-font-size-' + #{$name}), $value);
-            }
-        }
-    }
-    &__autocomplete {
-        position: static;
-        flex: 1;
-    }
-    &__input {
-        border: none;
-        box-shadow: none;
-        &:focus {
-            box-shadow: none;
-        }
-    }
-    &__item {
-        display: inline-flex;
-        justify-content: center;
-        align-items: center;
-        position: relative;
-        @include side-flex-gap($inputitems-margin-icon-to-text);
-        @include avariable('background-color', 'inputitems-item-background-color', $inputitems-item-background-color);
-        @include avariable('color', 'inputitems-item-color', $inputitems-item-color);
-        @include avariable('border-radius', 'inputitems-item-border-radius', $inputitems-item-border-radius);
-        @include avariable('margin', 'inputitems-item-margin', $inputitems-item-margin);
-        @include avariable('padding', 'inputitems-item-padding', $inputitems-item-padding);
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &--#{$name} {
-                @include avariable('background-color', ('variant-' + #{$name}), $color);
-                @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-            }
-        }
-    }
-    &__counter {
-        display: block;
-        float: right;
-        @include avariable('font-size', 'inputitems-counter-font-size', $inputitems-counter-font-size);
-        @include avariable('margin', 'inputitems-counter-margin', $inputitems-counter-margin);
-    }
-    &--expanded {
-        width: 100%;
-        flex-grow: 1;
-        flex-shrink: 1;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_loading.scss b/packages/oruga/src/scss/components/_loading.scss
deleted file mode 100644
index 45fd9dfb5..000000000
--- a/packages/oruga/src/scss/components/_loading.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/* @docs */
-$loading-overlay-legacy: #7f7f7f !default;
-$loading-overlay: rgba(255,255,255,0.5) !default;
-$loading-zindex: 29 !default;
-$loading-fullpage-zindex: 999 !default;
-/* @docs */
-
-.o-load {
-    position: absolute;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    top: 0;
-    align-items: center;
-    display: flex;
-    justify-content: center;
-    overflow: hidden;
-    @include avariable('z-index', 'loading-zindex', $loading-zindex);
-    &--fullpage {
-        position: fixed;
-        @include avariable('z-index', 'loading-fullpage-zindex', $loading-fullpage-zindex);
-    }
-    &__overlay {
-        position: absolute;
-        bottom: 0;
-        left: 0;
-        right: 0;
-        top: 0;
-        @include avariable('background', 'loading-overlay-legacy', $loading-overlay-legacy);
-        @include avariable('background', 'loading-overlay', $loading-overlay);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_menu.scss b/packages/oruga/src/scss/components/_menu.scss
deleted file mode 100644
index 79ffa81c3..000000000
--- a/packages/oruga/src/scss/components/_menu.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-/* @docs */
-$menu-item-color: $grey-dark !default;
-$menu-item-hover-color: $black !default;
-$menu-item-hover-background-color: $grey-light !default;
-$menu-item-active-color: $primary-invert !default;
-$menu-item-active-background-color: $primary !default;
-$menu-item-disabled-color: $grey-light !default;
-$menu-list-border-left: 1px solid $primary !default;
-$menu-list-line-height: 1.25em !default;
-$menu-item-padding: 0.5em 0.75em !default;
-$menu-nested-list-margin: 0.75em !default;
-$menu-nested-list-padding-left: 0.75em !default;
-$menu-label-color: $grey !default;
-$menu-label-font-size: 0.75em !default;
-$menu-label-spacing: 1em !default;
-/* @docs */
-
-.o-menu {
-    @include avariable('font-size', 'base-font-size', $base-font-size);
-
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('menu-font-size-' + #{$name}), $value);
-        }
-    }
-}
-
-.o-menu-list {
-    @include avariable('line-height', ('menu-list-line-height'), $menu-list-line-height);
-
-    .o-menu-list,
-    .o-menu-item__wrapper {
-        list-style: none;
-    }
-
-    .o-menu-item__submenu {
-        @include avariable('border-left', ('menu-list-border-left'), $menu-list-border-left);
-        @include avariable('padding-left', ('menu-nested-list-padding-left'), $menu-nested-list-padding-left);
-        @include avariable('margin', ('menu-nested-list-margin'), $menu-nested-list-margin);
-    }
-}
-
-.o-menu-label {
-    @include avariable('color', ('menu-label-color'), $menu-label-color);
-    @include avariable('font-size', ('menu-label-font-size'), $menu-label-font-size);
-    text-transform: uppercase;
-
-    &:not(:first-child) {
-        @include avariable('margin-top', ('menu-label-spacing'), $menu-label-spacing);
-    }
-
-    &:not(:last-child) {
-        @include avariable('margin-bottom', ('menu-label-spacing'), $menu-label-spacing);
-    }
-}
-
-.o-menu-item {
-    @include avariable('color', ('menu-item-color'), $menu-item-color);
-    @include avariable('padding', ('menu-item-padding'), $menu-item-padding);
-    display: block;
-    list-style: none;
-
-    &:hover:not(&--active):not(&--disabled) {
-        @include avariable('color', ('menu-item-hover-color'), $menu-item-hover-color);
-        @include avariable('background-color', ('menu-item-hover-background-color'), $menu-item-hover-background-color);
-    }
-
-    &--active {
-        @include avariable('color', ('menu-item-active-color'), $menu-item-active-color);
-        @include avariable('background-color', ('menu-item-active-background-color'), $menu-item-active-background-color);
-    }
-
-    &--disabled {
-        @include avariable('color', ('menu-item-disabled-color'), $menu-item-disabled-color);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_modal.scss b/packages/oruga/src/scss/components/_modal.scss
deleted file mode 100644
index 362448e9e..000000000
--- a/packages/oruga/src/scss/components/_modal.scss
+++ /dev/null
@@ -1,70 +0,0 @@
-
-/* @docs */
-$modal-content-background-color: $white !default;
-$modal-content-border-radius: $base-border-radius !default;
-$modal-overlay-background-color: hsla(0,0%,4%,.86) !default;
-$modal-close-border-radius: $base-rounded-border-radius !default;
-$modal-close-right: 20px !default;
-$modal-close-top: 20px !default;
-$modal-close-size: 32px !default;
-$modal-close-color: $white !default;
-$modal-content-fullscreen-background-color: #f5f5f5 !default;
-$modal-content-max-height: calc(100vh - 160px) !default;
-$modal-content-margin: 0 auto !default;
-$modal-zindex: 40 !default;
-/* @docs */
-
-.o-modal {
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    overflow: hidden;
-    position: fixed;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    top: 0;
-    @include avariable('z-index', 'modal-zindex', $modal-zindex);
-    &__overlay {
-        bottom: 0;
-        left: 0;
-        position: absolute;
-        right: 0;
-        top: 0;
-        @include avariable('background-color', 'modal-overlay-background-color', $modal-overlay-background-color);
-    }
-    &__content {
-        overflow: auto;
-        position: relative;
-        @include avariable('margin', 'modal-content-margin', $modal-content-margin);
-        @include avariable('max-height', 'modal-content-max-height', $modal-content-max-height);
-        @include avariable('background-color', 'modal-content-background-color', $modal-content-background-color);
-        @include avariable('border-radius', 'modal-content-border-radius', $modal-content-border-radius);
-        &--full-screen {
-            width: 100%;
-            height: 100%;
-            max-height: 100vh;
-            margin: 0;
-            @include avariable('background-color', 'modal-content-fullscreen-background-color', $modal-content-fullscreen-background-color);
-        }
-    }
-    &__close {
-        background: none;
-        position: fixed;
-        border: none;
-        display: inline-block;
-        vertical-align: top;
-        @include avariable('border-radius', 'modal-close-border-radius', $modal-close-border-radius);
-        @include avariable('right', 'modal-close-right', $modal-close-right);
-        @include avariable('top', 'modal-close-top', $modal-close-top);
-        @include avariable('height', 'modal-close-size', $modal-close-size);
-        @include avariable('width', 'modal-close-size', $modal-close-size);
-        @include avariable('color', 'modal-close-color', $modal-close-color);
-    }
-    &--mobile {
-        .o-modal__content {
-            width: 100%;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_notification.scss b/packages/oruga/src/scss/components/_notification.scss
deleted file mode 100644
index 73b8ff1ca..000000000
--- a/packages/oruga/src/scss/components/_notification.scss
+++ /dev/null
@@ -1,129 +0,0 @@
-/* @docs */
-$notification-background-color: $primary !default;
-$notification-border-radius: 4px !default;
-$notification-padding: 1.75em 1.75em !default;
-$notification-margin-bottom: 1.5rem !default;
-$notification-animantion: append-animate .3s linear !default;
-$notification-color: $white !default;
-$notification-close-border-radius: $base-rounded-border-radius !default;
-$notification-close-right: .5rem !default;
-$notification-close-top: .5rem !default;
-$notification-close-size: 20px !default;
-$notification-close-color: $white !default;
-$notification-close-background-color: hsla(0,0%,4%,.2) !default;
-$notification-icon-margin-right: 1rem !default;
-$notification-notices-padding: 2em !default;
-$notification-notices-zindex: 1000 !default;
-/* @docs */
-
-.o-notification {
-    // Modifiers
-    @include avariable('background-color', 'notification-background-color', $notification-background-color);
-    @include avariable('color', 'notification-color', $notification-color);
-    @include avariable('border-radius', 'notification-border-radius', $notification-border-radius);
-    @include avariable('padding', 'notification-padding', $notification-padding);
-    @include avariable('margin-bottom', 'notification-margin-bottom', $notification-margin-bottom);
-
-    position: relative;
-    transform-origin: 50% 0;
-    &__content {
-        flex-basis: auto;
-        flex-grow: 1;
-        flex-shrink: 1;
-        text-align: inherit;
-        overflow-y: hidden;
-        overflow-x: auto;
-    }
-    &__wrapper {
-        align-items: flex-start;
-        display: flex;
-        text-align: inherit;
-        padding-top: 0;
-        border: 0;
-    }
-    &__icon {
-        flex-basis: auto;
-        flex-grow: 0;
-        flex-shrink: 0;
-        @include avariable('margin-right', 'notification-icon-margin-right', $notification-icon-margin-right);
-    }
-    &__close {
-        position: absolute;
-        border: none;
-        cursor: pointer;
-        pointer-events: auto;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        flex-grow: 0;
-        flex-shrink: 0;
-        vertical-align: top;
-        @include avariable('background-color', 'notification-close-background-color', $notification-close-background-color);
-        @include avariable('border-radius', 'notification-close-border-radius', $notification-close-border-radius);
-        @include avariable('right', 'notification-close-right', $notification-close-right);
-        @include avariable('top', 'notification-close-top', $notification-close-top);
-        @include avariable('height', 'notification-close-size', $notification-close-size);
-        @include avariable('width', 'notification-close-size', $notification-close-size);
-        @include avariable('color', 'notification-close-color', $notification-close-color);
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        $color-invert: nth($pair, 2);
-        &--#{$name} {
-            border-color: transparent;
-            @include avariable('background-color', ('variant-' + #{$name}), $color);
-            @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-            &:hover {
-                // background-color: darken($color, 2.5%)
-                // IE 11 needs polyfill
-                filter: brightness(97.5%);
-            }
-        }
-    }
-}
-
-.o-notices {
-    position: fixed;
-    display: flex;
-    top: 0;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    overflow: hidden;
-    pointer-events: none;
-    @include avariable('padding', 'notification-notices-padding', $notification-notices-padding);
-    @include avariable('z-index', 'notification-notices-zindex', $notification-notices-zindex);
-    .o-notification {
-        pointer-events: stroke;
-        max-width: 600px;
-        @include avariable('animation', 'notification-animantion', $notification-animantion);
-        &--top, &--bottom {
-            align-self: center;
-        }
-        &--top-right, &--bottom-right {
-            align-self: flex-end;
-        }
-        &--top-left, &--bottom-left {
-            align-self: flex-start;
-        }
-    }
-
-    &--top {
-        flex-direction: column;
-    }
-    &--bottom {
-        flex-direction: column-reverse;
-
-        // Since the columns are reversed, we need to reverse the margin logic from
-        // :not(:last-child) to :not(:first-child)
-        .o-notification {
-            margin-bottom: 0;
-            &:not(:first-child) {
-                margin-bottom: $notification-margin-bottom;
-            }
-        }
-    }
-    &__custom-container {
-        position: absolute;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_pagination.scss b/packages/oruga/src/scss/components/_pagination.scss
deleted file mode 100644
index 5ba441bdb..000000000
--- a/packages/oruga/src/scss/components/_pagination.scss
+++ /dev/null
@@ -1,157 +0,0 @@
-
-/* @docs */
-$pagination-disabled-opacity: $base-disabled-opacity !default;
-$pagination-ellipsis-color: $grey-light !default;
-$pagination-link-border-color: $grey-lighter !default;
-$pagination-link-border-radius: $base-border-radius !default;
-$pagination-link-border: 1px solid transparent !default;
-$pagination-link-color: #363636 !default;
-$pagination-link-current-background-color: $primary !default;
-$pagination-link-current-border-color: $primary !default; // !!!
-$pagination-link-current-color: #fff !default;
-$pagination-link-height: 2.25em !default;
-$pagination-link-hover-border-color: $grey-light !default;
-$pagination-link-line-height: $base-line-height !default;
-$pagination-link-margin: .25rem !default;
-$pagination-link-min-width: 2.25em !default;
-$pagination-link-padding: .5em .5em !default;
-$pagination-margin: -.25rem !default;
-$pagination-rounded-border-radius: $base-rounded-border-radius !default;
-/* @docs */
-
-.o-pag {
-    align-items: center;
-    display: flex;
-    justify-content: center;
-    text-align: center;
-    justify-content: space-between;
-    @include avariable('font-size', 'base-font-size', $base-font-size);
-    @include avariable('margin', 'pagination-margin', $pagination-margin);
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('pagination-font-size-' + #{$name}), $value);
-        }
-    }
-    &__link {
-        -moz-appearance: none;
-        -webkit-appearance: none;
-        align-items: center;
-        box-shadow: none;
-        display: inline-flex;
-        position: relative;
-        vertical-align: top;
-        justify-content: center;
-        text-align: center;
-        text-decoration: none;
-        cursor: pointer;
-        @include unselectable;
-        @include avariable('line-height', 'pagination-link-line-height', $pagination-link-line-height);
-        @include avariable('border', 'pagination-link-border', $pagination-link-border);
-        @include avariable('border-radius', 'pagination-link-border-radius', $pagination-link-border-radius);
-        @include avariable('border-color', 'pagination-link-border-color', $pagination-link-border-color);
-        @include avariable('color', 'pagination-link-color', $pagination-link-color);
-        @include avariable('min-width', 'pagination-link-min-width', $pagination-link-min-width);
-        @include avariable('height', 'pagination-link-height', $pagination-link-height);
-        @include avariable('padding', 'pagination-link-padding', $pagination-link-padding);
-        @include avariable('margin', 'pagination-link-margin', $pagination-link-margin);
-        &:hover {
-            text-decoration: none;
-            @include avariable('border-color', 'pagination-link-hover-border-color', $pagination-link-hover-border-color);
-        }
-        &--rounded {
-            @include avariable('border-radius', 'pagination-rounded-border-radius', $pagination-rounded-border-radius);
-        }
-        &--disabled {
-            pointer-events: none;
-            @include avariable('opacity', 'pagination-disabled-opacity', $pagination-disabled-opacity);
-        }
-        &--current {
-            pointer-events: none;
-            @include avariable('background-color', 'pagination-link-current-background-color', $pagination-link-current-background-color);
-            @include avariable('border-color', 'pagination-link-current-border-color', $pagination-link-current-border-color);
-            @include avariable('color', 'pagination-link-current-color', $pagination-link-current-color);
-        }
-    }
-    &__ellipsis {
-        justify-content: center;
-        text-align: center;
-        pointer-events: none;
-        @include avariable('margin', 'pagination-link-margin', $pagination-link-margin);
-        @include avariable('color', 'pagination-ellipsis-color', $pagination-ellipsis-color);
-    }
-
-    &--simple {
-        justify-content: normal;
-    }
-    &--centered {
-        justify-content: center;
-        .o-pag__previous {
-            order: 1;
-        }
-        .o-pag__next {
-            order: 3;
-        }
-        .o-pag__list {
-            justify-content: center;
-            order: 2;
-        }
-    }
-    &--right {
-        justify-content: flex-end;
-        .o-pag__previous {
-            order: 1;
-        }
-        .o-pag__next {
-            order: 2;
-        }
-        .o-pag__list {
-            justify-content: flex-end;
-            order: 2;
-        }
-    }
-    &__next {
-        order: 3;
-    }
-    &__previous {
-        order: 2;
-    }
-    &__list {
-        align-items: center;
-        display: flex;
-        justify-content: center;
-        text-align: center;
-        list-style: none;
-        flex-wrap: wrap;
-        margin: 0;
-        padding: 0;
-        flex-grow: 1;
-        flex-shrink: 1;
-        justify-content: flex-start;
-        order: 1;
-    }
-    &--mobile {
-        justify-content: flex-start;
-        flex-wrap: wrap;
-        .o-pag__link {
-            flex-grow: 1;
-            flex-shrink: 1;
-        }
-        .o-pag__previous {
-            flex-grow: 1;
-            flex-shrink: 1;
-            order: 0;
-        }
-        .o-pag__next {
-            flex-grow: 1;
-            flex-shrink: 1;
-            order: 0
-        }
-        .o-pag__ellipsis {
-            flex-grow: 1;
-            flex-shrink: 1;
-        }
-        .o-pag__list {
-            order: 0;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_radio.scss b/packages/oruga/src/scss/components/_radio.scss
deleted file mode 100644
index a31fffad7..000000000
--- a/packages/oruga/src/scss/components/_radio.scss
+++ /dev/null
@@ -1,88 +0,0 @@
-
-/* @docs */
-$radio-active-background-color: $primary !default;
-$radio-checked-box-shadow-length: 0 0 0.5em !default;
-$radio-checked-box-shadow-opacity: 0.8 !default;
-$radio-disabled-opacity: $base-disabled-opacity !default;
-$radio-label-padding: 0 0 0 .5em !default;
-$radio-margin-sibiling: 0.5em !default;
-$radio-size: 1rem !default;
-$radio-line-height: 1.25 !default;
-/* @docs */
-
-$HALF_MARGIN_EXPRESSION: "calc($margin * 0.5)";
-
-@function svg_radio_fill($color, $background-color: 'transparent') {
-    $start: '<svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">';
-    $content: '<g transform="matrix(4.38544,0,0,4.38544,-94.4336,-58.9876)"><path d="M32.935,13.679C39.102,13.679 44.108,18.685 44.108,24.852C44.108,31.019 39.102,36.025 32.935,36.025C26.768,36.025 21.761,31.019 21.761,24.852C21.761,18.685 26.768,13.679 32.935,13.679ZM32.798,17.05C37.105,17.05 40.601,20.546 40.601,24.852C40.601,29.158 37.105,32.655 32.798,32.655C28.492,32.655 24.996,29.158 24.996,24.852C24.996,20.546 28.492,17.05 32.798,17.05Z" style="fill:#{$color};"/><circle cx="32.84" cy="24.8" r="7.9" style="fill:#{$background-color};"/></g>';
-    $end: '</svg>';
-    @return svg-encode("#{$start}#{$content}#{$end}");
-}
-
-@function svg_radio_empty($color) {
-    $start: '<svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">';
-    $content: '<g transform="matrix(10.1032,0,0,10.1032,-255.068,-313.298)"><circle cx="30.195" cy="35.959" r="4.85" style="fill:#{$color};"/></g>';
-    $end: '</svg>';
-    @return svg-encode("#{$start}#{$content}#{$end}");
-}
-
-.o-radio {
-    display: inline-flex;
-    align-items: center;
-    cursor: pointer;
-    @include unselectable;
-    @include avariable('line-height', 'radio-line-height', $radio-line-height);
-    @include avariable('margin-right', 'radio-margin-sibiling', $radio-margin-sibiling);
-
-
-    &__check {
-        @include avariable('width', 'radio-size', $radio-size);
-        @include avariable('height', 'radio-size', $radio-size);
-        margin: 0;
-        vertical-align: top;
-        background-position: center;
-        background-size: contain;
-        -webkit-appearance: none;
-        -moz-appearance: none;
-        appearance: none;
-        -webkit-print-color-adjust: exact;
-        print-color-adjust: exact;
-        border-radius: 50%;
-        cursor: pointer;
-        background-repeat: no-repeat;
-        transition-property: background;
-        @include avariable('transition-duration', 'transition-duration', $speed-slow);
-        @include avariable('transition-timing-function', 'transition-timing', $easing);
-
-        background-image: url(svg_radio_empty(variable('radio-active-background-color', $radio-active-background-color)));
-        &--checked {
-            background-image: url(svg_radio_fill(variable('radio-active-background-color', $radio-active-background-color)));
-        }
-    }
-    &__label {
-        @include avariable('padding', 'radio-label-padding', $radio-label-padding);
-    }
-    &--disabled {
-        @include avariable('opacity', 'radio-disabled-opacity', $radio-disabled-opacity);
-    }
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('radio-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        $color-invert: nth($pair, 2);
-        &--#{$name} {
-            .o-radio__check {
-                background-image: url(svg_radio_empty(variable(('variant-' + #{$name}), $color)));
-            }
-            .o-radio__check--checked {
-                background-image: url(svg_radio_fill(
-                    variable(('variant-' + #{$name}), $color),
-                    variable(('variant-invert-' + #{$name}), $color-invert)
-                ));
-            }
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_select.scss b/packages/oruga/src/scss/components/_select.scss
deleted file mode 100644
index e9f2cc596..000000000
--- a/packages/oruga/src/scss/components/_select.scss
+++ /dev/null
@@ -1,115 +0,0 @@
-
-/* @docs */
-$select-background-color: #fff !default;
-$select-border-color: $grey-lighter !default;
-$select-border-width: 1px !default;
-$select-border-style: solid !default;
-$select-border-radius: $base-border-radius !default;
-$select-rounded-border-radius: $base-rounded-border-radius !default;
-$select-box-shadow: none !default;
-$select-color: #363636 !default;
-$select-icon-zindex: 4 !default;
-$select-height: $control-height !default;
-$select-arrow-size: 1rem !default;
-$select-line-height: $base-line-height !default;
-$select-margin: 0 !default;
-$select-max-width: 100% !default;
-$select-width: 100% !default;
-$select-placeholder-opacity: $base-disabled-opacity !default;
-$select-padding: $control-padding-vertical $control-padding-horizontal !default;
-/* @docs */
-
-@function svg_arrow($color) {
-    $start: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">';
-    $content: '<g transform="matrix(5.70052,0,0,5.70052,-1329.79,-547.054)"><path d="M233.451,101.749L235.617,99.422L242.013,105.565L248.463,99.422L250.642,101.749L242.013,110.052L233.451,101.749Z" style="fill:#{$color};stroke:white;stroke-width:0.18px;"/></g>';
-    $end: '</svg>';
-    @return svg-encode("#{$start}#{$content}#{$end}");
-}
-
-.o-ctrl-sel {
-    display: inline-flex;
-    position: relative;
-    &--expanded {
-        width: 100%;
-        flex-grow: 1;
-        flex-shrink: 1;
-    }
-}
-
-.o-sel {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    display: inline-block;
-    position: relative;
-    vertical-align: top;
-    cursor: pointer;
-    justify-content: flex-start;
-    align-items: center;
-    @include avariable('font-size', 'base-font-size', $base-font-size);
-    @include avariable('max-width', 'select-max-width', $select-max-width);
-    @include avariable('width', 'select-width', $select-width);
-    @include avariable('background-color', 'select-background-color', $select-background-color);
-    @include avariable('border-color', 'select-border-color', $select-border-color);
-    @include avariable('border-width', 'select-border-width', $select-border-width);
-    @include avariable('border-style', 'select-border-style', $select-border-style);
-    @include avariable('border-radius', 'select-border-radius', $select-border-radius);
-    @include avariable('color', 'select-color', $select-color);
-    @include avariable('margin', 'select-margin', $select-margin);
-    @include avariable('box-shadow', 'select-box-shadow', $select-box-shadow);
-    @include avariable('line-height', 'select-line-height', $select-line-height);
-    @include avariable('padding', 'select-padding', $select-padding);
-    @include avariable('height', 'select-height', $select-height);
-    &-arrow {
-        background-image: url(svg_arrow(variable('select-arrow-color', $select-color)));
-        background-repeat: no-repeat;
-        @include avariable('background-size', 'select-arrow-size', $select-arrow-size);
-        @include evariable(
-            'background-position', 'calc(100% - $param * 0.5) center',
-            eparam('$param', variable('select-arrow-size', $select-arrow-size))
-        );
-        @include evariable(
-            'padding-right', 'calc($param * 2)',
-            eparam('$param', variable('select-arrow-size', $select-arrow-size))
-        );
-    }
-    &-iconspace-left {
-        @include avariable('padding-left', 'select-height', $select-height);
-    }
-    &-iconspace-right {
-        @include avariable('padding-right', 'select-height', $select-height);
-    }
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('select-font-size-' + #{$name}), $value);
-        }
-    }
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        &--#{$name} {
-            @include avariable('border-color', ('variant-' + #{$name}), $color);
-        }
-    }
-    &--rounded {
-        @include avariable('border-radius', 'select-rounded-border-radius', $select-rounded-border-radius);
-    }
-    &--multiple {
-        height: auto;
-        padding: 0;
-    }
-    &--placeholder {
-        @include avariable('opacity', 'select-placeholder-opacity', $select-placeholder-opacity);
-    }
-    &__icon-left, &__icon-right {
-        position: absolute;
-        top: 0;
-        height: 100%;
-        @include avariable('width', 'select-height', $select-height);
-        @include avariable('z-index', 'select-icon-zindex', $select-icon-zindex);
-    }
-    &__icon-right {
-        right: 0;
-    }
-    &__icon-left {
-        left: 0;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_sidebar.scss b/packages/oruga/src/scss/components/_sidebar.scss
deleted file mode 100644
index 0c0f95207..000000000
--- a/packages/oruga/src/scss/components/_sidebar.scss
+++ /dev/null
@@ -1,80 +0,0 @@
-
-/* @docs */
-$sidebar-overlay: hsla(0,0%,4%,.86) !default;
-$sidebar-box-shadow: 5px 0px 13px 3px rgba($black, 0.1) !default;
-$sidebar-content-background-color: $grey-lighter !default;
-$sidebar-mobile-width: 80px !default;
-$sidebar-width: 260px !default;
-$sidebar-zindex: 38 !default;
-/* @docs */
-
-.o-side {
-    &__content {
-        @include avariable('background-color', 'sidebar-content-background-color', $sidebar-content-background-color);
-        @include avariable('box-shadow', 'sidebar-box-shadow', $sidebar-box-shadow);
-        @include avariable('width', 'sidebar-width', $sidebar-width);
-        @include evariable(
-            'z-index', 'calc($z-index + 1)',
-            eparam('$z-index', variable('sidebar-zindex', $sidebar-zindex))
-        );
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            &--#{$name} {
-                @include avariable('background-color', ('variant-' + #{$name}), $color);
-            }
-        }
-        &--fixed {
-            position: fixed;
-            left: 0;
-            top: 0;
-        }
-        &--absolute {
-            position: absolute;
-            left: 0;
-            top: 0;
-        }
-        &--right {
-            left: auto;
-            right: 0;
-        }
-        &--mini {
-            @include avariable('width', 'sidebar-mobile-width', $sidebar-mobile-width);
-        }
-        &--mini-expand {
-            &:hover {
-                transition: width;
-                @include avariable('transition-duration', 'transition-duration', $speed-slow);
-                @include avariable('transition-timing-function', 'transition-timing', $easing);
-                @include avariable('width', 'sidebar-width', $sidebar-width);
-            }
-        }
-        &--static {
-            position: static;
-        }
-        &--absolute, &--static {
-            transition: width $speed-slow $easing;
-        }
-        &--fullwidth {
-            width: 100%;
-            max-width: 100%;
-        }
-        &--fullheight {
-            height: 100%;
-            max-height: 100%;
-            overflow: hidden;
-            overflow-y: auto;
-            display: flex;
-            flex-direction: column;
-            align-content: stretch;
-        }
-    }
-    &__overlay {
-        bottom: 0;
-        left: 0;
-        right: 0;
-        top: 0;
-        position: fixed;
-        @include avariable('background', 'sidebar-overlay', $sidebar-overlay);
-        @include avariable('z-index', 'sidebar-zindex', $sidebar-zindex);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_skeleton.scss b/packages/oruga/src/scss/components/_skeleton.scss
deleted file mode 100644
index 47ca269eb..000000000
--- a/packages/oruga/src/scss/components/_skeleton.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* @docs */
-$skeleton-background: linear-gradient(90deg, $grey-lighter 25%, rgba($grey-lighter, 0.5) 50%, $grey-lighter 75%) !default;
-$skeleton-border-radius: $base-border-radius !default;
-$skeleton-duration: 1.5s !default;
-$skeleton-margin: .5rem 0 0 0 !default;
-/* @docs */
-
-@keyframes skeleton-loading {
-    0% {
-        background-position: 100% 50%;
-    }
-    100% {
-        background-position: 0 50%;
-    }
-}
-
-@mixin steps-size($size, $name: null) {
-    @if ($name != null) {
-        @include avariable('line-height', ('skeleton-font-size-' + #{$name}), $size);
-    } @else {
-        @include avariable('line-height', 'skeleton-font-size', $size);
-    }
-}
-
-.o-sklt {
-    display: inline-flex;
-    flex-direction: column;
-    vertical-align: middle;
-    width: 100%;
-    &__item {
-        width: 100%;
-        @include avariable('background', 'skeleton-background', $skeleton-background);
-        &--rounded {
-            @include avariable('border-radius', 'skeleton-border-radius', $skeleton-border-radius);
-        }
-        &--animated {
-            background-size: 400% 100%;
-            animation-name: skeleton-loading;
-            animation-iteration-count: infinite;
-            @include avariable('animation-duration', 'skeleton-duration', $skeleton-duration);
-        }
-        &::after {
-            content: "\00a0";
-        }
-        @include avariable('margin', 'skeleton-margin', $skeleton-margin);
-        @include steps-size($base-font-size);
-        @each $name, $value in $sizes {
-            &--#{$name} {
-                @include steps-size($value, $name);
-            }
-        }
-    }
-    &--centered {
-        align-items: center;
-    }
-    &--right {
-        align-items: flex-end;
-        @include avariable('margin', 'skeleton-margin', $skeleton-margin);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_slider.scss b/packages/oruga/src/scss/components/_slider.scss
deleted file mode 100644
index 13ae11f97..000000000
--- a/packages/oruga/src/scss/components/_slider.scss
+++ /dev/null
@@ -1,152 +0,0 @@
-
-/* @docs */
-$slider-background: transparent !default;
-$slider-margin: 1em 0 !default;
-$slider-mark-size: 0.75rem !default;
-$slider-font-size: $base-font-size !default;
-$slider-rounded-borded-radius: $base-rounded-border-radius !default;
-$slider-thumb-background: $white !default;
-$slider-thumb-border: 1px solid $grey-light !default;
-$slider-thumb-radius: $base-border-radius !default;
-$slider-thumb-shadow: none !default;
-$slider-thumb-to-track-ratio: 2 !default;
-$slider-thumb-transform: scale(1.25) !default;
-$slider-tick-background: $primary !default;
-$slider-tick-radius: $base-border-radius !default;
-$slider-tick-to-track-ratio: 0.5 !default;
-$slider-tick-width: 3px !default;
-$slider-track-background: $grey-lighter !default;
-$slider-fill-background: $primary !default;
-$slider-track-border-radius: $base-border-radius !default;
-$slider-track-border: 0px solid $grey !default;
-$slider-track-disabled: 0.5 !default;
-$slider-track-radius: $base-border-radius !default;
-$slider-track-shadow: 0px 0px 0px $grey !default;
-/* @docs */
-
-@mixin slider-size($size, $name: null) {
-	$track-height: divide($size, $slider-thumb-to-track-ratio);
-	$tick-height: $track-height * $slider-tick-to-track-ratio;
-	$thumb-size: $size;
-
-    .o-slide__track {
-        @if ($name != null) {
-            @include avariable('height', ('slider-track-height-' + #{$name}), $track-height);
-        } @else {
-            @include avariable('height', 'slider-track-height', $track-height);
-        }
-    }
-
-	.o-slide__thumb {
-        @if ($name != null) {
-            @include avariable('height', 'slider-thumb-size-' + #{$name}, $thumb-size);
-            @include avariable('width', 'slider-thumb-size-' + #{$name}, $thumb-size);
-        } @else {
-            @include avariable('height', 'slider-thumb-size', $thumb-size);
-            @include avariable('width', 'slider-thumb-size', $thumb-size);
-        }
-    }
-
-    .o-slide__tick {
-        @if ($name != null) {
-            @include avariable('height', 'slider-tick-height-' + #{$name}, $tick-height);
-        } @else {
-            @include avariable('height', 'slider-tick-height', $tick-height);
-        }
-    }
-
-    .o-slide__tick-label {
-        @if ($name != null) {
-            @include avariable('font-size', 'slider-mark-size-' + #{$name}, $slider-mark-size);
-        } @else {
-            @include avariable('font-size', 'slider-mark-size', $slider-mark-size);
-        }
-        position: absolute;
-        @include evariable(
-            'top', 'calc($label-top * 0.5 + 2px)',
-            eparam('$label-top', variable('slider-tick-label-top-' + #{$name}, $track-height))
-        );
-        left: 50%;
-        transform: translateX(-50%);
-    }
-}
-
-.o-slide {
-    @include avariable('margin', 'slider-margin', $slider-margin);
-    @include avariable('background', 'slider-background', $slider-background);
-    width: 100%;
-
-    &__thumb {
-        @include avariable('box-shadow', 'slider-thumb-shadow', $slider-thumb-shadow);
-        @include avariable('border', 'slider-thumb-border', $slider-thumb-border);
-        @include avariable('border-radius', 'slider-thumb-radius', $slider-thumb-radius);
-        @include avariable('background', 'slider-thumb-background', $slider-thumb-background);
-        &:focus {
-            @include avariable('transform', 'slider-thumb-transform', $slider-thumb-transform);
-        }
-        &--rounded {
-            @include avariable('border-radius', 'slider-rounded-borded-radius', $slider-rounded-borded-radius);
-        }
-        &--dragging {
-            cursor: grabbing;
-            filter: brightness(0.8);
-        }
-    }
-
-    &__track {
-        display: flex;
-        align-items: center;
-        position: relative;
-        cursor: pointer;
-        @include avariable('background', 'slider-track-background', $slider-track-background);
-        @include avariable('border-radius', 'slider-track-border-radius', $slider-track-border-radius);
-    }
-    &__fill {
-        position: absolute;
-        height: 100%;
-        @include avariable('box-shadow', 'slider-track-shadow', $slider-track-shadow);
-        @include avariable('background', 'slider-fill-background', $slider-fill-background);
-        @include avariable('border-radius', 'slider-track-radius', $slider-track-radius);
-        @include avariable('border', 'slider-track-border', $slider-track-border);
-        // Fix alignment in IE 11. Cancel out for others
-        top: 50%;
-        transform: translateY(-50%);
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            &--#{$name} {
-                @include avariable('background', ('variant-' + #{$name}), $color);
-            }
-        }
-    }
-    @include slider-size($slider-font-size);
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include slider-size($value, $name);
-        }
-    }
-    &__tick {
-        position: absolute;
-        transform: translate(-50%, -50%);
-        top: 50%;
-		@include avariable('width', 'slider-tick-width', $slider-tick-width);
-        @include avariable('background', 'slider-tick-background', $slider-tick-background);
-        @include avariable('border-radius', 'slider-tick-radius', $slider-tick-radius);
-        &--hidden {
-            background: transparent;
-        }
-    }
-    &__thumb-wrapper {
-        display: inline-flex;
-        align-items: center;
-        position: absolute;
-        cursor: grab;
-        transform: translate(-50%, -50%);
-        top: 50%;
-        flex-direction: column; // Fix shrinked thumb at the end in IE 11
-    }
-    &--disabled {
-        cursor: not-allowed;
-        pointer-events: none;
-        @include avariable('opacity', 'slider-track-disabled', $slider-track-disabled);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_steps.scss b/packages/oruga/src/scss/components/_steps.scss
deleted file mode 100644
index f1e1e1171..000000000
--- a/packages/oruga/src/scss/components/_steps.scss
+++ /dev/null
@@ -1,356 +0,0 @@
-
-/* @docs */
-$steps-details-background-color: hsl(0, 0%, 100%) !default;
-$steps-details-padding: .2em !default;
-$steps-marker-background: $grey-light !default;
-$steps-marker-color: $primary-invert !default;
-$steps-marker-border: .2em solid #fff !default;
-$steps-marker-font-weight: 700 !default;
-$steps-marker-rounded-border-radius: $base-rounded-border-radius !default;
-$steps-color: $grey-lighter !default;
-$steps-previous-color: $primary !default;
-$steps-active-color: $primary !default;
-$steps-divider-height: .2em !default;
-$steps-vertical-padding: 1em 0 !default;
-$steps-item-line-height: $base-line-height !default;
-$steps-link-color: hsl(0, 0%, 29%) !default;
-$steps-content-padding: 1rem !default;
-$steps-font-size: $base-font-size !default;
-$steps-details-title-font-weight: 600 !default;
-/* @docs */
-
-$LR_CALC_EXPRESSION: "calc(($size - $divider-height) * 0.5)";
-$GRADIENT_EXPRESSION: "linear-gradient(to left, $param1 50%, $param2 50%)";
-
-@mixin steps-size($size, $name: null) {
-
-    @include avariable('font-size', if($name != null, ('size-' + #{$name}), 'steps-size'), $size);
-    @include evariable(
-        'min-height', $MULTIPLY_EXPRESSION,
-        eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)),
-        eparam('$factor', 2)
-    );
-
-    .o-steps__divider {
-        @include avariable('height', 'steps-divider-height', $steps-divider-height);
-        @include avariable('top', if($name != null, ('size-' + #{$name}), 'steps-size'), $size);
-    }
-
-    .o-steps__marker {
-        @include evariable(
-            'height', $MULTIPLY_EXPRESSION,
-            eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)),
-            eparam('$factor', 2)
-        );
-        @include evariable(
-            'width', $MULTIPLY_EXPRESSION,
-            eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)),
-            eparam('$factor', 2)
-        );
-    }
-
-    .o-steps__title {
-        @include avariable('background-color', 'steps-details-background-color', $steps-details-background-color);
-        text-align: center;
-        z-index: 1;
-        @include avariable('padding', 'steps-details-padding', $steps-details-padding);
-        @include evariable(
-            'font-size', $MULTIPLY_EXPRESSION,
-            eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)),
-            eparam('$factor', 1.2)
-        );
-        @include avariable('height', 'steps-details-title-font-weight', $steps-details-title-font-weight);
-        @include avariable('line-height', if($name != null, ('size-' + #{$name}), 'steps-size'), $size);
-    }
-
-    .o-steps__wrapper-vertical {
-        .o-steps--label-right {
-            .o-steps__divider {
-                @include evariable(
-                    'left', $LR_CALC_EXPRESSION,
-                    eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'),  $size)),
-                    eparam('$divider-height', variable('steps-divider-height', $steps-divider-height))
-                );
-            }
-        }
-        .o-steps--label-left {
-            .o-steps__divider {
-                left: auto;
-                @include evariable(
-                    'right', $LR_CALC_EXPRESSION,
-                    eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'),  $size)),
-                    eparam('$divider-height', variable('steps-divider-height', $steps-divider-height))
-                );
-            }
-        }
-
-        &.o-steps__wrapper-position-right {
-            .o-steps--label-right {
-                .o-steps__divider {
-                    @include evariable(
-                        'left', $LR_CALC_EXPRESSION,
-                        eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'),  $size)),
-                        eparam('$divider-height', variable('steps-divider-height', $steps-divider-height))
-                    );
-                }
-            }
-            .o-steps--label-left {
-                .o-steps__divider {
-                    left: auto;
-                    @include evariable(
-                        'right', $LR_CALC_EXPRESSION,
-                        eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'),  $size)),
-                        eparam('$divider-height', variable('steps-divider-height', $steps-divider-height))
-                    );
-                }
-            }
-        }
-    }
-}
-
-.o-steps {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0;
-    padding: 0;
-    @include steps-size($steps-font-size);
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include steps-size($value, $name);
-        }
-    }
-    &__nav-item {
-        margin: 0;
-        padding: 0;
-        @include avariable('line-height', 'steps-item-line-height', $steps-item-line-height);
-        margin-top: 0;
-        position: relative;
-        flex-grow: 1;
-        flex-basis: 1em;
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &--#{$name} {
-                &.o-steps__nav-item-active {
-                    .o-steps__marker {
-                        @include avariable('background-color', ('variant-invert-' + #{$name}), $color-invert);
-                        @include avariable('border-color', ('variant-' + #{$name}), $color);
-                        @include avariable('color', ('variant-' + #{$name}), $color);
-                    }
-                    .o-steps__divider {
-                        @include evariable(
-                            'background', $GRADIENT_EXPRESSION,
-                            eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)),
-                            eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)),
-                        );
-                        background-size: 200% 100%;
-                    }
-                }
-                &.o-steps__nav-item-previous {
-                    .o-steps__marker {
-                        @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-                        @include avariable('background-color', ('variant-' + #{$name}), $color);
-                    }
-                    .o-steps__divider {
-                        @include evariable(
-                            'background', $GRADIENT_EXPRESSION,
-                            eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)),
-                            eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)),
-                        );
-                        background-size: 200% 100%;
-                    }
-                }
-            }
-        }
-    }
-
-    &__divider {
-        background: linear-gradient(to left, variable('steps-divider-color-bg', $steps-color) 50%, variable('steps-divider-color', $primary) 50%);
-        background-size: 200% 100%;
-        background-position: right bottom;
-        // This will contain the divider
-        content: " ";
-        display: block;
-        position: absolute;
-        bottom: 0;
-        left: -50%;
-        width: 100%;
-    }
-
-    &__content {
-        position: relative;
-        overflow: visible;
-        display: flex;
-        flex-direction: column;
-        @include avariable('padding', 'steps-content-padding', $steps-content-padding);
-        &-transitioning {
-            overflow: hidden;
-        }
-    }
-
-    &--animated {
-        .o-steps__divider {
-            transition-property: background;
-            @include avariable('transition-duration', 'transition-duration', $speed-slow);
-            @include avariable('transition-timing-function', 'transition-timing', $easing);
-        }
-    }
-
-    &__link {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        flex-direction: column;
-        @include avariable('color', 'steps-link-color', $steps-link-color);
-        cursor: pointer;
-        text-decoration: none;
-
-        &-label-right {
-            flex-direction: row;
-        }
-
-        &-label-left {
-            flex-direction: row-reverse;
-        }
-
-        &:hover {
-            text-decoration: none;
-        }
-        &:not(&-clickable) {
-            cursor: not-allowed;
-        }
-    }
-
-    &__marker {
-        align-items: center;
-        display: flex;
-        justify-content: center;
-        @include avariable('font-weight', 'steps-marker-font-weight', $steps-marker-font-weight);
-        @include avariable('background', 'steps-marker-background', $steps-marker-background);
-        @include avariable('color', 'steps-marker-color', $steps-marker-color);
-        @include avariable('border', 'steps-marker-border', $steps-marker-border);
-        z-index: 1;
-        overflow: hidden;
-
-        &--rounded {
-            @include avariable('border-radius', 'steps-marker-rounded-border-radius', $steps-marker-rounded-border-radius);
-        }
-    }
-
-    &__details {
-        @include avariable('background-color', 'steps-details-background-color', $steps-details-background-color);
-        text-align: center;
-        z-index: 1;
-        @include avariable('padding', 'steps-details-padding', $steps-details-padding);
-    }
-
-    &__nav-item-active {
-        .o-steps__link {
-            cursor: default;
-        }
-
-        .o-steps__marker {
-            @include avariable('background-color', 'steps-marker-color', $steps-marker-color);
-            @include avariable('border-color', 'steps-active-color', $steps-active-color);
-            @include avariable('color', 'steps-active-color', $steps-active-color);
-        }
-
-        .o-steps__divider {
-            background-position: left bottom;
-        }
-    }
-
-    &__nav-item-previous {
-        .o-steps__marker {
-            @include avariable('color', 'steps-marker-color', $steps-marker-color);
-            @include avariable('background-color', 'steps-previous-color', $steps-previous-color);
-        }
-
-        .o-steps__divider {
-            background-position: left bottom;
-        }
-    }
-
-    &__item {
-        flex-shrink: 0;
-        flex-basis: auto;
-    }
-
-    &__wrapper-vertical {
-        display: flex;
-        flex-direction: row;
-        flex-wrap: wrap;
-
-        .o-steps {
-            height: 100%;
-            flex-direction: column;
-        }
-
-        .o-steps__divider {
-            height: 100%;
-            @include avariable('width', 'steps-divider-height', $steps-divider-height);
-            top: -50%;
-            left: calc(50% - #{$steps-divider-height * 0.5});
-        }
-
-        .o-steps__item-active, .o-steps__item-previous {
-            .o-steps__divider {
-                background-position: right top;
-            }
-        }
-
-        .o-steps__nav-item {
-            width: 100%;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            @include avariable('padding', 'steps-vertical-padding', $steps-vertical-padding);
-            // Override marker connector color per step
-            @each $name, $pair in $colors {
-                $color: nth($pair, 1);
-                &--#{$name} {
-                    .o-steps__divider {
-                        @include evariable(
-                            'background', $GRADIENT_EXPRESSION,
-                            eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)),
-                            eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)),
-                        );
-                        background-size: 100% 200%;
-                        background-position: left bottom;
-                    }
-                }
-            }
-        }
-
-        .o-steps__content {
-            flex-grow: 1;
-            flex-basis: 70%;
-        }
-
-        .o-steps__navigation {
-            flex-basis: 100%;
-        }
-
-        &.o-steps__wrapper-position-right {
-            flex-direction: row-reverse;
-        }
-    }
-
-    &--mobile {
-        .o-steps__title {
-            display: none;
-            padding: 0;
-        }
-        .o-steps__divider {
-            @include avariable('height', 'steps-divider-height', $steps-divider-height);
-            @include avariable('top', 'steps-divider-top', $steps-font-size);
-            @each $name, $value in $sizes {
-                .o-steps--#{$name} {
-                    @include avariable('top', 'size-' + #{$name}, $value);
-                }
-            }
-        }
-    }
-}
-
-
diff --git a/packages/oruga/src/scss/components/_switch.scss b/packages/oruga/src/scss/components/_switch.scss
deleted file mode 100644
index 495f0bbec..000000000
--- a/packages/oruga/src/scss/components/_switch.scss
+++ /dev/null
@@ -1,114 +0,0 @@
-/* @docs */
-$switch-active-background-color: $primary !default;
-$switch-action-background: #f5f5f5 !default;
-$switch-background: $grey-light !default;
-$switch-border-radius: $base-border-radius !default;
-$switch-box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05) !default;
-$switch-disabled-opacity: $base-disabled-opacity !default;
-$switch-margin-label: .5em !default;
-$switch-padding: 0.2em !default;
-$switch-rounded-border-radius: $base-rounded-border-radius !default;
-$switch-width: 2.75 * 1em !default;
-/* @docs */
-
-.o-switch {
-    cursor: pointer;
-    display: inline-flex;
-    align-items: center;
-    position: relative;
-    @include unselectable;
-
-    @each $name, $pair in $colors {
-        $color: nth($pair, 1);
-        &--#{$name} {
-            .o-switch__check--checked {
-                @include avariable('background', ('variant-' + #{$name}), $color);
-            }
-        }
-        &--#{$name}-passive {
-            .o-switch__check:not(.o-switch__check--checked) {
-                @include avariable('background', ('variant-' + #{$name}), $color);
-            }
-        }
-    }
-
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('font-size-' + #{name}), $value);
-        }
-    }
-
-    &__label {
-        @include avariable('margin-left', 'switch-margin-label', $switch-margin-label);
-    }
-
-    &--left {
-        flex-direction: row-reverse;
-        .o-switch__label {
-            margin-left: 0;
-            @include avariable('margin-right', 'switch-margin-label', $switch-margin-label);
-        }
-    }
-
-    &__check-switch {
-        content: "";
-        display: block;
-        @include evariable(
-            'height', 'calc(($width - $padding * 2) * 0.5)',
-            eparam('$width', variable('switch-width', $switch-width)),
-            eparam('$padding', variable('switch-padding', $switch-padding))
-        );
-        @include evariable(
-            'width', 'calc(($width - $padding * 2) * 0.5)',
-            eparam('$width', variable('switch-width', $switch-width)),
-            eparam('$padding', variable('switch-padding', $switch-padding))
-        );
-        @include avariable('background', 'switch-action-background', $switch-action-background);
-        @include avariable('box-shadow', 'switch-box-shadow', $switch-box-shadow);
-        transition-property: transform;
-        @include avariable('transition-duration', 'transition-duration', $speed-slow);
-        @include avariable('transition-timing-function', 'transition-timing', $easing);
-        will-change: transform;
-        transform-origin: left;
-    }
-
-    &__check {
-        display: flex;
-        align-items: center;
-        flex-shrink: 0;
-        @include avariable('width', 'switch-width', $switch-width);
-        @include evariable(
-            'height', 'calc($width * 0.5 + $padding)',
-            eparam('$width', variable('switch-width', $switch-width)),
-            eparam('$padding', variable('switch-padding', $switch-padding))
-        );
-        @include avariable('padding', 'switch-padding', $switch-padding);
-        @include avariable('background', 'switch-background', $switch-background);
-        @include avariable('border-radius', 'switch-border-radius', $switch-border-radius);
-        transition-property: background;
-        @include avariable('transition-duration', 'transition-duration', $speed-slow);
-        @include avariable('transition-timing-function', 'transition-timing', $easing);
-
-        &--checked {
-            @include avariable('background', 'switch-active-background-color', $switch-active-background-color);
-            .o-switch__check-switch {
-                transform: translate3d(100%, 0, 0);
-            }
-        }
-    }
-
-    &__input {
-        position: absolute;
-        left: 0;
-        opacity: 0;
-        z-index: -1;
-    }
-
-    &--rounded {
-        @include avariable('border-radius', 'switch-rounded-border-radius', $switch-rounded-border-radius);
-    }
-
-    &--disabled {
-        @include avariable('opacity', 'switch-disabled-opacity', $switch-disabled-opacity);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_table.scss b/packages/oruga/src/scss/components/_table.scss
deleted file mode 100644
index d8449f78b..000000000
--- a/packages/oruga/src/scss/components/_table.scss
+++ /dev/null
@@ -1,309 +0,0 @@
-
-/* @docs */
-$table-background-color: #fff !default;
-$table-background: #f5f5f5 !default;
-$table-border: 1px solid transparent !default;
-$table-border-radius: $base-border-radius !default;
-$table-card-box-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default;
-$table-card-cell-font-weight: 600 !default;
-$table-card-cell-padding: 0 0.5em 0 0 !default;
-$table-card-cell-text-align: left !default;
-$table-card-detail-margin: -1rem 0 0 0;
-$table-card-margin: 0 0 1rem 0;
-$table-color: black !default;
-$table-current-sort-border-color: $grey !default;
-$table-current-sort-font-weight: 700 !default;
-$table-current-sort-hover-border-color: $grey !default;
-$table-detail-background: #fafafa !default;
-$table-detail-box-shadow: inset 0 1px 3px $grey !default;
-$table-detail-chevron-color: $primary !default;
-$table-detail-chevron-width: 40px !default;
-$table-detail-padding: 1rem !default;
-$table-focus-border-color: $primary !default;
-$table-focus-box-shadow: 0 0 0 0.125em rgba($primary, 0.25) !default;
-$table-hoverable-background-color: #fafafa !default;
-$table-narrow-padding: .25em .5em !default;
-$table-row-active-background-color: $primary !default;
-$table-row-active-color: $primary-invert !default;
-$table-sticky-header-height: 300px !default;
-$table-sticky-zindex: 1 !default;
-$table-striped-background-color: #fafafa !default;
-$table-td-border: 1px solid $grey-lighter !default;
-$table-td-padding: .5em .75em !default;
-$table-th-border: 2px solid $grey-lighter !default;
-$table-th-checkbox-width: 40px !default;
-$table-th-color: #363636 !default;
-$table-th-detail-width: 14px !default;
-$table-th-font-weight: 600 !default;
-$table-th-padding: 0.5em 0.75em !default;
-/* @docs */
-
-.o-table {
-    display: table;
-    width: 100%;
-    border-collapse: separate;
-    border-spacing: 0;
-    @include avariable('border', 'table-border', $table-border);
-    @include avariable('border-radius', 'table-border-radius', $table-border-radius);
-    @include avariable('background-color', 'table-background-color', $table-background-color);
-    @include avariable('color', 'table-color', $table-color);
-    &__root {
-        position: relative;
-    }
-    &__wrapper {
-        transition: opacity $speed $easing;
-        position: relative;
-        &--sticky-header {
-            @include avariable('height', 'table-sticky-header-height', $table-sticky-header-height);
-            overflow-y: auto;
-            th {
-                position: -webkit-sticky;
-                position: sticky;
-                left: 0;
-                top: 0;
-                @include avariable('background', 'table-background-color', $table-background-color);
-            }
-        }
-        &--scrollable {
-            -webkit-overflow-scrolling: touch;
-            overflow-x: auto;
-            max-width: 100%;
-        }
-        &--mobile {
-            overflow-x: auto;
-            .o-table__mobile-sort {
-                display: block;
-            }
-            // cards
-            .o-table {
-                background-color: transparent;
-            }
-            thead {
-                tr {
-                    box-shadow: none;
-                    border-width: 0;
-                    th {
-                        display: none;
-                    }
-                    .o-table-th-checkbox {
-                        display: block;
-                        width: 100%;
-                        text-align: right;
-                        border: 0;
-                    }
-                }
-            }
-            tfoot {
-                th {
-                    border: 0;
-                    display: inherit;
-                }
-            }
-            tr {
-                @include avariable('box-shadow', 'table-card-box-shadow', $table-card-box-shadow);
-                max-width: 100%;
-                position: relative;
-                display: block;
-                td {
-                    border: 0;
-                    display: inherit;
-                    &:last-child {
-                        border-bottom: 0;
-                    }
-                }
-                &:not(:last-child) {
-                    @include avariable('margin', 'table-card-margin', $table-card-margin);
-                }
-                &:not(.o-table__tr--selected) {
-                    background: inherit;
-                    background: $table-background-color;
-                    &:hover {
-                        background-color: inherit;
-                        background-color: $table-background-color;
-                    }
-                }
-                &.o-table--detailed {
-                    @include avariable('margin', 'table-card-detail-margin', $table-card-detail-margin);
-                }
-            }
-            tr:not(.o-table--detailed):not(.o-table--empty):not(.o-table__footer) {
-                td {
-                    display: flex;
-                    width: auto;
-                    justify-content: space-between;
-                    text-align: right;
-                    @include avariable('border-bottom', 'table-background', ($table-background 1px solid));
-                    &:before {
-                        content: attr(data-label);
-                        @include avariable('font-weight', 'table-card-cell-font-weight', $table-card-cell-font-weight);
-                        @include avariable('padding-right', 'table-card-cell-padding', $table-card-cell-padding);
-                        @include avariable('text-align', 'table-card-cell-text-align', $table-card-cell-text-align);
-                    }
-                }
-            }
-        }
-    }
-    &__mobile-sort {
-        display: none;
-    }
-    &__th {
-        vertical-align: top;
-        text-align: left;
-        position: relative;
-        @include avariable('font-weight', 'table-th-font-weight', $table-th-font-weight);
-        @include avariable('color', 'table-th-color', $table-th-color);
-        @include avariable('border-bottom', 'table-th-border', $table-th-border);
-        @include avariable('padding', 'table-th-padding', $table-th-padding);
-        &--centered {
-            text-align: center;
-        }
-        &--right {
-            text-align: right;
-        }
-        &__sort-icon {
-            position: absolute;
-            right: 0;
-        }
-        &-checkbox {
-            @include avariable('width', 'table-th-checkbox-width', $table-th-checkbox-width);
-        }
-        &-current-sort {
-            @include avariable('border-color', 'table-current-sort-border-color', $table-current-sort-border-color);
-            @include avariable('font-weight', 'table-current-sort-font-weight', $table-current-sort-font-weight);
-        }
-        &--sortable {
-            cursor: pointer;
-            &:hover {
-                @include avariable('border-color', 'table-current-sort-hover-border-color', $table-current-sort-hover-border-color);
-            }
-        }
-        &--sticky {
-            position: -webkit-sticky;
-            position: sticky;
-            left: 0;
-            top: 0;
-            @include evariable(
-                'z-index', $SUM_EXPRESSION,
-                eparam('$param', variable('table-sticky-zindex', $table-sticky-zindex)),
-                eparam('$factor', 2)
-            );
-            @include avariable('background', 'table-background-color', $table-background-color);
-        }
-        &--unselectable {
-            @include unselectable;
-        }
-        &--detailed {
-            @include avariable('width', 'table-th-detail-width', $table-th-detail-width);
-        }
-    }
-
-    &__td {
-        vertical-align: top;
-        text-align: left;
-        @include avariable('border-bottom', 'table-td-border', $table-td-border);
-        @include avariable('padding', 'table-td-padding', $table-td-padding);
-        &--sticky {
-            position: -webkit-sticky;
-            position: sticky;
-            left: 0;
-            @include avariable('z-index', 'table-sticky-zindex', $table-sticky-zindex);
-            @include avariable('background', 'table-background-color', $table-background-color);
-        }
-        &--right {
-            text-align: right;
-        }
-        &--centered {
-            text-align: center;
-        }
-        &-chevron {
-            vertical-align: middle;
-            @include avariable('width', 'table-detail-chevron-width', $table-detail-chevron-width);
-            @include avariable('color', 'table-detail-chevron-color', $table-detail-chevron-color);
-        }
-    }
-
-    &:focus {
-        @include avariable('border-color', 'table-focus-border-color', $table-focus-border-color);
-        @include avariable('box-shadow', 'table-focus-box-shadow', $table-focus-box-shadow);
-    }
-
-    &--bordered {
-        tr:last-child {
-            td, th {
-                @include avariable('border', 'table-td-border', $table-td-border);
-            }
-        }
-        td, th {
-            @include avariable('border', 'table-td-border', $table-td-border);
-        }
-    }
-
-    &--striped {
-        tbody tr:not(.o-table__tr--selected):nth-child(2n) {
-            @include avariable('background-color', 'table-striped-background-color', $table-striped-background-color);
-        }
-    }
-
-    &--narrowed {
-        td, th {
-            @include avariable('padding', 'table-narrow-padding', $table-narrow-padding);
-        }
-    }
-
-    &--hoverable {
-        tbody tr:not(.o-table__tr--selected):hover {
-            @include avariable('background-color', 'table-hoverable-background-color', $table-hoverable-background-color);
-        }
-    }
-
-    &__detail {
-        @include avariable('box-shadow', 'table-detail-box-shadow', $table-detail-box-shadow);
-        @include avariable('background', 'table-detail-background', $table-detail-background);
-        td {
-            @include avariable('padding', 'table-detail-padding', $table-detail-padding);
-        }
-    }
-
-    &__tr--selected {
-        background-color: $table-row-active-background-color;
-        color: $table-row-active-color;
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &-#{$name} {
-                background-color: $color;
-                color: $color-invert;
-            }
-        }
-    }
-
-    &__pagination {
-        align-items: center;
-        justify-content: space-between;
-        display: flex;
-        // left
-        > div:first-child {
-            align-items: center;
-            justify-content: flex-start;
-        }
-        // right
-        > div:last-child {
-            align-items: center;
-            justify-content: flex-end;
-            > div {
-                align-items: center;
-                display: flex;
-                flex-basis: auto;
-                flex-grow: 0;
-                flex-shrink: 0;
-                justify-content: center;
-            }
-        }
-        // left - right
-        > div {
-            flex-basis: auto;
-            flex-grow: 0;
-            flex-shrink: 0;
-        }
-    }
-}
diff --git a/packages/oruga/src/scss/components/_tabs.scss b/packages/oruga/src/scss/components/_tabs.scss
deleted file mode 100644
index 373288871..000000000
--- a/packages/oruga/src/scss/components/_tabs.scss
+++ /dev/null
@@ -1,208 +0,0 @@
-/* @docs */
-$tabs-disabled-opacity: $base-disabled-opacity !default;
-$tabs-font-size: $base-font-size !default;
-$tabs-icon-margin: 0.5em !default;
-$tabs-content-padding: 1rem !default;
-$tabs-margin-bottom: 1.5rem !default;
-$tabs-border-bottom-color: $grey-lighter !default;
-$tabs-border-bottom-style: solid !default;
-$tabs-border-bottom-width: 1px !default;
-$tabs-link-color: hsl(0, 0%, 29%) !default;
-$tabs-link-active-border-bottom-color: $primary !default;
-$tabs-link-active-color: $primary !default;
-$tabs-link-line-height: $base-line-height !default;
-$tabs-link-padding: 0.5em 1em !default;
-$tabs-boxed-link-radius: $base-border-radius !default;
-$tabs-boxed-link-hover-background-color: hsl(0, 0%, 96%) !default;
-$tabs-boxed-link-hover-border-bottom-color: hsl(0, 0%, 86%) !default;
-$tabs-boxed-link-active-background-color: hsl(0, 0%, 100%) !default;
-$tabs-boxed-link-active-border-color: hsl(0, 0%, 86%) !default;
-$tabs-boxed-link-active-border-bottom-color: transparent !default;
-$tabs-toggle-link-border-color: hsl(0, 0%, 86%) !default;
-$tabs-toggle-link-border-style:	solid !default;
-$tabs-toggle-link-border-width: 1px !default;
-$tabs-toggle-link-hover-background-color: hsl(0, 0%, 96%) !default;
-$tabs-toggle-link-hover-border-color: hsl(0, 0%, 71%) !default;
-$tabs-toggle-link-radius: $base-border-radius !default;
-$tabs-toggle-link-active-background-color: $primary !default;
-$tabs-toggle-link-active-border-color: $primary !default;
-$tabs-toggle-link-active-color: $primary-invert !default;
-/* @docs */
-
-@mixin item {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    width: 100%;
-    margin: 0;
-    padding: 0;
-    border: 1px solid transparent;
-    background-color: transparent;
-    align-items: center;
-    line-height: $tabs-link-line-height;
-    @include avariable('font-size', 'tabs-font-size', $tabs-font-size);
-    @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-    @include avariable('border-bottom-style', 'tabs-border-bottom-style', $tabs-border-bottom-style);
-    @include avariable('border-bottom-width', 'tabs-border-bottom-width', $tabs-border-bottom-width);
-    @include avariable('color', 'tabs-link-color', $tabs-link-color);
-    display: flex;
-    justify-content: center;
-    margin-bottom: -1px;
-    @include avariable('padding', 'tabs-link-padding', $tabs-link-padding);
-    vertical-align: top;
-    cursor: pointer;
-    text-decoration: none;
-}
-
-.o-tabs {
-    &--fullwidth {
-        width: 100%;
-        .o-tabs__nav-item-wrapper {
-            flex-grow: 1;
-            flex-shrink: 0;
-        }
-        .o-tabs__nav-item-default, .o-tabs__nav-item-boxed, .o-tabs__nav-item-toggle {
-            height: 100%;
-        }
-    }
-    &--vertical {
-        display: flex;
-        flex-direction: row;
-
-        .o-tabs__nav {
-            flex-direction: column;
-            align-items: stretch;
-            flex-grow: 0;
-            border-bottom: none;
-        }
-
-        .o-tabs__nav-item-boxed {
-            border-bottom-color: transparent;
-            @include avariable('border-right-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-            @include avariable('border-radius', 'tabs-border-bottom-color', #{$tabs-toggle-link-radius} 0 0 #{$tabs-toggle-link-radius});
-            &--active {
-                @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-                border-right-color: transparent;
-            }
-        }
-
-    }
-    &--right {
-        flex-direction: row-reverse;
-
-        .o-tabs__nav-item-boxed {
-            border-bottom-color: transparent;
-            border-right-color: transparent;
-            @include avariable('border-left-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-            @include avariable('border-radius', 'tabs-border-bottom-color', 0 #{$tabs-boxed-link-radius} #{$tabs-boxed-link-radius} 0);
-            &--active {
-                @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-                @include avariable('border-right-color', 'tabs-border-bottom-color', $tabs-border-bottom-color);
-                border-left-color: transparent;
-            }
-        }
-    }
-    &__nav {
-        @include unselectable;
-        margin: 0;
-        padding: 0;
-        align-items: center;
-        display: flex;
-        flex-grow: 1;
-        flex-shrink: 0;
-        justify-content: flex-start;
-        overflow-x: auto;
-        // padding bottom to keep showing the border-bottom
-        @include avariable('padding-bottom', 'tabs-border-bottom-width', $tabs-border-bottom-width);
-        @include avariable('font-size', 'tabs-font-size', $tabs-font-size);
-        @each $name, $value in $sizes {
-            &--#{$name} {
-                @include avariable('font-size', ('tabs-font-size-' + #{$name}), $value);
-            }
-        }
-        &--centered {
-            justify-content: center;
-        }
-        &--right {
-            justify-content: flex-end;
-        }
-
-        &-item {
-            &-icon {
-                @include avariable('margin-right', 'tabs-icon-margin', $tabs-icon-margin);
-            }
-            &-default {
-                @include item;
-                &--active {
-                    @include avariable('border-bottom-color', 'tabs-link-active-border-bottom-color', $tabs-link-active-border-bottom-color);
-                    @include avariable('color', 'tabs-link-active-color', $tabs-link-active-color);
-                }
-                &--disabled {
-                    pointer-events: none;
-                    cursor: not-allowed;
-                    @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity);
-                }
-                &:hover:not(.o-tabs__nav-item-default--active){
-                    @include avariable('background-color', 'tabs-link-hover-background-color', $tabs-boxed-link-hover-background-color);
-                    @include avariable('border-bottom-color', 'tabs-link-hover-border-bottom-color', $tabs-boxed-link-hover-border-bottom-color);
-                }
-            }
-            &-boxed {
-                @include item;
-                @include avariable('border-radius', 'tabs-border-bottom-color', #{$tabs-boxed-link-radius} #{$tabs-boxed-link-radius} 0 0);
-                border-bottom-color: transparent;
-                &--active {
-                    @include avariable('border-bottom-color', 'tabs-link-active-border-bottom-color', $tabs-link-active-border-bottom-color);
-                    @include avariable('color', 'tabs-link-active-color', $tabs-link-active-color);
-                    @include avariable('background-color', 'tabs-boxed-link-active-background-color', $tabs-boxed-link-active-background-color);
-                    @include avariable('border-color', 'tabs-boxed-link-active-border-color', $tabs-boxed-link-active-border-color);
-                    @include avariable('border-bottom-color', 'tabs-boxed-link-active-border-bottom-color', $tabs-boxed-link-active-border-bottom-color);
-                }
-                &--disabled {
-                    pointer-events: none;
-                    cursor: not-allowed;
-                    @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity);
-                }
-                &:hover:not(.o-tabs__nav-item-boxed--active){
-                    @include avariable('background-color', 'tabs-boxed-link-hover-background-color', $tabs-boxed-link-hover-background-color);
-                }
-            }
-            &-toggle {
-                @include item;
-                @include avariable('border-color', 'tabs-toggle-link-border-color', $tabs-toggle-link-border-color);
-                @include avariable('border-style', 'tabs-toggle-link-border-style', $tabs-toggle-link-border-style);
-                @include avariable('border-width', 'tabs-toggle-link-border-width', $tabs-toggle-link-border-width);
-                margin-bottom: 0;
-                position: relative;
-                &--active {
-                    @include avariable('background-color', 'tabs-toggle-link-active-background-color', $tabs-toggle-link-active-background-color);
-                    @include avariable('border-color', 'tabs-toggle-link-active-border-color', $tabs-toggle-link-active-border-color);
-                    @include avariable('color', 'tabs-toggle-link-active-color', $tabs-toggle-link-active-color);
-                }
-                &--disabled {
-                    pointer-events: none;
-                    cursor: not-allowed;
-                    @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity);
-                }
-                &:hover:not(.o-tabs__nav-item-toggle--active){
-                    @include avariable('background-color', 'tabs-toggle-link-hover-background-color', $tabs-toggle-link-hover-background-color);
-                    @include avariable('border-color', 'tabs-toggle-link-hover-border-color', $tabs-toggle-link-hover-border-color);
-                }
-            }
-        }
-    }
-
-    &__content {
-        position: relative;
-        overflow: visible;
-        display: flex;
-        flex-direction: column;
-        flex-grow: 1;
-        @include avariable('padding', 'tabs-content-padding', $tabs-content-padding);
-        &--transitioning {
-            overflow: hidden;
-        }
-    }
-    &:not(:last-child) {
-        @include avariable('margin-bottom', 'tabs-margin-bottom', $tabs-margin-bottom);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_timepicker.scss b/packages/oruga/src/scss/components/_timepicker.scss
deleted file mode 100644
index 78e2cbb4a..000000000
--- a/packages/oruga/src/scss/components/_timepicker.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-/* @docs */
-$timepicker-font-size: $base-font-size !default;
-$timepicker-box-line-height: $base-line-height !default;
-$timepicker-box-padding: .375rem 1rem !default;
-$timepicker-footer-padding: 0 .5rem !default;
-$timepicker-footer-margin: 0.875rem 0 0 0 !default;
-$timepicker-select-line-height: $base-line-height !default;
-$timepicker-select-padding: $control-padding-vertical $control-padding-horizontal !default;
-$timepicker-select-color: #363636 !default;
-$timepicker-select-font-weight: 600 !default;
-$timepicker-select-placeholder-opacity: $base-disabled-opacity !default;
-$timepicker-separator-font-weight: 600 !default;
-/* @docs */
-
-.o-tpck {
-    @include avariable('font-size', 'timepicker-font-size', $timepicker-font-size);
-    @each $name, $value in $sizes {
-        &--#{$name} {
-            @include avariable('font-size', ('timepicker-font-size-' + #{$name}), $value);
-        }
-    }
-    &__dropdown {
-        width: 100%;
-    }
-    &__box {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        @include avariable('line-height', 'timepicker-box-line-height', $timepicker-box-line-height);
-        @include avariable('padding', 'timepicker-box-padding', $timepicker-box-padding);
-    }
-    &__select {
-        -moz-appearance: none;
-        -webkit-appearance: none;
-        display: inline-block;
-        position: relative;
-        vertical-align: top;
-        cursor: pointer;
-        justify-content: flex-start;
-        align-items: center;
-        border: 0;
-        font-size: inherit;
-        @include avariable('font-weight', 'timepicker-select-font-weight', $timepicker-select-font-weight);
-        @include avariable('line-height', 'timepicker-select-line-height', $timepicker-select-line-height);
-        @include avariable('padding', 'timepicker-select-padding', $timepicker-select-padding);
-        @include avariable('color', 'timepicker-select-color', $timepicker-select-color);
-    }
-    &__select-placeholder {
-        @include avariable('opacity', 'timepicker-select-placeholder-opacity', $timepicker-select-placeholder-opacity);
-    }
-    &__separator {
-        @include avariable('font-weight', 'timepicker-separator-font-weight', $timepicker-separator-font-weight);
-    }
-    &__footer {
-        @include avariable('padding', 'timepicker-header-padding', $timepicker-footer-padding);
-        @include avariable('margin', 'timepicker-header-margin', $timepicker-footer-margin);
-    }
-}
diff --git a/packages/oruga/src/scss/components/_tooltip.scss b/packages/oruga/src/scss/components/_tooltip.scss
deleted file mode 100644
index 328da93f4..000000000
--- a/packages/oruga/src/scss/components/_tooltip.scss
+++ /dev/null
@@ -1,207 +0,0 @@
-
-/* @docs */
-$tooltip-arrow-margin: 2px !default;
-$tooltip-arrow-size: 5px !default;
-$tooltip-background-color: $primary !default;
-$tooltip-color: $primary-invert !default;
-$tooltip-content-box-shadow: 0px 1px 2px 1px rgba(0, 1, 0, 0.2) !default;
-$tooltip-content-font-size: 0.85rem !default;
-$tooltip-content-max-width: 300px !default;
-$tooltip-content-multiline-width: 300px !default;
-$tooltip-content-padding: 0.35rem 0.75rem !default;
-$tooltip-content-radius-large: 6px !default;
-$tooltip-content-weight-normal: 400 !default;
-$tooltip-content-zindex: 38 !default;
-/* @docs */
-
-$TBLR_CALC_EXPRESSION: "calc(($size + $margin) + 100%)";
-
-@mixin tooltip-arrow($direction, $name, $color) {
-    @if ($direction == "top") {
-        border-top-style: solid;
-        @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        border-right-style: solid;
-        border-right-color: transparent;
-        border-left-style: solid;
-        border-left-color: transparent;
-        @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-    } @else if ($direction == "bottom") {
-        border-bottom-style: solid;
-        @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        border-right-style: solid;
-        border-right-color: transparent;
-        border-left-style: solid;
-        border-left-color: transparent;
-        @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-    } @else if ($direction == "right") {
-        border-right-style: solid;
-        @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        border-top-style: solid;
-        border-top-color: transparent;
-        border-bottom-style: solid;
-        border-bottom-color: transparent;
-        @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-    } @else if ($direction == "left") {
-        border-left-style: solid;
-        @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        border-top-style: solid;
-        border-top-color: transparent;
-        border-bottom-style: solid;
-        border-bottom-color: transparent;
-        @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-        @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size);
-    }
-}
-
-@mixin tooltip($direction) {
-    &__arrow {
-        @if ($direction == "bottom") {
-            &--bottom {
-                top: auto;
-                right: auto;
-                bottom: 100%;
-                left: 50%;
-                transform: translateX(-50%);
-                @include tooltip-arrow($direction, null, $tooltip-background-color);
-            }
-        } @else if ($direction == "top") {
-            &--top {
-                top: 100%;
-                right: auto;
-                bottom: auto;
-                left: 50%;
-                transform: translateX(-50%);
-                @include tooltip-arrow($direction, null, $tooltip-background-color);
-            }
-        } @else if ($direction == "left") {
-            &--left {
-                top: 50%;
-                right: auto;
-                bottom: auto;
-                left: 100%;
-                transform: translateY(-50%);
-                @include tooltip-arrow($direction, null, $tooltip-background-color);
-            }
-        } @else if ($direction == "right") {
-            &--right {
-                top: 50%;
-                right: 100%;
-                bottom: auto;
-                left: auto;
-                transform: translateY(-50%);
-                @include tooltip-arrow($direction, null, $tooltip-background-color);
-            }
-        }
-    }
-    &__content {
-        @if ($direction == "top") {
-            &--top {
-                top: auto;
-                right: auto;
-                @include evariable(
-                    'bottom', $TBLR_CALC_EXPRESSION,
-                    eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)),
-                    eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)),
-                );
-                left: 50%;
-                transform: translateX(-50%);
-            }
-        } @else if ($direction == "bottom") {
-            &--bottom {
-                @include evariable(
-                    'top', $TBLR_CALC_EXPRESSION,
-                    eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)),
-                    eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)),
-                );
-                right: auto;
-                bottom: auto;
-                left: 50%;
-                transform: translateX(-50%);
-            }
-        } @else if ($direction == "right") {
-            &--right{
-                top: 50%;
-                right: auto;
-                bottom: auto;
-                @include evariable(
-                    'left', $TBLR_CALC_EXPRESSION,
-                    eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)),
-                    eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)),
-                );
-                transform: translateY(-50%);
-            }
-        } @else if ($direction == "left") {
-            &--left {
-                top: 50%;
-                @include evariable(
-                    'right', $TBLR_CALC_EXPRESSION,
-                    eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)),
-                    eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)),
-                );
-                bottom: auto;
-                left: auto;
-                transform: translateY(-50%);
-            }
-        }
-    }
-}
-
-// Base
-.o-tip {
-    @include tooltip("top");
-    @include tooltip("right");
-    @include tooltip("bottom");
-    @include tooltip("left");
-    position: relative;
-    display: inline-flex;
-    &__arrow {
-        position: absolute;
-        content: "";
-        pointer-events: none;
-        @include avariable('z-index', 'tooltip-content-zindex', $tooltip-content-zindex);
-        @include avariable('color', 'tooltip-background-color', $tooltip-background-color);
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &--#{$name} {
-                @include avariable('color', ('variant-' + #{$name}), $color);
-            }
-        }
-    }
-    &__content {
-        position: absolute;
-        white-space: nowrap;
-        @include avariable('max-width', 'tooltip-content-max-width', $tooltip-content-max-width);
-        @include avariable('padding', 'tooltip-content-padding', $tooltip-content-padding);
-        @include avariable('border-radius', 'tooltip-content-radius-large', $tooltip-content-radius-large);
-        @include avariable('font-size', 'tooltip-content-font-size', $tooltip-content-font-size);
-        @include avariable('font-weight', 'tooltip-content-weight-normal', $tooltip-content-weight-normal);
-        @include avariable('box-shadow', 'tooltip-content-box-shadow', $tooltip-content-box-shadow);
-        @include avariable('z-index', 'tooltip-content-zindex', $tooltip-content-zindex);
-        @include avariable('background-color', 'tooltip-background-color', $tooltip-background-color);
-        @include avariable('color', 'tooltip-color', $tooltip-color);
-        @each $name, $pair in $colors {
-            $color: nth($pair, 1);
-            $color-invert: nth($pair, 2);
-            &--#{$name} {
-                @include avariable('background', ('variant-' + #{$name}), $color);
-                @include avariable('color', ('variant-invert-' + #{$name}), $color-invert);
-            }
-        }
-        &--always {
-            opacity: 1;
-            visibility: visible;
-        }
-        &--multiline {
-            text-align: center;
-            white-space: normal;
-            @include avariable('width', 'tooltip-content-multiline-width', $tooltip-content-multiline-width);
-        }
-    }
-    &__trigger {
-        width: 100%;
-    }
-}
diff --git a/packages/oruga/src/scss/components/_upload.scss b/packages/oruga/src/scss/components/_upload.scss
deleted file mode 100644
index e70f2734f..000000000
--- a/packages/oruga/src/scss/components/_upload.scss
+++ /dev/null
@@ -1,45 +0,0 @@
-/* @docs */
-$upload-draggable-border: 1px dashed $grey-light !default;
-$upload-draggable-border-radius: $base-border-radius !default;
-$upload-draggable-disabled-opacity: $base-disabled-opacity !default;
-$upload-draggable-hover-border-color: $grey !default;
-$upload-draggable-padding: 0.25em !default;
-/* @docs */
-
-.o-upl {
-    position: relative;
-    display: inline-flex;
-    &--disabled {
-        @include avariable('opacity', 'upload-draggable-disabled-opacity', $upload-draggable-disabled-opacity);
-        cursor: not-allowed;
-    }
-    &--expanded {
-        width: 100%;
-    }
-    &__draggable {
-        cursor: pointer;
-        width: 100%;
-        @include avariable('padding', 'upload-draggable-padding', $upload-draggable-padding);
-        @include avariable('border', 'upload-draggable-border', $upload-draggable-border);
-        @include avariable('border-radius', 'upload-draggable-border-radius', $upload-draggable-border-radius);
-        &--hovered {
-            @include avariable('border-color', 'upload-draggable-hover-border-color', $upload-draggable-hover-border-color);
-            @each $name, $pair in $colors {
-                $color: nth($pair, 1);
-                &-#{$name} {
-                    @include avariable('border-color', ('variant-' + #{$name}), $color);
-                }
-            }
-        }
-    }
-    input[type=file] {
-        position: absolute;
-        top: 0;
-        left: 0;
-        width: 100%;
-        height: 100%;
-        opacity: 0;
-        cursor: pointer;
-        z-index: -1;
-    }
-}
diff --git a/packages/oruga/src/scss/oruga-common.scss b/packages/oruga/src/scss/oruga-common.scss
deleted file mode 100644
index bf6a78f1b..000000000
--- a/packages/oruga/src/scss/oruga-common.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-
-@import "utilities/_expressions";
-@import "utilities/_variables";
-@import "utilities/_animations";
-@import "utilities/_helpers";
-
-@import "utilities/_base";
-
-@import "components/_autocomplete";
-@import "components/_button";
-@import "components/_carousel";
-@import "components/_checkbox";
-@import "components/_collapse";
-@import "components/_datepicker";
-@import "components/_datetimepicker";
-@import "components/_dropdown";
-@import "components/_field";
-@import "components/_icon";
-@import "components/_input";
-@import "components/_inputitems";
-@import "components/_loading";
-@import "components/_menu";
-@import "components/_modal";
-@import "components/_notification";
-@import "components/_pagination";
-@import "components/_radio";
-@import "components/_select";
-@import "components/_skeleton";
-@import "components/_sidebar";
-@import "components/_slider";
-@import "components/_steps";
-@import "components/_switch";
-@import "components/_table";
-@import "components/_tabs";
-@import "components/_timepicker";
-@import "components/_tooltip";
-@import "components/_upload";
diff --git a/packages/oruga/src/scss/oruga-full-vars.scss b/packages/oruga/src/scss/oruga-full-vars.scss
deleted file mode 100644
index b61d4774c..000000000
--- a/packages/oruga/src/scss/oruga-full-vars.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-
-$css-vars: true;
-$sass-vars: true;
-
-@import "oruga-common.scss";
diff --git a/packages/oruga/src/scss/oruga-full.scss b/packages/oruga/src/scss/oruga-full.scss
deleted file mode 100644
index e9d6e721d..000000000
--- a/packages/oruga/src/scss/oruga-full.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-
-$css-vars: false;
-$sass-vars: true;
-
-@import "oruga-common.scss";
diff --git a/packages/oruga/src/scss/oruga.scss b/packages/oruga/src/scss/oruga.scss
deleted file mode 100644
index cabe7db7f..000000000
--- a/packages/oruga/src/scss/oruga.scss
+++ /dev/null
@@ -1,204 +0,0 @@
-
-$css-vars: false;
-$sass-vars: true;
-
-@import "utilities/_variables";
-@import "utilities/_helpers";
-
-$colors: ();
-$sizes: ();
-
-// autocomplete
-$whitelist: add-to-whitelist(
-    'autocomplete-menu-background',
-    'autocomplete-menu-zindex'
-);
-
-// button
-$whitelist: add-to-whitelist(
-    'button-background-color',
-    'button-color',
-    'button-disabled-opacity',
-    'button-outlined-background-color'
-);
-
-// carousel
-$whitelist: add-to-whitelist(
-    'carousel-overlay-zindex',
-    'carousel-indicator-size',
-    'carousel-indicator-background',
-    'carousel-indicator-border',
-    'carousel-indicator-active-background',
-    'carousel-indicator-active-border',
-    'carousel-indicator-size',
-    'carousel-indicator-dots-border-radius',
-    'carousel-arrow-size',
-    'carousel-arrow-background',
-    'carousel-arrow-color',
-    'carousel-arrow-top',
-    'carousel-arrow-icon-spaced'
-);
-
-// checkbox
-$whitelist: add-to-whitelist(
-    'checkbox-size',
-    'checkbox-active-background-color',
-    'checkbox-checkmark-color',
-    'checkbox-border-color',
-    'checkbox-disabled-opacity'
-);
-
-// datepicker
-$whitelist: add-to-whitelist(
-    'datepicker-item-disabled-color',
-    'datepicker-item-selectable-color',
-    'datepicker-btn-border-color',
-    'datepicker-btn-color',
-    'datepicker-item-hovered-background-color',
-    'datepicker-item-hovered-color',
-    'datepicker-item-selected-background-color',
-    'datepicker-item-selected-color',
-    'datepicker-item-selected-within-background-color',
-    'datepicker-event-background-color'
-);
-
-
-// dropdown
-$whitelist: add-to-whitelist(
-    'dropdown-menu-background',
-    'dropdown-mobile-overlay-color',
-    'dropdown-disabled-opacity',
-    'dropdown-menu-zindex',
-    'dropdown-mobile-overlay-zindex',
-    'dropdown-mobile-zindex',
-    'dropdown-item-active-background-color',
-    'dropdown-item-active-color',
-    'dropdown-item-disabled-opacity'
-);
-
-// icon
-$whitelist: add-to-whitelist(
-    'icon-spin-duration'
-);
-
-// input
-$whitelist: add-to-whitelist();
-
-// inputitems
-$whitelist: add-to-whitelist(
-    'inputitems-border-style',
-    'inputitems-border-color',
-    'inputitems-border-width',
-    'inputitems-color',
-    'inputitems-item-color',
-    'inputitems-item-background-color'
-);
-
-// modal
-$whitelist: add-to-whitelist(
-    'modal-zindex',
-    'modal-content-background-color',
-    'modal-overlay-background-color',
-    'moda-close-size',
-    'modal-close-top',
-    'modal-close-right'
-);
-
-// notification
-$whitelist: add-to-whitelist(
-    'notification-background-color',
-    'notification-color',
-    'notification-close-right',
-    'notification-close-top',
-    'notification-notices-padding',
-    'notification-notices-zindex'
-);
-
-// pagination
-$whitelist: add-to-whitelist(
-    'pagination-link-current-background-color',
-    'pagination-link-current-border-color',
-    'pagination-link-current-color'
-);
-
-// radio
-$whitelist: add-to-whitelist(
-    'radio-size',
-    'radio-active-background-color',
-    'radio-disabled-opacity'
-);
-
-// select
-$whitelist: add-to-whitelist(
-    'select-arrow-size'
-);
-
-// sidebar
-$whitelist: add-to-whitelist(
-    'sidebar-zindex',
-    'sidebar-overlay',
-    'sidebar-content-background-color'
-);
-
-// slider
-$whitelist: add-to-whitelist(
-    'slider-track-background',
-    'slider-tick-background',
-    'slider-fill-background',
-    'slider-thumb-size',
-    'slider-thumb-background',
-    'slider-thumb-border',
-    'slider-background',
-    'slider-tick-width',
-    'slider-track-height'
-);
-
-// skeleton
-$whitelist: add-to-whitelist(
-    'skeleton-background',
-    'skeleton-duration'
-);
-
-// steps
-$whitelist: add-to-whitelist(
-    'steps-marker-color',
-    'steps-marker-border',
-    'steps-marker-background',
-    'steps-previous-color',
-    'steps-active-color',
-    'steps-details-background-color'
-);
-
-// switch
-$whitelist: add-to-whitelist(
-    'switch-width',
-    'switch-padding',
-    'switch-background',
-    'switch-action-background',
-    'switch-active-background-color',
-    'switch-disabled-opacity',
-    'switch-rounded-border-radius'
-);
-
-// tabs
-$whitelist: add-to-whitelist(
-    'tabs-disabled-opacity',
-    'tabs-link-active-color',
-    'tabs-link-active-border-bottom-color',
-    'tabs-link-color'
-);
-
-// timepicker
-$whitelist: add-to-whitelist(
-    'timepicker-select-placeholder-opacity'
-);
-
-// tooltip
-$whitelist: add-to-whitelist(
-    'tooltip-arrow-size',
-    'tooltip-arrow-margin',
-    'tooltip-content-zindex',
-    'tooltip-background-color'
-);
-
-@import "oruga-common.scss";
diff --git a/packages/oruga/src/scss/utilities/_animations.scss b/packages/oruga/src/scss/utilities/_animations.scss
deleted file mode 100644
index 9dd2e5f8f..000000000
--- a/packages/oruga/src/scss/utilities/_animations.scss
+++ /dev/null
@@ -1,209 +0,0 @@
-
-// Some of the animations are from animate.css (https://daneden.github.io/animate.css)
-
-// Fade out
-@keyframes fadeOut {
-    from {
-        opacity: 1;
-    }
-    to {
-        opacity: 0;
-    }
-}
-.fadeOut {
-    animation-name: fadeOut;
-}
-
-@keyframes fadeOutDown {
-    from {
-        opacity: 1;
-    }
-    to {
-        opacity: 0;
-        transform: translate3d(0, 100%, 0);
-    }
-}
-.fadeOutDown {
-    animation-name: fadeOutDown;
-}
-
-@keyframes fadeOutUp {
-    from {
-        opacity: 1;
-    }
-    to {
-        opacity: 0;
-        transform: translate3d(0, -100%, 0);
-    }
-}
-.fadeOutUp {
-    animation-name: fadeOutUp;
-}
-
-// Fade In
-@keyframes fadeIn {
-    from {
-        opacity: 0;
-    }
-    to {
-        opacity: 1;
-    }
-}
-.fadeIn {
-    animation-name: fadeIn;
-}
-
-@keyframes fadeInDown {
-    from {
-        opacity: 0;
-        transform: translate3d(0, -100%, 0);
-    }
-    to {
-        opacity: 1;
-        transform: none;
-    }
-}
-.fadeInDown {
-    animation-name: fadeInDown;
-}
-
-@keyframes fadeInUp {
-    from {
-        opacity: 0;
-        transform: translate3d(0, 100%, 0);
-    }
-    to {
-        opacity: 1;
-        transform: none;
-    }
-}
-.fadeInUp {
-    animation-name: fadeInUp;
-}
-
-@keyframes append-animate {
-	from {
-		transform: scale(0);
-		opacity: 0;
-	}
-	to {
-		transform: scale(1);
-		opacity: 1;
-	}
-}
-
-/**
- * Vue Transitions
- */
-
-// Fade
-.fade-enter-active,
-.fade-leave-active {
-    transition: opacity $speed-slow $easing;
-}
-.fade-enter,
-.fade-enter-from,
-.fade-leave-to {
-    opacity: 0;
-}
-
-// Zoom In
-.zoom-in-enter-active,
-.zoom-in-leave-active {
-    transition: opacity $speed-slow $easing;
-    .animation-content,
-    .animation-content {
-        transition: transform $speed-slow $easing;
-    }
-}
-.zoom-in-enter,
-.zoom-in-enter-from,
-.zoom-in-leave-active {
-    opacity: 0;
-    .animation-content,
-    .animation-content {
-        transform: scale(0.95);
-    }
-}
-
-// Zoom Out
-.zoom-out-enter-active,
-.zoom-out-leave-active {
-    transition: opacity $speed-slow $easing;
-    .animation-content,
-    .animation-content {
-        transition: transform $speed-slow $easing;
-    }
-}
-.zoom-out-enter,
-.zoom-out-enter-from,
-.zoom-out-leave-active {
-    opacity: 0;
-    .animation-content,
-    .animation-content {
-        transform: scale(1.05);
-    }
-}
-
-// Slide
-.slide-next-enter-active,
-.slide-next-leave-active,
-.slide-prev-enter-active,
-.slide-prev-leave-active {
-    transition: transform $speed-slower cubic-bezier(0.785, 0.135, 0.150, 0.860);
-}
-.slide-prev-leave-to,
-.slide-next-enter,
-.slide-next-enter-from {
-    transform: translate3d(-100%, 0, 0);
-    position: absolute;
-    width: 100%;
-}
-.slide-prev-enter,
-.slide-prev-enter-from,
-.slide-next-leave-to {
-    transform: translate3d(100%, 0, 0);
-    position: absolute;
-    width: 100%;
-}
-
-.slide-down-enter-active,
-.slide-down-leave-active,
-.slide-up-enter-active,
-.slide-up-leave-active {
-    transition: transform $speed-slower cubic-bezier(0.785, 0.135, 0.150, 0.860);
-}
-.slide-down-enter,
-.slide-up-leave-to,
-.slide-down-enter-from {
-    transform: translate3d(0, -100%, 0);
-    position: absolute;
-    height: 100%;
-}
-.slide-up-enter,
-.slide-up-enter-from,
-.slide-down-leave-to {
-    transform: translate3d(0, 100%, 0);
-    position: absolute;
-    height: 100%;
-}
-
-.slide-enter-active {
-    transition: $speed-slow $easing;
-}
-.slide-leave-active {
-    transition: $speed-slow $easing;
-    transition-timing-function: cubic-bezier(0, 1, 0.5, 1);
-}
-.slide-leave,
-.slide-enter-to,
-.slide-leave-from {
-    max-height: 100px;
-    overflow: hidden;
-}
-.slide-enter,
-.slide-enter-from,
-.slide-leave-to {
-    overflow: hidden;
-    max-height: 0;
-}
diff --git a/packages/oruga/src/scss/utilities/_base.scss b/packages/oruga/src/scss/utilities/_base.scss
deleted file mode 100644
index afeb4b3a7..000000000
--- a/packages/oruga/src/scss/utilities/_base.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-
-*, :after, :before {
-    box-sizing: inherit;
-}
-
-html {
-    box-sizing: border-box;
-}
-
-.o-noscroll {
-    position: fixed;
-    overflow-y: hidden;
-    width: 100%;
-    bottom: 0;
-    overflow-x: hidden;
-    overflow-y: scroll;
-}
-
-.o-clipped {
-    overflow: hidden;
-}
diff --git a/packages/oruga/src/scss/utilities/_expressions.scss b/packages/oruga/src/scss/utilities/_expressions.scss
deleted file mode 100644
index 8908693c5..000000000
--- a/packages/oruga/src/scss/utilities/_expressions.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-$SUM_EXPRESSION: "calc($param + $factor)";
-$MULTIPLY_EXPRESSION: "calc($param * $factor)";
-$JOIN_EXPRESSION: "$param1 $param2";
diff --git a/packages/oruga/src/scss/utilities/_helpers.scss b/packages/oruga/src/scss/utilities/_helpers.scss
deleted file mode 100644
index aa20e162c..000000000
--- a/packages/oruga/src/scss/utilities/_helpers.scss
+++ /dev/null
@@ -1,195 +0,0 @@
-@use "sass:list";
-
-/// Replaces characters in a string
-///
-/// @param {string} $string
-///   String where the replace happens
-/// @param {string} $search
-///   Portion of string to find and replace
-/// @param {string} $replace
-///   Replacement. Default is ''.
-/// @return {string} string with characters replaced.
-@function str-replace($string, $search, $replace: '') {
-    $index: str-index($string, $search);
-    @return if($index,
-        str-slice($string, 1, $index - 1) + $replace +
-        str-replace(str-slice($string, $index +
-        str-length($search)), $search, $replace),
-        $string);
-}
-
-/// Encodes an inline svg. Original source code: http://codepen.io/jakob-e/pen/doMoML
-///
-/// @param {string} $svg
-///   Inline svg to encode
-/// @return {string} encoded svg.
-@function svg-encode($svg){
-    // Chunk up string in order to avoid "stack level too deep" error
-    $encoded:'';
-    $slice: 2000;
-    $index: 0;
-    $loops: ceil(divide(str-length($svg), $slice));
-    @for $i from 1 through $loops {
-        $chunk: str-slice($svg, $index, $index + $slice - 1);
-        // Encode
-        $chunk: str-replace($chunk, '"', '\'');
-        $chunk: str-replace($chunk, '%', '%25');
-        $chunk: str-replace($chunk, '#', '%23');
-        $chunk: str-replace($chunk, '{', '%7B');
-        $chunk: str-replace($chunk, '}', '%7D');
-        $chunk: str-replace($chunk, '<', '%3C');
-        $chunk: str-replace($chunk, '>', '%3E');
-
-        $encoded: #{$encoded}#{$chunk};
-        $index: $index + $slice;
-    }
-    @return "data:image/svg+xml,#{$encoded}";
-}
-
-/// Appends a list of variables to $whitelist and return a new whitelist.
-///
-/// @param {...} $variables
-///   Variables to whitelist
-/// @return {list} new whitelist.
-///
-/// Example (in components/_radio.scss)
-/// $whitelist: add-to-whitelist('radio-active-background-color','radio-focus-sibiling-box-shadow');
-@function add-to-whitelist($variables...) {
-    @return list.join($whitelist, $variables);
-}
-
-/// Checks if a variable is in $whitelist.
-///
-/// @param {string} $variable
-///   Variable to check if present in whitelist
-/// @return {boolean} true if $variable is in $whitelist, else false.
-@function is-in-whitelist($variable) {
-    @return list.index($whitelist, $variable) != null;
-}
-
-/// Checks if $whitelist is empty
-///
-/// @return {boolean} true if $whitelist is empty, else false.
-@function is-empty-whitelist() {
-    @return list.length($whitelist) == 0;
-}
-
-/// Returns a variable.
-///
-/// @param {string} $name
-///   Variable name
-/// @param {string} $value
-///   Variable value
-/// @param {string} $forceval
-///   By default is `false`, if `true` it allows to bypass whitelist and set the value
-/// @return {string} the variable or null if not in whitelist when $css-vars == false.
-@function variable($name, $value, $forceval: false) {
-    @if $css-vars == true {
-        @if is-empty-whitelist() or is-in-whitelist($name) {
-            @return var(#{$variable-prefix}#{$name}, #{$value});
-        }
-    } @else if $sass-vars == true {
-        @if is-empty-whitelist() or is-in-whitelist($name) {
-            @return #{$value};
-        }
-    } @else if $forceval == true {
-        @return #{$value};
-    }
-    @return null;
-}
-
-/// Returns a pair of `(key,value)` to pass to `evariable` function.
-///
-/// @param {string} $key
-///   Key of the parameter
-/// @param {string} $value
-///   Value of the parameter
-/// @return {list} list of two elements representing an `eparam` `(key, value)`.
-@function eparam($key, $value) {
-    @return $key, $value;
-}
-
-/// Assigns a specific expression to an attribute
-///
-/// @param {string} $attribute
-///   The attribute we want to include
-/// @param {string} $expression
-///   The body of the function we want to write (e.g. `calc($width/$height)`)
-/// @param {...} $parameters
-///   List of `eparam` to apply to the function
-@mixin evariable($attribute, $expression, $parameters...) {
-    $is_valid: true;
-    @each $parameter in $parameters {
-        @if list.nth($parameter, 2) == null {
-            $is_valid: false;
-        }
-        @if str-slice(list.nth($parameter, 1), 0, 1) != "$" {
-            @error "Parameter #{list.nth($parameter, 1)} should start with $.";
-        }
-        $expression: str-replace($expression, list.nth($parameter, 1), list.nth($parameter, 2));
-    }
-    @if $is_valid {
-        #{$attribute}: #{$expression};
-    }
-}
-
-/// Assigns a specific variable to an attribute
-///
-/// @param {string} $attribute
-///   The attribute we want to include
-/// @param {string} $name
-///   Variable name
-/// @param {string} $value
-///   Variable value
-@mixin avariable($attribute, $name, $value) {
-    $variable: variable($name, $value);
-    @if $variable != null {
-        #{$attribute}: $variable;
-    }
-}
-
-@mixin unselectable {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-@mixin side-flex-gap ($gap) {
-    //flex-wrap: wrap;
-    margin-left: -$gap;
-    margin-right: -$gap;
-
-    & > * {
-        margin-left: $gap;
-        margin-right: $gap;
-    }
-}
-
-// Custom divide function by @mdo from https://github.com/twbs/bootstrap/pull/34245
-// Replaces old slash division deprecated in Dart Sass
-@function divide($dividend, $divisor, $precision: 10) {
-  $sign: if($dividend > 0 and $divisor > 0, 1, -1);
-  $dividend: abs($dividend);
-  $divisor: abs($divisor);
-  $quotient: 0;
-  $remainder: $dividend;
-  @if $dividend == 0 {
-    @return 0;
-  }
-  @if $divisor == 0 {
-    @error "Cannot divide by 0";
-  }
-  @if $divisor == 1 {
-    @return $dividend;
-  }
-  @while $remainder >= $divisor {
-    $quotient: $quotient + 1;
-    $remainder: $remainder - $divisor;
-  }
-  @if $remainder > 0 and $precision > 0 {
-    $remainder: divide($remainder * 10, $divisor, $precision - 1) * .1;
-  }
-  @return ($quotient + $remainder) * $sign;
-}
diff --git a/packages/oruga/src/scss/utilities/_variables.scss b/packages/oruga/src/scss/utilities/_variables.scss
deleted file mode 100644
index 61faebf1e..000000000
--- a/packages/oruga/src/scss/utilities/_variables.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-$base-font-size: 1rem !default;
-
-$base-border-radius: 4px !default;
-$base-rounded-border-radius: 9999px !default;
-$base-line-height: 1.5 !default;
-$base-disabled-opacity: 0.5 !default;
-
-$speed: 300ms !default;
-$speed-slow: 150ms !default;
-$speed-slower: 250ms !default;
-$easing: ease-out !default;
-
-$control-border-width: 1px !default;
-$control-height: 2.25em !default;
-$control-padding-vertical: calc(0.375em - #{$control-border-width});
-$control-padding-horizontal: calc(0.625em - #{$control-border-width});
-
-$whitelist: () !default;
-$sass-vars: true !default;
-$css-vars: true !default;
-$variable-prefix: '--oruga-' !default;
-
-// Sizes
-
-$sizes: (
-    "small": .75rem,
-    "medium": 1.25rem,
-    "large": 1.5rem
-) !default;
-
-// Colors
-
-$white: #ffffff !default;
-$black: #000000 !default;
-$grey: #7a7a7a !default;
-$grey-light: #b5b5b5 !default;
-$grey-lighter: #dbdbdb !default;
-$grey-dark: #4a4a4a !default;
-
-$primary: #445e00 !default;
-$primary-invert: $white !default;
-
-$danger: #b60000 !default;
-$danger-invert: $white !default;
-$warning: #f4c300 !default;
-$warning-invert: $black !default;
-$success: #006724 !default;
-$success-invert: $white !default;
-$info: #005c98 !default;
-$info-invert: $white !default;
-
-$colors: (
-    "primary": ($primary, $primary-invert),
-    "danger" : ($danger, $danger-invert),
-    "warning" : ($warning, $warning-invert),
-    "success" : ($success, $success-invert),
-    "info" : ($info, $info-invert)
-) !default;
diff --git a/packages/oruga/src/utils/BaseComponentMixin.js b/packages/oruga/src/utils/BaseComponentMixin.js
deleted file mode 100644
index 9aa6e75f7..000000000
--- a/packages/oruga/src/utils/BaseComponentMixin.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import { getOptions } from './config';
-import { getValueByPath, blankIfUndefined, endsWith } from './helpers'
-
-const _defaultSuffixProcessor = (input, suffix) => {
-    return blankIfUndefined(input)
-        .split(' ')
-        .filter((cls) => cls.length > 0)
-        .map((cls) => cls + suffix)
-        .join(' ');
-}
-
-const _getContext = (vm) => {
-    const computedNames = vm.$options.computed ? Object.keys(vm.$options.computed) : []
-    const computed = computedNames.filter(e => !endsWith(e, 'Classes')).reduce((o, key) => {
-        o[key] = vm[key]
-        return o
-    }, {})
-    return {props: vm.$props, data: vm.$data, computed}
-}
-
-export default {
-    isOruga: true,
-    props: {
-        /**
-         * Override classes
-         */
-        override: {
-            type: Boolean,
-            default: false
-        }
-    },
-    methods: {
-        computedClass(field, defaultValue, suffix='') {
-            const config = this.$props.override === true ? {} : getOptions();
-
-            const override = this.$props.override || getValueByPath(config, `${this.$options.configField}.override`, false)
-            const overrideClass = getValueByPath(config, `${this.$options.configField}.${field}.override`, override)
-
-            const globalTransformClasses = getValueByPath(config, `transformClasses`, undefined)
-            const localTransformClasses = getValueByPath(config, `${this.$options.configField}.transformClasses`, undefined)
-
-            let globalClass = getValueByPath(config, `${this.$options.configField}.${field}.class`, '')
-                || getValueByPath(config, `${this.$options.configField}.${field}`, '')
-            let currentClass = getValueByPath(this.$props, field)
-
-            if (Array.isArray(currentClass)) {
-                currentClass = currentClass.join(' ')
-            }
-
-            if (defaultValue.search("{*}") !== -1) {
-                defaultValue = defaultValue.replace(/\{\*\}/g, suffix);
-            } else {
-                defaultValue = defaultValue + suffix
-            }
-
-            let context = null
-            if (typeof currentClass === "function") {
-                context = _getContext(this)
-                currentClass = currentClass(suffix, context)
-            } else {
-                currentClass = _defaultSuffixProcessor(currentClass, suffix)
-            }
-            if (typeof globalClass === "function") {
-                globalClass = globalClass(suffix, context || _getContext(this))
-            } else {
-                globalClass = _defaultSuffixProcessor(globalClass, suffix)
-            }
-            let appliedClasses = (`${(override && !overrideClass) || (!override && !overrideClass) ? defaultValue : ''} `
-               + `${blankIfUndefined(globalClass)} `
-               + `${blankIfUndefined(currentClass)}`).trim().replace(/\s\s+/g, ' ');
-            if (localTransformClasses) {
-                appliedClasses = localTransformClasses(appliedClasses)
-            }
-            if (globalTransformClasses) {
-                appliedClasses = globalTransformClasses(appliedClasses)
-            }
-            return appliedClasses;
-        }
-    }
-}
diff --git a/packages/oruga/src/utils/BaseComponentMixin.spec.js b/packages/oruga/src/utils/BaseComponentMixin.spec.js
deleted file mode 100644
index f5ffe86d8..000000000
--- a/packages/oruga/src/utils/BaseComponentMixin.spec.js
+++ /dev/null
@@ -1,270 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import BaseComponentMixin from '@utils/BaseComponentMixin'
-import OButton from '@components/button/Button'
-
-import { merge } from '@utils/helpers'
-import { getOptions, setOptions } from '@utils/config'
-
-let wrapper
-
-describe('BaseComponentMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        /* component = {
-            template: '<div class="o-component"></div>'
-        } */
-        wrapper = shallowMount(OButton, {
-            attachToDocument: true,
-            mixins: [BaseComponentMixin]
-        })
-    })
-
-    describe('computedClass method', () => {
-        it('can use global classes', async () => {
-            const initialTestValue = 'initial test'
-            const newTestValue = 'new test'
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    test: newTestValue
-                }
-            }, true))
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('test', initialTestValue)).toBe(`${initialTestValue} ${newTestValue}`)
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    override: true
-                }
-            }, true))
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('test', initialTestValue)).toBe(newTestValue)
-        })
-
-        it('applies local classes as expected', async () => {
-            // TODO test local classes -- rootClass
-            const initialRootClassValue = 'initial-class'
-            const newGlobalRootClassValue = 'new-global-class'
-            const newRootClassValue = 'new-class'
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    rootClass: newGlobalRootClassValue,
-                    override: false
-                }
-            }, true))
-            wrapper.setProps({ rootClass: newRootClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`)
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    override: true
-                }
-            }, true))
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${newGlobalRootClassValue} ${newRootClassValue}`)
-        })
-
-        it('applies local classes defined as array', async () => {
-            // TODO test local classes -- rootClass
-            const initialRootClassValue = 'initial-class'
-            const newGlobalRootClassValue = 'new-global-class'
-            const newRootClassValue = ['my-new-class', 'new-class']
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    rootClass: newGlobalRootClassValue,
-                    override: false
-                }
-            }, true))
-            wrapper.setProps({ rootClass: newRootClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue.join(' ')}`)
-
-            setOptions(merge(getOptions(), {
-                button: {
-                    override: true
-                }
-            }, true))
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${newGlobalRootClassValue} ${newRootClassValue.join(' ')}`)
-        })
-
-        it('applies override to single classes', async () => {
-            const initialRootClassValue = 'initial-class'
-            const newGlobalRootClassValue = 'new-global-class'
-            const newRootClassValue = 'new-class'
-
-            const initialSizeClassValue = 'initial-size-class'
-            const newGlobalSizeClassValue = 'new-global-size-class--'
-            const newSizeClassValue = 'new-size-class--'
-            const sizeSuffix = 'centered'
-
-            /* Override all except sizeClass */
-
-            setOptions({
-                button: {
-                    override: true,
-                    rootClass: {
-                        class: newGlobalRootClassValue,
-                        override: false
-                    },
-                    sizeClass: {
-                        class: newGlobalSizeClassValue,
-                    },
-                }
-            })
-            wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`)
-
-            expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix))
-                .toBe(`${newGlobalSizeClassValue}${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`)
-
-
-            /* Override only sizeClass */
-            setOptions({
-                button: {
-                    rootClass: {
-                        class: newGlobalRootClassValue,
-                    },
-                    sizeClass: {
-                        class: newGlobalSizeClassValue,
-                        override: true
-                    },
-                }
-            })
-            wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`)
-
-            expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix))
-                .toBe(`${newGlobalSizeClassValue}${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`)
-
-            /* Override sizeClass using a function */
-            setOptions({
-                button: {
-                    rootClass: {
-                        class: newGlobalRootClassValue,
-                    },
-                    sizeClass: {
-                        class: (suffix) => {
-                            return `${newGlobalSizeClassValue}suff-${suffix}`
-                        },
-                        override: true
-                    },
-                }
-            })
-            wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`)
-
-            expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix))
-                .toBe(`${newGlobalSizeClassValue}suff-${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`)
-
-            /* Override sizeClass from prop using a function */
-            setOptions({
-                button: {
-                    rootClass: {
-                        class: newGlobalRootClassValue,
-                    },
-                    sizeClass: {
-                        class: (suffix) => {
-                            return `${newGlobalSizeClassValue}suff-${suffix}`
-                        },
-                        override: true
-                    },
-                }
-            })
-            wrapper.setProps({ rootClass: newRootClassValue, sizeClass: (suffix) => `${newSizeClassValue}suff-${suffix}` })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`)
-
-            expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix))
-                .toBe(`${newGlobalSizeClassValue}suff-${sizeSuffix} ${newSizeClassValue}suff-${sizeSuffix}`)
-
-            /* Override true as prop */
-            wrapper = shallowMount(OButton, {
-                attachToDocument: true,
-                mixins: [BaseComponentMixin]
-            })
-            setOptions({
-                button: {
-                    rootClass: {
-                        class: newGlobalRootClassValue,
-                    },
-                    sizeClass: {
-                        class: (suffix) => {
-                            return `${newGlobalSizeClassValue}suff-${suffix}`
-                        },
-                    },
-                }
-            })
-            wrapper.setProps({ override: true, rootClass: newRootClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${newRootClassValue}`)
-
-            expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix))
-                .toBe(``)
-        })
-        it('transform global and local classes as expected', async () => {
-            // TODO test local classes -- rootClass
-            const initialRootClassValue = 'initial-class'
-            const newGlobalRootClassValue = 'new-global-class'
-            const newRootClassValue = 'new-class'
-
-
-            // Locally
-            setOptions({
-                button: {
-                    rootClass: newGlobalRootClassValue,
-                    override: false,
-                    transformClasses: (appliedClasses) => {
-                        return appliedClasses.replace(/-/g, '--')
-                    }
-                }
-            })
-            wrapper.setProps({ rootClass: newRootClassValue })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--'))
-
-            // Globally
-            setOptions({
-                transformClasses: (appliedClasses) => {
-                    return appliedClasses.replace(/-/g, '--')
-                },
-                button: {
-                    rootClass: newGlobalRootClassValue,
-                    override: true
-                }
-            })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--'))
-
-            // Both globally and locally
-            setOptions({
-                transformClasses: (appliedClasses) => {
-                    return appliedClasses.replace(/-/g, '__')
-                },
-                button: {
-                    rootClass: newGlobalRootClassValue,
-                    override: true,
-                    transformClasses: (appliedClasses) => {
-                        return appliedClasses.replace(/-/g, '--')
-                    },
-                }
-            })
-            await wrapper.vm.$nextTick()
-            expect(wrapper.vm.computedClass('rootClass', initialRootClassValue))
-                .toBe(`${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--').replace(/-/g, '__'))
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/CheckRadioMixin.js b/packages/oruga/src/utils/CheckRadioMixin.js
deleted file mode 100644
index 88f0bc898..000000000
--- a/packages/oruga/src/utils/CheckRadioMixin.js
+++ /dev/null
@@ -1,61 +0,0 @@
-export default {
-	props: {
-		/** @model */
-		value: [String, Number, Boolean, Array],
-		/**
-		 * Same as native value
-		 */
-		nativeValue: [String, Number, Boolean, Array],
-		/**
-		 * Color of the control, optional
-		 * @values primary, info, success, warning, danger, and any other custom color
-		 */
-		variant: String,
-		/**
-		 * Same as native disabled
-		 */
-		disabled: Boolean,
-		required: Boolean,
-		/**
-		 * Same as native name
-		 */
-		name: String,
-		/**
-		 * Size of the control, optional
-		 * @values small, medium, large
-		 */
-		size: String
-	},
-	data() {
-		return {
-            newValue: this.value,
-            isIndeterminate : this.indeterminate
-		}
-	},
-	computed: {
-		computedValue: {
-			get() {
-				return this.newValue
-			},
-			set(value) {
-                this.newValue = value
-                this.isIndeterminate = false
-				this.$emit('input', this.newValue)
-			}
-		}
-	},
-	watch: {
-		/**
-		 * When v-model change, set internal value.
-		 */
-		value(value) {
-            this.newValue = value
-		}
-	},
-	methods: {
-		focus() {
-			// MacOS FireFox and Safari do not focus when clicked
-			this.$refs.input.focus()
-		}
-	}
-}
diff --git a/packages/oruga/src/utils/CheckRadioMixin.spec.js b/packages/oruga/src/utils/CheckRadioMixin.spec.js
deleted file mode 100644
index 5999bfb3b..000000000
--- a/packages/oruga/src/utils/CheckRadioMixin.spec.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import CheckRadioMixin from '@utils/CheckRadioMixin'
-
-let wrapper
-
-describe('CheckRadioMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        const component = {
-            template: '<div class="o-component"></div>'
-        }
-        wrapper = shallowMount(component, {
-            attachToDocument: true,
-            mixins: [CheckRadioMixin]
-        })
-    })
-
-    it('set value prop', async () => {
-        wrapper.setProps({
-            value: 'test'
-        })
-        await wrapper.vm.$nextTick()
-        expect(wrapper.vm.newValue).toEqual('test')
-    })
-})
diff --git a/packages/oruga/src/utils/FormElementMixin.js b/packages/oruga/src/utils/FormElementMixin.js
deleted file mode 100644
index 3aaf36a28..000000000
--- a/packages/oruga/src/utils/FormElementMixin.js
+++ /dev/null
@@ -1,246 +0,0 @@
-import { getOptions } from './config';
-import { getValueByPath } from './helpers'
-
-// This should cover all types of HTML elements that have properties related to
-// HTML constraint validation, e.g. .form and .validity.
-const validatableFormElementTypes = typeof window === 'undefined' ? [] : [
-    HTMLButtonElement,
-    HTMLFieldSetElement,
-    HTMLInputElement,
-    HTMLObjectElement,
-    HTMLOutputElement,
-    HTMLSelectElement,
-    HTMLTextAreaElement,
-];
-
-function asValidatableFormElement(el) {
-	if (validatableFormElementTypes.some(t => el instanceof t)) {
-		return el;
-	} else {
-		return null;
-	}
-}
-
-export default {
-	inject: {
-        $field: { from: "$field", default: false }
-    },
-	props: {
-		/**
-		 * Makes input full width when inside a grouped or addon field
-		 */
-		expanded: Boolean,
-		/**
-		 * Makes the element rounded
-		 */
-		rounded: Boolean,
-		/**
-		 * Icon name to be added
-		 */
-		icon: String,
-		/**
-		 * Icon pack to use
-		 * @values mdi, fa, fas and any other custom icon pack
-		 */
-		iconPack: String,
-		/** Native options to use in HTML5 validation */
-		autocomplete: String,
-		/** Same as native maxlength, plus character counter */
-		maxlength: [Number, String],
-		/** Enable html 5 native validation */
-		useHtml5Validation: {
-			type: Boolean,
-			default: () => {
-				return getValueByPath(getOptions(), "useHtml5Validation", true);
-			},
-		},
-		/** Show status icon using field and variant prop */
-		statusIcon: {
-			type: Boolean,
-			default: () => {
-				return getValueByPath(getOptions(), "statusIcon", true);
-			},
-		},
-		/**
-		 * The message which is shown when a validation error occurs
-		 */
-		validationMessage: String,
-	},
-	data() {
-		return {
-			isValid: true,
-			isFocused: false,
-			newIconPack: this.iconPack
-		};
-	},
-	computed: {
-		parentField() {
-			return this.$field;
-		},
-
-		/**
-		 * Get the type prop from parent if it's a Field.
-		 */
-		statusVariant() {
-			if (!this.parentField) return;
-			if (!this.parentField.newVariant) return;
-			if (typeof this.parentField.newVariant === "string") {
-				return this.parentField.newVariant;
-			} else {
-				for (const key in this.parentField.newVariant) {
-					if (this.parentField.newVariant[key]) {
-						return key;
-					}
-				}
-			}
-		},
-
-		/**
-		 * Get the message prop from parent if it's a Field.
-		 */
-		statusMessage() {
-			if (!this.parentField) return;
-
-			return this.parentField.newMessage || this.parentField.hasMessageSlot;
-		},
-
-        /**
-        * Icon name based on the variant.
-        */
-        statusVariantIcon() {
-            const statusVariantIcon = getValueByPath(getOptions(), "statusVariantIcon", {
-                'success': 'check',
-                'danger': 'alert-circle',
-                'info': 'information',
-                'warning': 'alert'
-            });
-            return statusVariantIcon[this.statusVariant] || ''
-        }
-	},
-	methods: {
-		/**
-		 * Focus method that work dynamically depending on the component.
-		 */
-		focus() {
-			const el = this.getElement();
-			if (el === undefined) return;
-
-			this.$nextTick(() => {
-				if (el) el.focus();
-			});
-		},
-
-		onBlur(event) {
-			this.isFocused = false;
-            if (this.parentField) {
-                this.parentField.isFocused = false;
-            }
-			this.$emit("blur", event);
-			this.checkHtml5Validity();
-		},
-
-		onFocus(event) {
-			this.isFocused = true;
-            if (this.parentField) {
-                this.parentField.isFocused = true;
-            }
-			this.$emit("focus", event);
-		},
-
-		onInvalid(event) {
-			this.checkHtml5Validity();
-			const validatable = asValidatableFormElement(event.target);
-			if (validatable && this.parentField && this.useHtml5Validation) {
-				// We provide our own error message on the field, so we should suppress the browser's default tooltip.
-				// We still want to focus the form's first invalid input, though.
-				event.preventDefault();
-				let isFirstInvalid = false;
-				if (validatable.form != null) {
-					const formElements = validatable.form.elements;
-					for (let i = 0; i < formElements.length; ++i) {
-						const element = asValidatableFormElement(formElements.item(i));
-						if (element && element.willValidate && !element.validity.valid) {
-							isFirstInvalid = (validatable === element);
-							break;
-						}
-					}
-				}
-				if (isFirstInvalid) {
-					const fieldElement = this.parentField.$el;
-					const invalidHandler = getValueByPath(getOptions(), 'reportInvalidInput');
-					if (invalidHandler instanceof Function) {
-						invalidHandler(validatable, fieldElement);
-					} else {
-						// We'll scroll to put the whole field in view, not just the element that triggered the event,
-						// which should mean that the message will be visible onscreen.
-						// scrollIntoViewIfNeeded() is a non-standard method (but a very common extension).
-						// If we can't use it, we'll just fall back to focusing the field.
-						const canScrollToField = fieldElement ? fieldElement.scrollIntoViewIfNeeded != undefined : false;
-						validatable.focus({ preventScroll: canScrollToField });
-						if (canScrollToField) {
-							fieldElement.scrollIntoViewIfNeeded();
-						}
-					}
-				}
-			}
-			this.$emit("invalid", event);
-		},
-
-		getElement() {
-			let el = this.$refs[this.$elementRef];
-			while (el && el.$elementRef) {
-				el = el.$refs[el.$elementRef];
-			}
-			return el;
-		},
-
-		setInvalid() {
-			const variant = "danger";
-			const message = this.validationMessage || this.getElement().validationMessage;
-			this.setValidity(variant, message);
-		},
-
-		setValidity(variant, message) {
-			this.$nextTick(() => {
-				if (this.parentField) {
-					// Set type only if not defined
-					if (!this.parentField.variant) {
-						this.parentField.newVariant = variant;
-					}
-					// Set message only if not defined
-					if (!this.parentField.message) {
-						this.parentField.newMessage = message;
-					}
-				}
-			});
-		},
-
-		/**
-		 * Check HTML5 validation, set isValid property.
-		 * If validation fail, send 'danger' type,
-		 * and error message to parent if it's a Field.
-		 */
-		checkHtml5Validity() {
-			if (!this.useHtml5Validation) return;
-
-			const el = this.getElement();
-			if (el === undefined) return;
-
-			if (!el.validity.valid) {
-				this.setInvalid();
-				this.isValid = false;
-			} else {
-				this.setValidity(null, null);
-				this.isValid = true;
-			}
-
-			return this.isValid;
-		},
-
-        syncFilled(value) {
-            if (this.parentField) {
-                this.parentField.isFilled = !!value
-            }
-        }
-	}
-}
diff --git a/packages/oruga/src/utils/FormElementMixin.spec.js b/packages/oruga/src/utils/FormElementMixin.spec.js
deleted file mode 100644
index 795cb0058..000000000
--- a/packages/oruga/src/utils/FormElementMixin.spec.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import FormElementMixin from '@utils/FormElementMixin'
-
-let wrapper
-
-describe('FormElementMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        const component = {
-            template: '<div class="o-component"></div>'
-        }
-        wrapper = shallowMount(component, {
-            attachToDocument: true,
-            mixins: [FormElementMixin]
-        })
-    })
-
-    it('is valid as default', () => {
-        expect(wrapper.vm.isValid).toBeTruthy()
-    })
-
-    it('should set isFocused and emit focus event on onFocus', (done) => {
-        wrapper.vm.onFocus()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.isFocused).toBeTruthy()
-            expect(wrapper.emitted()['focus']).toBeTruthy()
-            done()
-        })
-    })
-
-    it('should reset isFocused and emit blur event on onBlur', (done) => {
-        wrapper.vm.checkHtml5Validity = jest.fn()
-        wrapper.vm.onBlur()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.isFocused).toBeFalsy()
-            expect(wrapper.emitted()['blur']).toBeTruthy()
-            expect(wrapper.vm.checkHtml5Validity).toHaveBeenCalled()
-            done()
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/InjectedChildMixin.js b/packages/oruga/src/utils/InjectedChildMixin.js
deleted file mode 100644
index b8b436819..000000000
--- a/packages/oruga/src/utils/InjectedChildMixin.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import { defaultIfUndefined, hasFlag } from './helpers'
-
-const sorted = 1
-const optional = 2
-
-export const Sorted = sorted
-export const Optional = optional
-
-export default (parentItemName, flags = 0) => {
-    const mixin = {
-        inject: {
-            parent: { from: 'o' + parentItemName }
-        },
-        created() {
-            this.newValue = defaultIfUndefined(this.value, this.parent._nextSequence())
-            if (!this.parent) {
-                if (!hasFlag(flags, optional)) {
-                    throw new Error('You should wrap ' + this.$options.name + ' in a ' + parentItemName)
-                }
-            } else {
-                this.parent._registerItem(this)
-            }
-        },
-        beforeDestroy() {
-            if (this.parent) {
-                this.parent._unregisterItem(this)
-            }
-        }
-    }
-    if (hasFlag(flags, sorted)) {
-        mixin.data = () => {
-            return {
-                index: null
-            }
-        }
-    }
-    return mixin
-}
diff --git a/packages/oruga/src/utils/InstanceRegistry.js b/packages/oruga/src/utils/InstanceRegistry.js
deleted file mode 100644
index 455a55f11..000000000
--- a/packages/oruga/src/utils/InstanceRegistry.js
+++ /dev/null
@@ -1,22 +0,0 @@
-function InstanceRegistry() {
-    this.entries = []
-}
-
-InstanceRegistry.prototype = {
-    add(entry) {
-        this.entries.push(entry)
-    },
-    remove(entry) {
-        let index = this.entries.indexOf(entry)
-        this.entries.splice(index, 1)
-    },
-    walk(callback) {
-        // Walk a copy of the array so that the callback is allowed to remove the instance
-        this.entries = [...this.entries].filter((e) => {
-            const ret = callback(e)
-            return !(ret === true)
-        })
-    },
-}
-
-export default InstanceRegistry
diff --git a/packages/oruga/src/utils/InstanceRegistry.spec.js b/packages/oruga/src/utils/InstanceRegistry.spec.js
deleted file mode 100644
index bd10d81f5..000000000
--- a/packages/oruga/src/utils/InstanceRegistry.spec.js
+++ /dev/null
@@ -1,173 +0,0 @@
-import InstanceRegistry from '@utils/InstanceRegistry'
-
-describe('InstanceRegistry', () => {
-    describe('.add', () => {
-        it('registers the new entry', () => {
-            const myEntry = {key: 1}
-            const registry = new InstanceRegistry()
-
-            registry.add(myEntry)
-
-            expect(registry.entries).toContain(myEntry)
-        })
-    })
-
-    describe('.remove', () => {
-        it('removes a registered entry', () => {
-            const myEntry = {key: 1}
-            const registry = new InstanceRegistry()
-            registry.add(myEntry)
-
-            myEntry.other = 2
-
-            registry.remove(myEntry)
-
-            expect(registry.entries).not.toContain(myEntry)
-        })
-    })
-
-    describe('.walk', () => {
-        it('walks all the entries', () => {
-            const myEntry = {key: 1}
-            const registry = new InstanceRegistry()
-            registry.add(myEntry)
-
-            const walked = []
-
-            registry.walk((entry) => {
-                walked.push(entry)
-            })
-
-            expect(walked).toHaveLength(1)
-        })
-
-        it('keeps the entries', () => {
-            const myEntry = {key: 1}
-            const registry = new InstanceRegistry()
-            registry.add(myEntry)
-
-            const walked = []
-
-            registry.walk((entry) => {
-                walked.push(entry)
-            })
-
-            expect(registry.entries).toHaveLength(1)
-            expect(registry.entries).toContain(myEntry)
-        })
-
-        describe('when the callback returns true for some entries', () => {
-            it('walks all the entries', () => {
-                const myEntry = {key: 1}
-                const myEntry2 = {key: 2, remove: true}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    return entry.remove === true
-                })
-
-                expect(walked).toHaveLength(2)
-            })
-
-            it('removes the entries when the callback returns true', () => {
-                const myEntry = {key: 1}
-                const myEntry2 = {key: 2, remove: true}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    return entry.remove === true
-                })
-
-                expect(registry.entries).toHaveLength(1)
-                expect(registry.entries).toContain(myEntry)
-                expect(registry.entries).not.toContain(myEntry2)
-            })
-        })
-
-        describe('when the callback returns true for early entries', () => {
-            it('walks all the entries', () => {
-                const myEntry = {key: 1, remove: true}
-                const myEntry2 = {key: 2}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    return entry.remove === true
-                })
-
-                expect(walked).toHaveLength(2)
-            })
-
-            it('removes the entries when the callback returns true', () => {
-                const myEntry = {key: 1, remove: true}
-                const myEntry2 = {key: 2}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    return entry.remove === true
-                })
-
-                expect(registry.entries).toHaveLength(1)
-                expect(registry.entries).toContain(myEntry2)
-                expect(registry.entries).not.toContain(myEntry)
-            })
-        })
-
-        describe('when the callback itself removes the entries', () => {
-            it('walks all the entries', () => {
-                const myEntry = {key: 1, remove: true}
-                const myEntry2 = {key: 2}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    if (entry.remove) registry.remove(entry)
-                })
-
-                expect(walked).toHaveLength(2)
-            })
-
-            it('removes the entries when the callback returns true', () => {
-                const myEntry = {key: 1, remove: true}
-                const myEntry2 = {key: 2}
-                const registry = new InstanceRegistry()
-                registry.add(myEntry)
-                registry.add(myEntry2)
-
-                const walked = []
-
-                registry.walk((entry) => {
-                    walked.push(entry)
-                    return entry.remove === true
-                })
-
-                expect(registry.entries).toHaveLength(1)
-                expect(registry.entries).toContain(myEntry2)
-                expect(registry.entries).not.toContain(myEntry)
-            })
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/MatchMediaMixin.js b/packages/oruga/src/utils/MatchMediaMixin.js
deleted file mode 100644
index 952b5d2aa..000000000
--- a/packages/oruga/src/utils/MatchMediaMixin.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { getOptions } from './config'
-import { getValueByPath } from './helpers'
-
-export default {
-    props: {
-        /**
-         * Mobile breakpoint as max-width value
-         */
-        mobileBreakpoint: String
-    },
-    data() {
-        return {
-            isMatchMedia: undefined
-        };
-    },
-    methods: {
-        onMatchMedia(event) {
-            this.isMatchMedia = event.matches
-        }
-    },
-    mounted() {
-        let width = this.mobileBreakpoint
-        if (!width) {
-            const config = getOptions()
-            const defaultWidth = getValueByPath(config, 'mobileBreakpoint', '1023px')
-            width = getValueByPath(config, `${this.$options.configField}.mobileBreakpoint`, defaultWidth)
-        }
-        this.$mediaRef = window.matchMedia(`(max-width: ${width})`)
-        if (this.$mediaRef) {
-            this.isMatchMedia = this.$mediaRef.matches
-            this.$mediaRef.addEventListener('change', this.onMatchMedia)
-        } else {
-            this.isMatchMedia = false
-        }
-    },
-    unmounted() {
-        if (this.$mediaRef) {
-            this.$mediaRef.removeEventListener('change', this.onMatchMedia)
-        }
-    }
-}
diff --git a/packages/oruga/src/utils/MessageMixin.js b/packages/oruga/src/utils/MessageMixin.js
deleted file mode 100644
index 0c19d12f4..000000000
--- a/packages/oruga/src/utils/MessageMixin.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import Icon from '../components/icon/Icon'
-
-export default {
-    components: {
-        [Icon.name]: Icon
-    },
-    props: {
-        /** Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */
-        active: {
-            type: Boolean,
-            default: true
-        },
-        /** Adds an 'X' button that closes the notification. */
-        closable: {
-            type: Boolean,
-            default: false
-        },
-        /** Message text (can contain HTML). */
-        message: String,
-        /** Type (color) of the notification, optional. */
-        type: String,
-        /** Adds an icon on the left side depending on the type (or the icon prop if defined). */
-        hasIcon: Boolean,
-        /** Icon name to use with has-icon. */
-        icon: String,
-        /** Icon pack to use. */
-        iconPack: String,
-        /** Icon size */
-        iconSize: {
-            type: String,
-            default: 'large'
-        },
-        /** Hide notification after duration only not programmatic. */
-        autoClose: {
-            type: Boolean,
-            default: false
-        },
-        /** Visibility duration in miliseconds. */
-        duration: {
-            type: Number,
-            default: 2000
-        }
-    },
-    data() {
-        return {
-            isActive: this.active
-        }
-    },
-    watch: {
-        active(value) {
-            this.isActive = value
-        },
-        isActive(value) {
-            if (value) {
-                this.setAutoClose()
-            } else {
-                if (this.timer) {
-                    clearTimeout(this.timer)
-                }
-            }
-        }
-    },
-    computed: {
-        /**
-         * Icon name (MDI) based on type.
-         */
-        computedIcon() {
-            if (this.icon) {
-                return this.icon
-            }
-            switch (this.type) {
-                case 'info':
-                    return 'information'
-                case 'success':
-                    return 'check-circle'
-                case 'warning':
-                    return 'alert'
-                case 'danger':
-                    return 'alert-circle'
-                default:
-                    return null
-            }
-        }
-    },
-    methods: {
-        /**
-         * Close the Message and emit events.
-         */
-        close() {
-            this.isActive = false
-            this.$emit('close', ...arguments)
-            this.$emit('update:active', false)
-        },
-        /**
-         * Set timer to auto close message
-         */
-        setAutoClose() {
-            if (this.autoClose) {
-                this.timer = setTimeout(() => {
-                    if (this.isActive) {
-                        this.close({action: 'close', method: 'timeout'})
-                    }
-                }, this.duration)
-            }
-        }
-    },
-    mounted() {
-        this.setAutoClose()
-    }
-}
diff --git a/packages/oruga/src/utils/MessageMixin.spec.js b/packages/oruga/src/utils/MessageMixin.spec.js
deleted file mode 100644
index 01d11c378..000000000
--- a/packages/oruga/src/utils/MessageMixin.spec.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import MessageMixin from '@utils/MessageMixin'
-
-let wrapper
-
-describe('MessageMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        const component = {
-            template: '<div class="o-component"></div>'
-        }
-        wrapper = shallowMount(component, {
-            attachToDocument: true,
-            mixins: [MessageMixin]
-        })
-    })
-
-    it('is active', () => {
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('should set isActive when active is set', (done) => {
-        wrapper.setProps({active: false})
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.isActive).toBeFalsy()
-            done()
-        })
-    })
-
-    it('should return correct icon depending on type', () => {
-        const expected = {
-            'info': 'information',
-            'success': 'check-circle',
-            'warning': 'alert',
-            'danger': 'alert-circle',
-            'other': null
-        }
-        for (let [key, value] of Object.entries(expected)) {
-            wrapper.setProps({type: key})
-            expect(wrapper.vm.computedIcon).toEqual(value)
-        }
-    })
-
-    it('should reset isActive and emit close event on close', (done) => {
-        wrapper.vm.close()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.isActive).toBeFalsy()
-            expect(wrapper.emitted()['close']).toBeTruthy()
-            done()
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/NoticeMixin.js b/packages/oruga/src/utils/NoticeMixin.js
deleted file mode 100644
index a7fc66dfa..000000000
--- a/packages/oruga/src/utils/NoticeMixin.js
+++ /dev/null
@@ -1,193 +0,0 @@
-import { getOptions } from './config'
-import { getValueByPath, removeElement, promiseObject } from './helpers'
-
-export default {
-    props: {
-        /** Type (color) of the notification, optional. */
-        type: {
-            type: String,
-        },
-        /** Message text (can contain HTML). */
-        message: [String, Array],
-        /** Visibility duration in miliseconds. */
-        duration: {
-            type: Number,
-            default: () => {
-                return getValueByPath(getOptions(), 'notification.duration', 1000)
-            }
-        },
-        /** If should queue with others notices (snackbar/toast/notification). */
-        queue: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'notification.noticeQueue', false)
-            }
-        },
-        /** Show the Notification indefinitely until it is dismissed when programmatically. */
-        indefinite: {
-            type: Boolean,
-            default: false
-        },
-        /** Which position the notification will appear when programmatically. */
-        position: {
-            type: String,
-            default: 'top',
-            validator(value) {
-                return [
-                    'top-right',
-                    'top',
-                    'top-left',
-                    'bottom-right',
-                    'bottom',
-                    'bottom-left'
-                ].indexOf(value) > -1
-            }
-        },
-        /** DOM element the toast will be created on. Note that this also changes the position of the toast from fixed to absolute. Meaning that the container should be fixed. */
-        container: {
-            type: String,
-            default: () => {
-                return getValueByPath(getOptions(), 'notification.containerElement', undefined)
-            }
-        },
-        /** @ignore */
-        programmatic: Object,
-        /** @ignore */
-        promise: promiseObject(),
-        /** Callback function to call after close (programmatically close or user canceled) */
-        onClose: {
-            type: Function,
-            default: () => {}
-        }
-    },
-    data() {
-        return {
-            isActive: false,
-            parentTop: null,
-            parentBottom: null,
-            newDuration: this.duration,
-            newContainer: this.container
-        }
-    },
-    computed: {
-        correctParent() {
-            switch (this.position) {
-                case 'top-right':
-                case 'top':
-                case 'top-left':
-                    return this.parentTop
-
-                case 'bottom-right':
-                case 'bottom':
-                case 'bottom-left':
-                    return this.parentBottom
-            }
-        },
-        transition() {
-            switch (this.position) {
-                case 'top-right':
-                case 'top':
-                case 'top-left':
-                    return {
-                        enter: 'fadeInDown',
-                        leave: 'fadeOut'
-                    }
-                case 'bottom-right':
-                case 'bottom':
-                case 'bottom-left':
-                    return {
-                        enter: 'fadeInUp',
-                        leave: 'fadeOut'
-                    }
-            }
-        }
-    },
-    methods: {
-        shouldQueue() {
-            if (!this.queue) return false
-            return (
-                this.parentTop.childElementCount > 0 ||
-                this.parentBottom.childElementCount > 0
-            )
-        },
-
-        close() {
-            clearTimeout(this.timer)
-            this.$emit('close')
-            this.onClose.apply(null, arguments)
-
-            if (this.programmatic) {
-                if (this.programmatic.instances) {
-                    this.programmatic.instances.remove(this)
-                }
-                if (this.programmatic.resolve) {
-                    this.programmatic.resolve.apply(null, arguments)
-                }
-            }
-
-            // Timeout for the animation complete before destroying
-            setTimeout(() => {
-                this.isActive = false
-                this.$destroy()
-                removeElement(this.$el)
-            }, 150)
-        },
-
-        showNotice() {
-            if (this.shouldQueue()) this.correctParent.innerHTML = ''
-            this.correctParent.insertAdjacentElement('afterbegin', this.$el)
-            this.isActive = true
-
-            if (!this.indefinite) {
-                this.timer = setTimeout(() => this.timeoutCallback(), this.newDuration)
-            }
-        },
-
-        setupContainer() {
-            if (this.rootClasses() && this.positionClasses('top') && this.positionClasses('bottom')) {
-                this.parentTop = document.querySelector((this.newContainer ? this.newContainer : 'body') + `>.${this.rootClasses().join('.')}.${this.positionClasses('top').join('.')}`)
-                this.parentBottom = document.querySelector((this.newContainer ? this.newContainer : 'body') + `>.${this.rootClasses().join('.')}.${this.positionClasses('bottom').join('.')}`)
-
-                if (this.parentTop && this.parentBottom) return
-
-                if (!this.parentTop) {
-                    this.parentTop = document.createElement('div')
-                    this.parentTop.className = `${this.rootClasses().join(' ')} ${this.positionClasses('top').join(' ')}`
-                }
-
-                if (!this.parentBottom) {
-                    this.parentBottom = document.createElement('div')
-                    this.parentBottom.className = `${this.rootClasses().join(' ')} ${this.positionClasses('bottom').join(' ')}`
-                }
-
-                const container = document.querySelector(this.newContainer) || document.body
-
-                container.appendChild(this.parentTop)
-                container.appendChild(this.parentBottom)
-
-                if (this.newContainer) {
-                    const classes = this.noticeCustomContainerClasses()
-                    if (classes && classes.length) {
-                        classes.filter(c => !!c).forEach(c => {
-                            this.parentTop.classList.add(c)
-                            this.parentBottom.classList.add(c)
-                        })
-                    }
-                }
-            }
-        },
-
-        timeoutCallback() {
-            return this.close({action: 'close', method: 'timeout'})
-        }
-    },
-    beforeMount() {
-        this.setupContainer()
-    },
-    mounted() {
-        if (this.programmatic && this.programmatic.instances) {
-            this.programmatic.instances.add(this)
-        }
-        this.showNotice()
-    }
-}
diff --git a/packages/oruga/src/utils/NoticeMixin.spec.js b/packages/oruga/src/utils/NoticeMixin.spec.js
deleted file mode 100644
index 8e95d840d..000000000
--- a/packages/oruga/src/utils/NoticeMixin.spec.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import NoticeMixin from '@utils/NoticeMixin'
-import BaseComponentMixin from '@utils/BaseComponentMixin'
-
-let wrapper
-
-describe('NoticeMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        const component = {
-            template: '<div class="o-component"></div>',
-            methods: {
-                rootClasses() { return ['o-notices']},
-                positionClasses(position) {return ['o-notices--' + position]}
-            }
-        }
-        wrapper = shallowMount(component, {
-            mixins: [BaseComponentMixin, NoticeMixin]
-        })
-    })
-
-    it('is active', () => {
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('returns correct transition depending on position', () => {
-        const topTransition = {
-            enter: 'fadeInDown',
-            leave: 'fadeOut'
-        }
-        const bottomTransition = {
-            enter: 'fadeInUp',
-            leave: 'fadeOut'
-        }
-        const expected = {
-            'top': topTransition,
-            'top-right': topTransition,
-            'top-left': topTransition,
-            'bottom': bottomTransition,
-            'bottom-right': bottomTransition,
-            'bottom-left': bottomTransition
-        }
-        for (let [key, value] of Object.entries(expected)) {
-            wrapper.setProps({position: key})
-            expect(wrapper.vm.transition).toEqual(value)
-        }
-
-        expect(wrapper.vm.isActive).toBeTruthy()
-    })
-
-    it('reset isActive on close', async () => {
-        wrapper.vm.close()
-        await new Promise(resolve => setTimeout(resolve, 200));
-        expect(wrapper.vm.isActive).toBeFalsy()
-    })
-})
diff --git a/packages/oruga/src/utils/ProviderParentMixin.js b/packages/oruga/src/utils/ProviderParentMixin.js
deleted file mode 100644
index 76dbade93..000000000
--- a/packages/oruga/src/utils/ProviderParentMixin.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import { hasFlag } from './helpers'
-
-const items = 1
-const sorted = 3
-
-export const Items = items
-export const Sorted = sorted
-
-export default (itemName, flags = 0) => {
-    const mixin = {
-        provide() {
-            return {
-                ['o' + itemName]: this
-            }
-        }
-    }
-
-    if (hasFlag(flags, items)) {
-        mixin.data = function () {
-            return {
-                childItems: [],
-                sequence: 1
-            }
-        }
-        mixin.methods = {
-            _registerItem(item) {
-                item.index = this.childItems.length
-                this.childItems.push(item)
-                if (this.$el) {
-                    this.$nextTick(() => {
-                        const ids = this.childItems.map(it => `#${itemName}-${it.newValue}`).join(',')
-                        const sortedIds = Array.from(this.$el.querySelectorAll(ids))
-                            .map(el => el.id.replace(`${itemName}-`, ''))
-                        this.childItems.forEach(it => it.index = sortedIds.indexOf(`${it.newValue}`))
-                    })
-                }
-            },
-            _unregisterItem(item) {
-                this.childItems = this.childItems.filter((i) => i !== item)
-            },
-            _nextSequence() {
-                return this.sequence++
-            }
-        }
-
-        if (hasFlag(flags, sorted)) {
-            mixin.computed = {
-                /**
-                 * When items are added/removed sort them according to their position
-                 */
-                sortedItems() {
-                    return this.childItems.slice().sort((i1, i2) => {
-                        return i1.index - i2.index
-                    })
-                }
-            }
-        }
-    }
-    return mixin
-}
diff --git a/packages/oruga/src/utils/SlotComponent.js b/packages/oruga/src/utils/SlotComponent.js
deleted file mode 100644
index cac1b82fb..000000000
--- a/packages/oruga/src/utils/SlotComponent.js
+++ /dev/null
@@ -1,42 +0,0 @@
-export default {
-    name: 'OSlotComponent',
-    props: {
-        component: {
-            type: Object,
-            required: true
-        },
-        name: {
-            type: String,
-            default: 'default'
-        },
-        scoped: {
-            type: Boolean
-        },
-        props: {
-            type: Object
-        },
-        tag: {
-            type: String,
-            default: 'div'
-        },
-        event: {
-            type: String,
-            default: 'hook:updated'
-        }
-    },
-    methods: {
-        refresh() {
-            this.$forceUpdate()
-        }
-    },
-    created() {
-        this.component.$on(this.event, this.refresh)
-    },
-    beforeDestroy() {
-        this.component.$off(this.event, this.refresh)
-    },
-    render(h) {
-        const slot = this.scoped ? this.component.$scopedSlots[this.name](this.props) : this.component.$slots[this.name]
-        return h(this.tag, {}, slot)
-    }
-}
diff --git a/packages/oruga/src/utils/SlotComponent.spec.js b/packages/oruga/src/utils/SlotComponent.spec.js
deleted file mode 100644
index 91a2efa91..000000000
--- a/packages/oruga/src/utils/SlotComponent.spec.js
+++ /dev/null
@@ -1,125 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import OSlotComponent from '@utils/SlotComponent'
-
-describe('OSlotComponent', () => {
-    const MockComponent = {
-        render: (h) => h('div', {}, 'Hello!')
-    }
-    const defaultEvent = 'hook:updated'
-
-    it('default render', () => {
-        const slot = '<span>Content</span>'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                default: slot
-            }
-        })
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm
-            }
-        })
-        expect(wrapper.html()).toBe(`<div>${slot}</div>`)
-    })
-
-    it('render', () => {
-        const slot = '<span>Content</span>'
-        const slotName = 'header'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                [slotName]: slot
-            }
-        })
-        const tag = 'span'
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm,
-                tag: tag,
-                name: slotName
-            }
-        })
-        expect(wrapper.html()).toBe(`<${tag}>${slot}</${tag}>`)
-    })
-
-    it('render after emit event', async () => {
-        const slot = '<span>Content</span>'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                default: slot
-            }
-        })
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm
-            }
-        })
-        Component.vm.$emit(defaultEvent, {})
-        await wrapper.vm.$nextTick()
-        expect(wrapper.html()).toBe(`<div>${slot}</div>`)
-    })
-
-    it('refresh after default event (hook)', async () => {
-        const slot = '<span>Content</span>'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                default: slot
-            }
-        })
-        const refresh = jest.fn()
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm
-            },
-            methods: {
-                refresh
-            }
-        })
-        Component.vm.$forceUpdate()
-        await Component.vm.$nextTick()
-        expect(wrapper.html()).toBe(`<div>${slot}</div>`)
-    })
-
-    it('refresh', () => {
-        const event = 'component-event'
-        const slot = '<span>Content</span>'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                default: slot
-            }
-        })
-        const refresh = jest.fn()
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm,
-                event
-            },
-            methods: {
-                refresh
-            }
-        })
-        Component.vm.$emit(event, {})
-        expect(refresh).toHaveBeenCalledTimes(1)
-        expect(wrapper.html()).toBe(`<div>${slot}</div>`)
-    })
-
-    it('destroy', () => {
-        const slot = '<span>Content</span>'
-        const Component = shallowMount(MockComponent, {
-            slots: {
-                default: slot
-            }
-        })
-        const refresh = jest.fn()
-        const wrapper = shallowMount(OSlotComponent, {
-            propsData: {
-                component: Component.vm
-            },
-            methods: {
-                refresh
-            }
-        })
-        wrapper.destroy()
-        Component.vm.$emit(defaultEvent, {})
-        expect(refresh).toHaveBeenCalledTimes(0)
-    })
-})
diff --git a/packages/oruga/src/utils/TabbedChildMixin.js b/packages/oruga/src/utils/TabbedChildMixin.js
deleted file mode 100644
index 5d1e80767..000000000
--- a/packages/oruga/src/utils/TabbedChildMixin.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import { default as InjectedChildMixin, Sorted } from './InjectedChildMixin'
-
-export default (parentCmp) => ({
-    mixins: [InjectedChildMixin(parentCmp, Sorted)],
-    props: {
-        /**
-         * Item value (it will be used as v-model of wrapper component)
-         */
-        value: [String, Number],
-        /**
-         * Item label
-         */
-        label: String,
-        /**
-         * Icon on the left
-         */
-        icon: String,
-        /**
-         * Icon pack
-         */
-        iconPack: String,
-        /**
-         * Show/hide item
-         */
-        visible: {
-            type: Boolean,
-            default: true
-        },
-        /**
-         * Header class of the item
-         */
-        headerClass: [String, Array, Object]
-    },
-    data() {
-        return {
-            transitionName: undefined,
-            newValue: this.value
-        }
-    },
-    computed: {
-        isActive() {
-            return this.parent.activeItem === this
-        },
-        elementClasses() {
-            return []
-        }
-    },
-    methods: {
-        /**
-         * Activate element, alter animation name based on the index.
-         */
-        activate(oldIndex) {
-            this.transitionName = this.index < oldIndex
-                ? this.parent.vertical ? 'slide-down' : 'slide-next'
-                : this.parent.vertical ? 'slide-up' : 'slide-prev'
-
-            this.$emit("activate")
-        },
-
-        /**
-         * Deactivate element, alter animation name based on the index.
-         */
-        deactivate(newIndex) {
-            this.transitionName = newIndex < this.index
-                ? this.parent.vertical ? 'slide-down' : 'slide-next'
-                : this.parent.vertical ? 'slide-up' : 'slide-prev'
-        }
-    },
-    render(h) {
-        // if destroy apply v-if
-        if (this.parent.destroyOnHide) {
-            if (!this.isActive || !this.visible) return
-        }
-        const vnode = h(
-            'div',
-            {
-                directives: [{ name: 'show', value: this.isActive && this.visible }],
-                attrs: {
-                    'class': this.elementClasses,
-                    'id': `${parentCmp}-${this.newValue}`,
-                    'tabindex': this.isActive ? 0 : -1
-                }
-            },
-            this.$slots.default
-        )
-        // check animated prop
-        if (this.parent.animated) {
-            return h(
-                'transition',
-                {
-                    props: {
-                        'name': this.transitionName
-                    },
-                    on: {
-                        'before-enter': () => { this.parent.isTransitioning = true },
-                        'after-enter': () => { this.parent.isTransitioning = false }
-                    }
-                },
-                [vnode]
-            )
-        }
-        return vnode
-    }
-})
diff --git a/packages/oruga/src/utils/TabbedMixin.js b/packages/oruga/src/utils/TabbedMixin.js
deleted file mode 100644
index 05ea35c85..000000000
--- a/packages/oruga/src/utils/TabbedMixin.js
+++ /dev/null
@@ -1,147 +0,0 @@
-import Icon from '../components/icon/Icon'
-import SlotComponent from '../utils/SlotComponent'
-import { default as ProviderParentMixin, Sorted } from './ProviderParentMixin'
-import { mod } from './helpers'
-
-export default (cmp) => ({
-    mixins: [ProviderParentMixin(cmp, Sorted)],
-    components: {
-        [Icon.name]: Icon,
-        [SlotComponent.name]: SlotComponent
-    },
-    props: {
-        /** @model */
-        value: [String, Number],
-        /**
-        * Color of the control, optional
-        * @values primary, info, success, warning, danger, and any other custom color
-        */
-        variant: [String, Object],
-        /**
-         * Tab size, optional
-         * @values small, medium, large
-         */
-        size: String,
-        animated: {
-            type: Boolean,
-            default: true
-        },
-        /** Show tab in vertical layout */
-        vertical: {
-            type: Boolean,
-            default: false
-        },
-        /**
-         * Position of the tab, optional
-         * @values centered, right
-         */
-        position: String,
-        /** Destroy tab on hide */
-        destroyOnHide: {
-            type: Boolean,
-            default: false
-        }
-    },
-    data() {
-        return {
-            activeId: this.value,
-            contentHeight: 0,
-            isTransitioning: false
-        }
-    },
-    computed: {
-        activeItem() {
-            return this.activeId !== undefined && this.activeId !== null
-                ? this.childItems.filter((i) => i.newValue === this.activeId)[0] : this.items[0]
-        },
-        activeIndex() {
-            return this.childItems.findIndex((item => item.newValue === this.activeId))
-        },
-        items() {
-            return this.sortedItems
-        }
-    },
-    watch: {
-        /**
-         * When v-model is changed set the new active tab.
-         */
-        value(value) {
-            if (this.activeId !== value) {
-                this.performAction(value)
-            }
-        },
-    },
-    methods: {
-        /**
-        * Child click listener, emit input event and change active child.
-        */
-        childClick(child) {
-            if (this.activeId !== child.newValue) {
-                this.performAction(child.newValue)
-                this.$emit('input', this.activeId)
-            }
-        },
-        /**
-         * Select the first 'viable' child, starting at startingIndex and in the direction specified
-         * by the boolean parameter forward. In other words, first try to select the child at index 
-         * startingIndex, and if it is not visible or it is disabled, then go to the index in the
-         * specified direction until either returning to startIndex or finding a viable child item.
-        */
-        clickFirstViableChild(startingIndex, forward) {
-            let direction = forward ? 1 : -1;
-            let newIndex = startingIndex
-            for(; newIndex !== this.activeIndex; newIndex = mod((newIndex + direction), this.childItems.length)) {
-                // Break if the item at this index is viable (not disabled and is visible)
-                if(this.childItems[newIndex].visible && !this.childItems[newIndex].disabled) {
-                    break
-                }
-            }
-            this.childClick(this.childItems[newIndex])
-        },
-        /**
-         * Go to the next item or wrap around
-        */
-        next() {
-            let newIndex = mod((this.activeIndex + 1), this.childItems.length)
-            this.clickFirstViableChild(newIndex, true)
-        },
-        /**
-         * Go to the previous item or wrap around
-        */
-        prev() {
-            let newIndex = mod(this.activeIndex - 1, this.childItems.length )
-            this.clickFirstViableChild(newIndex, false)
-        },
-        /**
-         * Go to the first viable item
-        */
-        homePressed() {
-            if (this.childItems.length < 1) {
-                return
-            }
-            this.clickFirstViableChild(0, true)
-        },
-        /**
-         * Go to the last viable item
-        */
-        endPressed() {
-            if (this.childItems.length < 1) {
-                return
-            }
-            this.clickFirstViableChild(this.childItems.length - 1, false)
-        },
-        /**
-        * Activate next child and deactivate prev child
-        */
-        performAction(newId) {
-            const oldValue = this.activeId
-            const oldTab = oldValue !== undefined && oldValue !== null
-                ? this.childItems.filter((i) => i.newValue === oldValue)[0] : this.items[0]
-            this.activeId = newId
-            if (oldTab && this.activeItem) {
-                oldTab.deactivate(this.activeItem.index)
-                this.activeItem.activate(oldTab.index)
-            }
-        }
-    }
-})
diff --git a/packages/oruga/src/utils/TimepickerMixin.js b/packages/oruga/src/utils/TimepickerMixin.js
deleted file mode 100644
index 581702ef8..000000000
--- a/packages/oruga/src/utils/TimepickerMixin.js
+++ /dev/null
@@ -1,753 +0,0 @@
-import { getOptions } from './config'
-import FormElementMixin from './FormElementMixin'
-import { getValueByPath, isMobile, matchWithGroups } from './helpers'
-
-const AM = 'AM'
-const PM = 'PM'
-const HOUR_FORMAT_24 = '24'
-const HOUR_FORMAT_12 = '12'
-
-const defaultTimeFormatter = (date, vm) => {
-    return vm.dtf.format(date)
-}
-
-const defaultTimeParser = (timeString, vm) => {
-    if (timeString) {
-        let d = null
-        if (vm.computedValue && !isNaN(vm.computedValue)) {
-            d = new Date(vm.computedValue)
-        } else {
-            d = vm.timeCreator()
-            d.setMilliseconds(0)
-        }
-
-        if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === 'function') {
-            const formatRegex = vm.dtf
-                .formatToParts(d).map((part) => {
-                    if (part.type === 'literal') {
-                        return part.value.replace(/ /g, '\\s?')
-                    } else if (part.type === 'dayPeriod') {
-                        return `((?!=<${part.type}>)(${vm.amString}|${vm.pmString}|${AM}|${PM}|${AM.toLowerCase()}|${PM.toLowerCase()})?)`
-                    }
-                    return `((?!=<${part.type}>)\\d+)`
-                }).join('')
-            const timeGroups = matchWithGroups(formatRegex, timeString)
-
-            // We do a simple validation for the group.
-            // If it is not valid, it will fallback to Date.parse below
-            timeGroups.hour = timeGroups.hour ? parseInt(timeGroups.hour, 10) : null
-            timeGroups.minute = timeGroups.minute ? parseInt(timeGroups.minute, 10) : null
-            timeGroups.second = timeGroups.second ? parseInt(timeGroups.second, 10) : null
-            if (
-                timeGroups.hour &&
-                timeGroups.hour >= 0 &&
-                timeGroups.hour < 24 &&
-                timeGroups.minute &&
-                timeGroups.minute >= 0 &&
-                timeGroups.minute < 59
-            ) {
-                if (timeGroups.dayPeriod &&
-                    (
-                        timeGroups.dayPeriod.toLowerCase() === vm.pmString.toLowerCase() ||
-                        timeGroups.dayPeriod.toLowerCase() === PM.toLowerCase()
-                    ) &&
-                    timeGroups.hour < 12) {
-                    timeGroups.hour += 12
-                }
-                d.setHours(timeGroups.hour)
-                d.setMinutes(timeGroups.minute)
-                d.setSeconds(timeGroups.second || 0)
-                return d
-            }
-        }
-
-        // Fallback if formatToParts is not supported or if we were not able to parse a valid date
-        let am = false
-        if (vm.hourFormat === HOUR_FORMAT_12) {
-            const dateString12 = timeString.split(' ')
-            timeString = dateString12[0]
-            am = (dateString12[1] === vm.amString || dateString12[1] === AM)
-        }
-        const time = timeString.split(':')
-        let hours = parseInt(time[0], 10)
-        const minutes = parseInt(time[1], 10)
-        const seconds = vm.enableSeconds ? parseInt(time[2], 10) : 0
-        if (isNaN(hours) || hours < 0 || hours > 23 ||
-            (vm.hourFormat === HOUR_FORMAT_12 && (hours < 1 || hours > 12)) ||
-            isNaN(minutes) || minutes < 0 || minutes > 59) {
-            return null
-        }
-        d.setSeconds(seconds)
-        d.setMinutes(minutes)
-        if (vm.hourFormat === HOUR_FORMAT_12) {
-            if (am && hours === 12) {
-                hours = 0
-            } else if (!am && hours !== 12) {
-                hours += 12
-            }
-        }
-        d.setHours(hours)
-        return new Date(d.getTime())
-    }
-    return null
-}
-
-export default {
-    mixins: [FormElementMixin],
-    inheritAttrs: false,
-    props: {
-        /* @model */
-        value: Date,
-        /* Timepicker is shown inline, input is removed */
-        inline: Boolean,
-        /* Earliest time available for selection */
-        minTime: Date,
-        /* Latest time available for selection */
-        maxTime: Date,
-        placeholder: String,
-        /* Enable input/typing. Note that you might have to set a custom time parser */
-        editable: Boolean,
-        disabled: Boolean,
-        /**
-         * Size of button, optional
-         * @values small, medium, large
-         */
-        size: String,
-        /**
-         * Hour format for input and display
-         * @values 12, 24
-         */
-        hourFormat: {
-            type: String,
-            validator: (value) => {
-                return value === HOUR_FORMAT_24 || value === HOUR_FORMAT_12
-            }
-        },
-        /* Step hours for select component */
-        incrementHours: {
-            type: Number,
-            default: 1
-        },
-        /* Step minutes for select component */
-        incrementMinutes: {
-            type: Number,
-            default: 1
-        },
-        /* Step seconds for select component */
-        incrementSeconds: {
-            type: Number,
-            default: 1
-        },
-        /* Function to format time (Date type) to a string for display in the input */
-        timeFormatter: {
-            type: Function,
-            default: (date, vm) => {
-                const timeFormatter = getValueByPath(getOptions(), 'timepicker.timeFormatter', undefined)
-                if (typeof timeFormatter === 'function') {
-                    return timeFormatter(date)
-                } else {
-                    return defaultTimeFormatter(date, vm)
-                }
-            }
-        },
-        /* Function to parse string to a time (Date type) for set a time from the input to the component */
-        timeParser: {
-            type: Function,
-            default: (date, vm) => {
-                const timeParser = getValueByPath(getOptions(), 'timepicker.timeParser', undefined)
-                if (typeof timeParser === 'function') {
-                    return timeParser(date)
-                } else {
-                    return defaultTimeParser(date, vm)
-                }
-            }
-        },
-        /* Enable native timepicker on mobile */
-        mobileNative: {
-            type: Boolean,
-            default: () => {
-                return getValueByPath(getOptions(), 'timepicker.mobileNative', true)
-            }
-        },
-        /* Function used internally to create a new Date instance */
-        timeCreator: {
-            type: Function,
-            default: () => {
-                const timeCreator = getValueByPath(getOptions(), 'timepicker.timeCreator', undefined)
-                if (typeof timeCreator === 'function') {
-                    return timeCreator()
-                } else {
-                    return new Date()
-                }
-            }
-        },
-        /**
-         * Optional, position of the datepicker relative to the input
-         * @values top-right, top-left, bottom-left
-         */
-        position: String,
-        /* Array of unselectable times (Date object) */
-        unselectableTimes: Array,
-        /* Open timepicker on input focus */
-        openOnFocus: Boolean,
-        /* Show seconds picker */
-        enableSeconds: Boolean,
-        /* Default value when hours change */
-        defaultMinutes: Number,
-        /* Default value when hours or minutes change */
-        defaultSeconds: Number,
-        /* Append timepicker calendar to body */
-        appendToBody: Boolean,
-        /* Reset timepicker values on meridian change */
-        resetOnMeridianChange: {
-            type: Boolean,
-            default: false
-        }
-    },
-    data() {
-        return {
-            dateSelected: this.value,
-            hoursSelected: null,
-            minutesSelected: null,
-            secondsSelected: null,
-            meridienSelected: null,
-            _elementRef: 'input'
-        }
-    },
-    computed: {
-        computedValue: {
-            get() {
-                return this.dateSelected
-            },
-            set(value) {
-                this.dateSelected = value
-                this.$emit('input', this.dateSelected)
-            }
-        },
-        localeOptions() {
-            return new Intl.DateTimeFormat(this.locale, {
-                hour: 'numeric',
-                minute: 'numeric',
-                second: this.enableSeconds ? 'numeric' : undefined
-            }).resolvedOptions()
-        },
-        dtf() {
-            return new Intl.DateTimeFormat(this.locale, {
-                hour: this.localeOptions.hour || 'numeric',
-                minute: this.localeOptions.minute || 'numeric',
-                second: this.enableSeconds ? this.localeOptions.second || 'numeric' : undefined,
-                hourCycle: !this.isHourFormat24 ? 'h12' : 'h23'
-            })
-        },
-        newHourFormat() {
-            return this.hourFormat || (this.localeOptions.hour12 ? HOUR_FORMAT_12 : HOUR_FORMAT_24)
-        },
-        sampleTime() {
-            let d = this.timeCreator()
-            d.setHours(10)
-            d.setSeconds(0)
-            d.setMinutes(0)
-            d.setMilliseconds(0)
-            return d
-        },
-        hourLiteral() {
-            if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                let d = this.sampleTime
-                const parts = this.dtf.formatToParts(d)
-                const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'hour'))
-                if (literal) {
-                    return literal.value
-                }
-            }
-            return ':'
-        },
-        minuteLiteral() {
-            if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                let d = this.sampleTime
-                const parts = this.dtf.formatToParts(d)
-                const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'minute'))
-                if (literal) {
-                    return literal.value
-                }
-            }
-            return ':'
-        },
-        secondLiteral() {
-            if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                let d = this.sampleTime
-                const parts = this.dtf.formatToParts(d)
-                const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'second'))
-                if (literal) {
-                    return literal.value
-                }
-            }
-        },
-        amString() {
-            if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                let d = this.sampleTime
-                d.setHours(10)
-                const dayPeriod = this.dtf.formatToParts(d).find((part) => part.type === 'dayPeriod')
-                if (dayPeriod) {
-                    return dayPeriod.value
-                }
-            }
-            return AM
-        },
-        pmString() {
-            if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') {
-                let d = this.sampleTime
-                d.setHours(20)
-                const dayPeriod = this.dtf.formatToParts(d).find((part) => part.type === 'dayPeriod')
-                if (dayPeriod) {
-                    return dayPeriod.value
-                }
-            }
-            return PM
-        },
-        hours() {
-            if (!this.incrementHours || this.incrementHours < 1) throw new Error('Hour increment cannot be null or less than 1.')
-            const hours = []
-            const numberOfHours = this.isHourFormat24 ? 24 : 12
-            for (let i = 0; i < numberOfHours; i += this.incrementHours) {
-                let value = i
-                let label = value
-                if (!this.isHourFormat24) {
-                    value = (i + 1)
-                    label = value
-                    if (this.meridienSelected === this.amString) {
-                        if (value === 12) {
-                            value = 0
-                        }
-                    } else if (this.meridienSelected === this.pmString) {
-                        if (value !== 12) {
-                            value += 12
-                        }
-                    }
-                }
-                hours.push({
-                    label: this.formatNumber(label),
-                    value: value
-                })
-            }
-            return hours
-        },
-
-        minutes() {
-            if (!this.incrementMinutes || this.incrementMinutes < 1) throw new Error('Minute increment cannot be null or less than 1.')
-            const minutes = []
-            for (let i = 0; i < 60; i += this.incrementMinutes) {
-                minutes.push({
-                    label: this.formatNumber(i, true),
-                    value: i
-                })
-            }
-            return minutes
-        },
-
-        seconds() {
-            if (!this.incrementSeconds || this.incrementSeconds < 1) throw new Error('Second increment cannot be null or less than 1.')
-            const seconds = []
-            for (let i = 0; i < 60; i += this.incrementSeconds) {
-                seconds.push({
-                    label: this.formatNumber(i, true),
-                    value: i
-                })
-            }
-            return seconds
-        },
-
-        meridiens() {
-            return [this.amString, this.pmString]
-        },
-
-        isMobile() {
-            return this.mobileNative && isMobile.any()
-        },
-
-        isHourFormat24() {
-            return this.newHourFormat === HOUR_FORMAT_24
-        }
-    },
-    watch: {
-        hourFormat() {
-            if (this.hoursSelected !== null) {
-                this.meridienSelected = this.hoursSelected >= 12 ? this.pmString : this.amString
-            }
-        },
-        locale() {
-            // see updateInternalState default
-            if (!this.value) {
-                this.meridienSelected = this.amString
-            }
-        },
-        /**
-         * When v-model is changed:
-         *   1. Update internal value.
-         *   2. If it's invalid, validate again.
-         */
-        value: {
-            handler(value) {
-                this.updateInternalState(value)
-                !this.isValid && this.$refs.input.checkHtml5Validity()
-            },
-            immediate: true
-        }
-    },
-    methods: {
-        onMeridienChange(value) {
-            if (this.hoursSelected !== null && this.resetOnMeridianChange) {
-                this.hoursSelected = null
-                this.minutesSelected = null
-                this.secondsSelected = null
-                this.computedValue = null
-            } else if (this.hoursSelected !== null) {
-                if (value === this.pmString) {
-                    this.hoursSelected += 12
-                } else if (value === this.amString) {
-                    this.hoursSelected -= 12
-                }
-            }
-            this.updateDateSelected(
-                this.hoursSelected,
-                this.minutesSelected,
-                this.enableSeconds ? this.secondsSelected : 0,
-                value)
-        },
-
-        onHoursChange(value) {
-            if (!this.minutesSelected && typeof this.defaultMinutes !== 'undefined') {
-                this.minutesSelected = this.defaultMinutes
-            }
-            if (!this.secondsSelected && typeof this.defaultSeconds !== 'undefined') {
-                this.secondsSelected = this.defaultSeconds
-            }
-            this.updateDateSelected(
-                parseInt(value, 10),
-                this.minutesSelected,
-                this.enableSeconds ? this.secondsSelected : 0,
-                this.meridienSelected
-            )
-        },
-
-        onMinutesChange(value) {
-            if (!this.secondsSelected && this.defaultSeconds) {
-                this.secondsSelected = this.defaultSeconds
-            }
-            this.updateDateSelected(
-                this.hoursSelected,
-                parseInt(value, 10),
-                this.enableSeconds ? this.secondsSelected : 0,
-                this.meridienSelected
-            )
-        },
-
-        onSecondsChange(value) {
-            this.updateDateSelected(
-                this.hoursSelected,
-                this.minutesSelected,
-                parseInt(value, 10),
-                this.meridienSelected
-            )
-        },
-
-        updateDateSelected(hours, minutes, seconds, meridiens) {
-            if (hours != null && minutes != null &&
-                ((!this.isHourFormat24 && meridiens !== null) || this.isHourFormat24)) {
-                let time = null
-                if (this.computedValue && !isNaN(this.computedValue)) {
-                    time = new Date(this.computedValue)
-                } else {
-                    time = this.timeCreator()
-                    time.setMilliseconds(0)
-                }
-                time.setHours(hours)
-                time.setMinutes(minutes)
-                time.setSeconds(seconds)
-                if (!isNaN(time.getTime())) {
-                    this.computedValue = new Date(time.getTime())
-                }
-            }
-        },
-
-        updateInternalState(value) {
-            if (value) {
-                this.hoursSelected = value.getHours()
-                this.minutesSelected = value.getMinutes()
-                this.secondsSelected = value.getSeconds()
-                this.meridienSelected = value.getHours() >= 12 ? this.pmString : this.amString
-            } else {
-                this.hoursSelected = null
-                this.minutesSelected = null
-                this.secondsSelected = null
-                this.meridienSelected = this.amString
-            }
-            this.dateSelected = value
-        },
-
-        isHourDisabled(hour) {
-            let disabled = false
-            if (this.minTime) {
-                const minHours = this.minTime.getHours()
-                const noMinutesAvailable = this.minutes.every((minute) => {
-                    return this.isMinuteDisabledForHour(hour, minute.value)
-                })
-                disabled = hour < minHours || noMinutesAvailable
-            }
-            if (this.maxTime) {
-                if (!disabled) {
-                    const maxHours = this.maxTime.getHours()
-                    disabled = hour > maxHours
-                }
-            }
-            if (this.unselectableTimes) {
-                if (!disabled) {
-                    const unselectable = this.unselectableTimes.filter((time) => {
-                        if (this.enableSeconds && this.secondsSelected !== null) {
-                            return time.getHours() === hour &&
-                                time.getMinutes() === this.minutesSelected &&
-                                time.getSeconds() === this.secondsSelected
-                        } else if (this.minutesSelected !== null) {
-                            return time.getHours() === hour &&
-                                time.getMinutes() === this.minutesSelected
-                        }
-                        return false
-                    })
-                    if (unselectable.length > 0) {
-                        disabled = true
-                    } else {
-                        disabled = this.minutes.every((minute) => {
-                            return this.unselectableTimes.filter((time) => {
-                                return time.getHours() === hour &&
-                                    time.getMinutes() === minute.value
-                            }).length > 0
-                        })
-                    }
-                }
-            }
-            return disabled
-        },
-
-        isMinuteDisabledForHour(hour, minute) {
-            let disabled = false
-            if (this.minTime) {
-                const minHours = this.minTime.getHours()
-                const minMinutes = this.minTime.getMinutes()
-                disabled = hour === minHours && minute < minMinutes
-            }
-            if (this.maxTime) {
-                if (!disabled) {
-                    const maxHours = this.maxTime.getHours()
-                    const maxMinutes = this.maxTime.getMinutes()
-                    disabled = hour === maxHours && minute > maxMinutes
-                }
-            }
-
-            return disabled
-        },
-
-        isMinuteDisabled(minute) {
-            let disabled = false
-            if (this.hoursSelected !== null) {
-                if (this.isHourDisabled(this.hoursSelected)) {
-                    disabled = true
-                } else {
-                    disabled = this.isMinuteDisabledForHour(this.hoursSelected, minute)
-                }
-                if (this.unselectableTimes) {
-                    if (!disabled) {
-                        const unselectable = this.unselectableTimes.filter((time) => {
-                            if (this.enableSeconds && this.secondsSelected !== null) {
-                                return time.getHours() === this.hoursSelected &&
-                                    time.getMinutes() === minute &&
-                                    time.getSeconds() === this.secondsSelected
-                            } else {
-                                return time.getHours() === this.hoursSelected &&
-                                    time.getMinutes() === minute
-                            }
-                        })
-                        disabled = unselectable.length > 0
-                    }
-                }
-            }
-            return disabled
-        },
-
-        isSecondDisabled(second) {
-            let disabled = false
-            if (this.minutesSelected !== null) {
-                if (this.isMinuteDisabled(this.minutesSelected)) {
-                    disabled = true
-                } else {
-                    if (this.minTime) {
-                        const minHours = this.minTime.getHours()
-                        const minMinutes = this.minTime.getMinutes()
-                        const minSeconds = this.minTime.getSeconds()
-                        disabled = this.hoursSelected === minHours &&
-                            this.minutesSelected === minMinutes &&
-                            second < minSeconds
-                    }
-                    if (this.maxTime) {
-                        if (!disabled) {
-                            const maxHours = this.maxTime.getHours()
-                            const maxMinutes = this.maxTime.getMinutes()
-                            const maxSeconds = this.maxTime.getSeconds()
-                            disabled = this.hoursSelected === maxHours &&
-                                this.minutesSelected === maxMinutes &&
-                                second > maxSeconds
-                        }
-                    }
-                }
-                if (this.unselectableTimes) {
-                    if (!disabled) {
-                        const unselectable = this.unselectableTimes.filter((time) => {
-                            return time.getHours() === this.hoursSelected &&
-                                time.getMinutes() === this.minutesSelected &&
-                                time.getSeconds() === second
-                        })
-                        disabled = unselectable.length > 0
-                    }
-                }
-            }
-            return disabled
-        },
-
-        isMeridienDisabled(meridienString){
-            const offset = meridienString == "AM" ? 0 : 12;
-            for(let i = 0; i < 12; i++){
-                if(!this.isHourDisabled(i + offset)){
-                    return false;
-                }
-            }
-            return true;
-        },
-
-        /*
-         * Parse string into date
-         */
-        onChange(value) {
-            const date = this.timeParser(value, this)
-            this.updateInternalState(date)
-            if (date && !isNaN(date)) {
-                this.computedValue = date
-            } else {
-                // Force refresh input value when not valid date
-                this.computedValue = null
-                this.$refs.input.newValue = this.computedValue
-            }
-        },
-
-        /*
-         * Toggle timepicker
-         */
-        toggle(active) {
-            if (this.$refs.dropdown) {
-                this.$refs.dropdown.isActive = typeof active === 'boolean'
-                    ? active
-                    : !this.$refs.dropdown.isActive
-            }
-        },
-
-        /*
-         * Close timepicker
-         */
-        close() {
-            this.toggle(false)
-        },
-
-        /*
-         * Call default onFocus method and show timepicker
-         */
-        handleOnFocus() {
-            this.onFocus()
-            if (this.openOnFocus) {
-                this.toggle(true)
-            }
-        },
-
-        /*
-         * Format date into string 'HH-MM-SS'
-         */
-        formatHHMMSS(value) {
-            const date = new Date(value)
-            if (value && !isNaN(date)) {
-                const hours = date.getHours()
-                const minutes = date.getMinutes()
-                const seconds = date.getSeconds()
-                return this.formatNumber(hours, true) + ':' +
-                    this.formatNumber(minutes, true) + ':' +
-                    this.formatNumber(seconds, true)
-            }
-            return ''
-        },
-
-        /*
-         * Parse time from string
-         */
-        onChangeNativePicker(event) {
-            const date = event.target.value
-            if (date) {
-                let time = null
-                if (this.computedValue && !isNaN(this.computedValue)) {
-                    time = new Date(this.computedValue)
-                } else {
-                    time = new Date()
-                    time.setMilliseconds(0)
-                }
-                const t = date.split(':')
-                time.setHours(parseInt(t[0], 10))
-                time.setMinutes(parseInt(t[1], 10))
-                time.setSeconds(t[2] ? parseInt(t[2], 10) : 0)
-                this.computedValue = new Date(time.getTime())
-            } else {
-                this.computedValue = null
-            }
-        },
-
-        formatNumber(value, prependZero) {
-            return this.isHourFormat24 || prependZero
-                ? this.pad(value)
-                : value
-        },
-
-        pad(value) {
-            return (value < 10 ? '0' : '') + value
-        },
-
-        /*
-         * Format date into string
-         */
-        formatValue(date) {
-            if (date && !isNaN(date)) {
-                return this.timeFormatter(date, this)
-            } else {
-                return null
-            }
-        },
-        /**
-         * Keypress event that is bound to the document.
-         */
-        keyPress({ key }) {
-            if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === 'Escape' || key === 'Esc')) {
-                this.toggle(false)
-            }
-        },
-        /**
-         * Emit 'blur' event on dropdown is not active (closed)
-         */
-        onActiveChange(value) {
-            if (!value) {
-                this.onBlur()
-            }
-        }
-    },
-    created() {
-        if (typeof window !== 'undefined') {
-            document.addEventListener('keyup', this.keyPress)
-        }
-    },
-    beforeDestroy() {
-        if (typeof window !== 'undefined') {
-            document.removeEventListener('keyup', this.keyPress)
-        }
-    }
-}
diff --git a/packages/oruga/src/utils/TimepickerMixin.spec.js b/packages/oruga/src/utils/TimepickerMixin.spec.js
deleted file mode 100644
index 437dfe444..000000000
--- a/packages/oruga/src/utils/TimepickerMixin.spec.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import { shallowMount } from '@vue/test-utils'
-import TimepickerMixin from '@utils/TimepickerMixin'
-
-const AM = 'AM'
-const PM = 'PM'
-let wrapper
-
-describe('TimepickerMixin', () => {
-    HTMLElement.prototype.insertAdjacentElement = jest.fn()
-    beforeEach(() => {
-        const component = {
-            template: '<div class="b-component"></div>'
-        }
-        wrapper = shallowMount(component, {
-            attachToDocument: true,
-            mixins: [TimepickerMixin]
-        })
-    })
-
-    it('should set dateSelected and emit input event when setting computedValue', (done) => {
-        const date = new Date()
-        wrapper.vm.computedValue = date
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.dateSelected).toEqual(date)
-            expect(wrapper.emitted()['input']).toBeTruthy()
-            done()
-        })
-    })
-
-    it('should return correct value for meridiens', () => {
-        expect(wrapper.vm.meridiens).toEqual([AM, PM])
-    })
-
-    it('should call updateDateSelected on onSecondsChange', (done) => {
-        wrapper.vm.updateDateSelected = jest.fn()
-        wrapper.vm.onSecondsChange()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.updateDateSelected).toHaveBeenCalledTimes(1)
-            done()
-        })
-    })
-
-    it('should update internal state with passed value on updateInternalState', (done) => {
-        const date = new Date()
-        wrapper.vm.updateInternalState(date)
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.hoursSelected).toEqual(date.getHours())
-            expect(wrapper.vm.minutesSelected).toEqual(date.getMinutes())
-            expect(wrapper.vm.secondsSelected).toEqual(date.getSeconds())
-            done()
-        })
-    })
-
-    it('should update internal state on updateInternalState', (done) => {
-        wrapper.vm.updateInternalState()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.hoursSelected).toBeNull()
-            expect(wrapper.vm.minutesSelected).toBeNull()
-            expect(wrapper.vm.secondsSelected).toBeNull()
-            expect(wrapper.vm.meridienSelected).toEqual(AM)
-            done()
-        })
-    })
-
-    it('should call onFocus on handleOnFocus', (done) => {
-        wrapper.vm.onFocus = jest.fn()
-        wrapper.vm.handleOnFocus()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.onFocus).toHaveBeenCalledTimes(1)
-            done()
-        })
-    })
-
-    it('should call toggle on close', (done) => {
-        wrapper.vm.toggle = jest.fn()
-        wrapper.vm.close()
-        wrapper.vm.$nextTick(() => {
-            expect(wrapper.vm.toggle).toHaveBeenCalledTimes(1)
-            done()
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/config.js b/packages/oruga/src/utils/config.js
deleted file mode 100644
index 38754a66c..000000000
--- a/packages/oruga/src/utils/config.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { merge } from "./helpers"
-
-let config = {
-    iconPack: 'mdi',
-    useHtml5Validation: true,
-    statusIcon: true
-}
-
-export const setOptions = (options) => { config = options }
-
-export const getOptions = () => { return config }
-
-export let VueInstance
-
-export const setVueInstance = (Vue) => { VueInstance = Vue }
-
-export const Programmatic = {
-    getOptions,
-    setOptions(options) {
-        setOptions(merge(getOptions(), options, true))
-    }
-}
-
-export const Plugin = {
-    install(Vue, options = {}) {
-        setVueInstance(Vue)
-        // Options
-        setOptions(merge(getOptions(), options, true))
-    }
-}
diff --git a/packages/oruga/src/utils/config.spec.js b/packages/oruga/src/utils/config.spec.js
deleted file mode 100644
index c173dd8eb..000000000
--- a/packages/oruga/src/utils/config.spec.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { getOptions, setOptions } from '@utils/config'
-
-describe('Config', () => {
-    describe('Test options', () => {
-        test('defaultToastDuration option should be 1000', () => {
-            const config = getOptions()
-            setOptions(Object.assign(config, {defaultToastDuration: 1000}))
-            expect(config.defaultToastDuration).toBe(1000)
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/helpers.js b/packages/oruga/src/utils/helpers.js
deleted file mode 100644
index 60521d967..000000000
--- a/packages/oruga/src/utils/helpers.js
+++ /dev/null
@@ -1,361 +0,0 @@
-/**
- * +/- function to native math sign
- */
-function signPoly(value) {
-    if (value < 0) return -1
-    return value > 0 ? 1 : 0
-}
-export const sign = Math.sign || signPoly
-
-/**
- * Checks if the flag is set
- * @param val
- * @param flag
- * @returns {boolean}
- */
-function hasFlag(val, flag) {
-    return (val & flag) === flag
-}
-
-/**
- * Native modulo bug with negative numbers
- * @param n
- * @param mod
- * @returns {number}
- */
-function mod(n, mod) {
-    return ((n % mod) + mod) % mod
-}
-
-/**
- * Asserts a value is beetween min and max
- * @param val
- * @param min
- * @param max
- * @returns {number}
- */
-function bound(val, min, max) {
-    return Math.max(min, Math.min(max, val))
-}
-
-export { mod, bound, hasFlag }
-
-/**
- * Get value of an object property/path even if it's nested
- */
-export function getValueByPath(obj, path, defaultValue = undefined) {
-    const value = path.split('.').reduce((o, i) => typeof o !== 'undefined' ? o[i] : undefined, obj)
-    return typeof value !== 'undefined' ? value : defaultValue
-}
-
-/**
- * Set value of an object property/path even if it's nested
- */
- export function setValueByPath(obj, path, value) {
-    const p = path.split('.')
-    if (p.length === 1) {
-        obj[path] = value
-        return
-    }
-    const field = p[0]
-    if (typeof obj[field] === 'undefined') obj[field] = {}
-    return setValueByPath(obj[field], p.slice(1).join('.'), value)
-}
-
-/**
- * Extension of indexOf method by equality function if specified
- */
-export function indexOf(array, obj, fn) {
-    if (!array) return -1
-    if (!fn || typeof fn !== 'function') return array.indexOf(obj)
-    for (let i = 0; i < array.length; i++) {
-        if (fn(array[i], obj)) {
-            return i
-        }
-    }
-    return -1
-}
-
-/**
- * Merge function to replace Object.assign with deep merging possibility
- */
-const isObject = (item) => typeof item === 'object' && !Array.isArray(item)
-const mergeFn = (target, source, deep = false) => {
-    if (deep || !Object.assign) {
-        const isDeep = (prop) =>
-            isObject(source[prop]) &&
-            target !== null &&
-            Object.prototype.hasOwnProperty.call(target, prop) &&
-            isObject(target[prop])
-        let replaced
-        if (source === null || typeof source === 'undefined') {
-            replaced = false;
-        } else {
-            replaced = Object.getOwnPropertyNames(source)
-                .map((prop) => ({ [prop]: isDeep(prop)
-                    ? mergeFn(target[prop], source[prop], deep)
-                    : source[prop] }))
-                .reduce((a, b) => ({ ...a, ...b }), {})
-        }
-        return {
-            ...target,
-            ...replaced
-        }
-    } else {
-        return Object.assign(target, source)
-    }
-}
-export const merge = mergeFn
-
-/**
- * Mobile detection
- * https://www.abeautifulsite.net/detecting-mobile-devices-with-javascript
- */
-export const isMobile = {
-    Android: function () {
-        return (
-            typeof window !== 'undefined' &&
-            window.navigator.userAgent.match(/Android/i)
-        )
-    },
-    BlackBerry: function () {
-        return (
-            typeof window !== 'undefined' &&
-            window.navigator.userAgent.match(/BlackBerry/i)
-        )
-    },
-    iOS: function () {
-        return (
-            typeof window !== 'undefined' &&
-            window.navigator.userAgent.match(/iPhone|iPad|iPod/i)
-        )
-    },
-    Opera: function () {
-        return (
-            typeof window !== 'undefined' &&
-            window.navigator.userAgent.match(/Opera Mini/i)
-        )
-    },
-    Windows: function () {
-        return (
-            typeof window !== 'undefined' &&
-            window.navigator.userAgent.match(/IEMobile/i)
-        )
-    },
-    any: function () {
-        return (
-            isMobile.Android() ||
-            isMobile.BlackBerry() ||
-            isMobile.iOS() ||
-            isMobile.Opera() ||
-            isMobile.Windows()
-        )
-    }
-}
-
-// Microsoft Edge "pretends" to be all other major browsers, so we need to filter it out.
-// It doesn't use a very consistent string to represent its own name ("Edge", "Edg", "EdgA", etc.),
-// but it looks like WebKit never pretends to be Chrome, Edge does, and Chrome doesn't have the bug
-// that this flag is used to work around.
-export function isWebKit() {
-    return typeof window !== 'undefined'
-        && window.navigator.userAgent.indexOf('AppleWebKit/') !== -1
-        && window.navigator.userAgent.indexOf('Chrome/') === -1
-}
-
-export function removeElement(el) {
-    if (typeof el.remove !== 'undefined') {
-        el.remove()
-    } else if (typeof el.parentNode !== 'undefined' && el.parentNode !== null) {
-        el.parentNode.removeChild(el)
-    }
-}
-
-export function createAbsoluteElement(el) {
-    const root = document.createElement('div')
-    root.style.position = 'absolute'
-    root.style.left = '0px'
-    root.style.top = '0px'
-    const wrapper = document.createElement('div')
-    root.appendChild(wrapper)
-    wrapper.appendChild(el)
-    document.body.appendChild(root)
-    return root
-}
-
-/**
- * Escape regex characters
- * http://stackoverflow.com/a/6969486
- */
-export function escapeRegExpChars(value) {
-    if (!value) return value
-    // eslint-disable-next-line
-    return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')
-}
-
-export function multiColumnSort(inputArray, sortingPriority) {
-    // clone it to prevent the any watchers from triggering every sorting iteration
-    const array = JSON.parse(JSON.stringify(inputArray))
-    const fieldSorter = (fields) => (a, b) => fields.map((o) => {
-        let dir = 1
-        if (o[0] === '-') { dir = -1; o = o.substring(1) }
-        const aValue = getValueByPath(a, o)
-        const bValue = getValueByPath(b, o)
-        return aValue > bValue ? dir : aValue < bValue ? -(dir) : 0
-    }).reduce((p, n) => p || n, 0)
-
-    return array.sort(fieldSorter(sortingPriority))
-}
-
-export function createNewEvent(eventName) {
-    let event
-    if (typeof Event === 'function') {
-        event = new Event(eventName)
-    } else {
-        event = document.createEvent('Event')
-        event.initEvent(eventName, true, true)
-    }
-    return event
-}
-
-export function toCssDimension(width) {
-    return width === undefined ? null : (isNaN(width) ? width : width + 'px')
-}
-
-export function blankIfUndefined(value) {
-    return typeof value !== 'undefined' && value !== null ? value : ''
-}
-
-export function defaultIfUndefined(value, defaultValue) {
-    return typeof value !== 'undefined' && value !== null ? value : defaultValue
-}
-
-/**
- * Return month names according to a specified locale
- * @param  {String} locale A bcp47 localerouter. undefined will use the user browser locale
- * @param  {String} format long (ex. March), short (ex. Mar) or narrow (M)
- * @return {Array<String>} An array of month names
- */
-export function getMonthNames(locale = undefined, format = 'long') {
-    const dates = []
-    for (let i = 0; i < 12; i++) {
-        dates.push(new Date(2000, i, 15))
-    }
-    const dtf = new Intl.DateTimeFormat(locale, {
-        month: format,
-        // timeZone: 'UTC'
-    })
-    return dates.map((d) => dtf.format(d))
-}
-
-/**
- * Return weekday names according to a specified locale
- * @param  {String} locale A bcp47 localerouter. undefined will use the user browser locale
- * @param  {Number} first day of week index
- * @param  {String} format long (ex. Thursday), short (ex. Thu) or narrow (T)
- * @return {Array<String>} An array of weekday names
- */
-export function getWeekdayNames(locale = undefined, firstDayOfWeek = 0, format = 'narrow') {
-    const dates = []
-    for (let i = 1, j = 0; j < 7; i++) {
-        const d = new Date(2000, 0, i)
-        const day = d.getDay()
-        if (day === firstDayOfWeek || j > 0) {
-            dates.push(d)
-            j++
-        }
-    }
-    const dtf = new Intl.DateTimeFormat(locale, {
-        weekday: format,
-        // timeZone: 'UTC'
-    })
-    return dates.map((d) => dtf.format(d))
-}
-
-/**
- * Accept a regex with group names and return an object
- * ex. matchWithGroups(/((?!=<year>)\d+)\/((?!=<month>)\d+)\/((?!=<day>)\d+)/, '2000/12/25')
- * will return { year: 2000, month: 12, day: 25 }
- * @param  {String} includes injections of (?!={groupname}) for each group
- * @param  {String} the string to run regex
- * @return {Object} an object with a property for each group having the group's match as the value
- */
-export function matchWithGroups(pattern, str) {
-    const matches = str.match(pattern)
-    return pattern
-        // get the pattern as a string
-        .toString()
-        // suss out the groups
-        .match(/<(.+?)>/g)
-        // remove the braces
-        .map((group) => {
-            const groupMatches = group.match(/<(.+)>/)
-            if (!groupMatches || groupMatches.length <= 0) {
-                return null
-            }
-            return group.match(/<(.+)>/)[1]
-        })
-        // create an object with a property for each group having the group's match as the value
-        .reduce((acc, curr, index) => {
-            if (matches && matches.length > index) {
-                acc[curr] = matches[index + 1]
-            } else {
-                acc[curr] = null
-            }
-            return acc
-        }, {})
-}
-
-export function getStyleValue(value) {
-    if (typeof value === 'object') {
-        for (const key in value) {
-            if (value[key]) return key
-        }
-        return ''
-    }
-    return value
-}
-
-export function debounce(func, wait, immediate) {
-    let timeout
-    return function () {
-        const context = this
-        const args = arguments
-        const later = function () {
-            timeout = null
-            if (!immediate) func.apply(context, args)
-        }
-        const callNow = immediate && !timeout
-        clearTimeout(timeout)
-        timeout = setTimeout(later, wait)
-        if (callNow) func.apply(context, args)
-    }
-}
-
-export function endsWith(str, suffix) {
-    return str.indexOf(suffix, str.length - suffix.length) !== -1;
-}
-
-/**
- * Returns the "promise" object.
- *
- * This is to handle browsers that do not have Promise support (IE 11) which are still supported
- * by Vue 2
- */
-export function promiseObject() {
-    // the typedef window is to that vuepress won't break when it tries to run this method
-    return ((typeof window !== "undefined") && window.Promise) ? window.Promise : Object;
-}
-
-
-export const isDefined = (d) => d !== undefined
-
-/**
- * Remove accents/diacritics in a string in JavaScript
- * https://stackoverflow.com/a/37511463
- */
- export function removeDiacriticsFromString(value) {
-    if (!value) return value
-
-    return value.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
-}
diff --git a/packages/oruga/src/utils/helpers.spec.js b/packages/oruga/src/utils/helpers.spec.js
deleted file mode 100644
index eced6859f..000000000
--- a/packages/oruga/src/utils/helpers.spec.js
+++ /dev/null
@@ -1,200 +0,0 @@
-import { useFakeTimers } from 'sinon'
-import {
-    getValueByPath, indexOf, merge,
-    escapeRegExpChars, removeElement, debounce
-} from './helpers'
-
-describe('helpers', () => {
-    describe('getValueByPath', () => {
-        it('get value of an object property/path even if it is nested', () => {
-            const obj = {
-                val1: 'val1',
-                val2: {
-                    val21: 'val21'
-                },
-                val3: {
-                    val31: {
-                        val311: 'val311'
-                    }
-                }
-            }
-
-            expect(getValueByPath(obj, 'val1')).toBe('val1')
-            expect(getValueByPath(obj, 'val2.val21')).toBe('val21')
-            expect(getValueByPath(obj, 'val3.val31.val311')).toBe('val311')
-        })
-    })
-
-    describe('indexOf', () => {
-        it('get index of an array element using equality function', () => {
-            const obj1 = {
-                id: 1
-            }
-            const obj2 = {
-                id: 2
-            }
-            const obj3 = {
-                id: 3
-            }
-            const obj4 = {
-                id: 4
-            }
-            const obj5 = {
-                id: 5
-            }
-            const arr = [
-                obj1,
-                obj2,
-                obj3,
-                obj4
-            ]
-            const fnc = (obj1, obj2) => {
-                return obj1.id === obj2.id
-            }
-
-            expect(indexOf(arr, obj1, fnc)).toBe(0)
-            expect(indexOf(arr, obj2, fnc)).toBe(1)
-            expect(indexOf(arr, obj3, fnc)).toBe(2)
-            expect(indexOf(arr, obj4, fnc)).toBe(3)
-            expect(indexOf(arr, obj5, fnc)).toBe(-1)
-            expect(indexOf(null, obj1, fnc)).toBe(-1)
-            expect(indexOf(arr, obj1)).toBe(0)
-        })
-    })
-
-    describe('merge', () => {
-        describe('shallow merges', () => {
-            it('merges objects', () => {
-                const a = { a: 'discard' }
-                const b = { a: 'test' }
-                expect(merge(a, b)).toEqual({ a: 'test' })
-            })
-
-            it('extends objects', () => {
-                const a = { a: 'test' }
-                const b = { b: 'test' }
-                expect(merge(a, b)).toEqual({ a: 'test', b: 'test' })
-            })
-
-            it('extends a property with an object', () => {
-                const a = { a: 'test' }
-                const b = { b: { c: 'test' } }
-                expect(merge(a, b)).toEqual({ a: 'test', b: { c: 'test' } })
-            })
-
-            it('replaces a property with an object', () => {
-                const a = { b: 'whatever', a: 'test' }
-                const b = { b: { c: 'test' } }
-                expect(merge(a, b)).toEqual({ a: 'test', b: { c: 'test' } })
-            })
-        })
-
-        describe('deep merges', () => {
-            it('merges objects', () => {
-                const a = { test: { a: 'discard', b: 'test' } }
-                const b = { test: { a: 'test' } }
-                expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: 'test' } })
-            })
-
-            it('extends objects', () => {
-                const a = { test: { a: 'test' } }
-                const b = { test: { b: 'test' } }
-                expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: 'test' } })
-            })
-
-            it('extends a property with an object', () => {
-                const a = { test: { a: 'test' } }
-                const b = { test: { b: { c: 'test' } } }
-                expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: { c: 'test' } } })
-            })
-
-            it('replaces a property with an object', () => {
-                const a = { test: { b: 'whatever', a: 'test' } }
-                const b = { test: { b: { c: 'test' } } }
-                expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: { c: 'test' } } })
-            })
-        })
-    })
-
-    describe('escapeRegExpChars', () => {
-        it('escape regex characters', () => {
-            const initial = 'All of these should be escaped: \\ ^ $ * + ? . ( ) | { } [ ]'
-            const expected = 'All of these should be escaped: \\\\ \\^ \\$ \\* \\+ \\? \\. \\( \\) \\| \\{ \\} \\[ \\]'
-
-            expect(escapeRegExpChars(null)).toBeNull()
-            expect(escapeRegExpChars(initial)).toBe(expected)
-        })
-    })
-
-    describe('removeElement', () => {
-        it('calls remove function from the element if it exists', () => {
-            const elm = {
-                remove: jest.fn()
-            }
-
-            removeElement(elm)
-            expect(elm.remove).toHaveBeenCalled()
-        })
-
-        it('calls parentNode.removeChild function from the element if it exists', () => {
-            const elm = {
-                parentNode: {
-                    removeChild: jest.fn()
-                }
-            }
-
-            removeElement(elm)
-            expect(elm.parentNode.removeChild).toHaveBeenCalled()
-        })
-    })
-
-    let clock
-    let func
-    beforeEach(() => {
-        clock = useFakeTimers()
-        func = jest.fn()
-    })
-
-    afterEach(() => {
-        clock.restore()
-    })
-
-    describe('debounce', () => {
-        it('is not called immediately', () => {
-            const debouncedFunc = debounce(func, 1000)
-            debouncedFunc()
-            expect(func).toHaveBeenCalledTimes(0)
-        })
-
-        it('is not called upon several rapid calls', () => {
-            const debouncedFunc = debounce(func, 1000)
-            for (let i = 0; i < 10; i++) {
-                clock.tick(500)
-                debouncedFunc()
-            }
-            expect(func).toHaveBeenCalledTimes(0)
-        })
-
-        it('is called after debounce time', () => {
-            const debouncedFunc = debounce(func, 1000)
-            debouncedFunc()
-            clock.tick(1000)
-            expect(func).toHaveBeenCalledTimes(1)
-        })
-
-        it('is called immediately if immediate is true', () => {
-            const debouncedFunc = debounce(func, 1000, true)
-            debouncedFunc()
-            expect(func).toHaveBeenCalledTimes(1)
-        })
-
-        it('is called once upon several rapid calls if immediate is true', () => {
-            const debouncedFunc = debounce(func, 1000, true)
-            for (let i = 0; i < 10; i++) {
-                clock.tick(500)
-                debouncedFunc()
-            }
-            expect(func).toHaveBeenCalledTimes(1)
-        })
-    })
-})
diff --git a/packages/oruga/src/utils/icons.js b/packages/oruga/src/utils/icons.js
deleted file mode 100644
index 84ba8d498..000000000
--- a/packages/oruga/src/utils/icons.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { merge, getValueByPath } from '../utils/helpers'
-import { getOptions } from './config'
-
-const mdiIcons = {
-    sizes: {
-        'default': 'mdi-24px',
-        'small': null,
-        'medium': 'mdi-36px',
-        'large': 'mdi-48px'
-    },
-    iconPrefix: 'mdi-'
-}
-
-const faIcons = () => {
-    const iconComponent = getValueByPath(getOptions(), 'iconComponent')
-    const faIconPrefix = iconComponent ? '' : 'fa-'
-    return {
-        sizes: {
-            'default': null,
-            'small': null,
-            'medium': faIconPrefix + 'lg',
-            'large': faIconPrefix + '2x'
-        },
-        iconPrefix: faIconPrefix,
-        internalIcons: {
-            'check': 'check',
-            'information': 'info-circle',
-            'alert': 'exclamation-triangle',
-            'alert-circle': 'exclamation-circle',
-            'arrow-up': 'arrow-up',
-            'chevron-right': 'angle-right',
-            'chevron-left': 'angle-left',
-            'chevron-down': 'angle-down',
-            'chevron-up': 'angle-up',
-            'eye': 'eye',
-            'eye-off': 'eye-slash',
-            'caret-down': 'caret-down',
-            'caret-up': 'caret-up',
-            'close-circle': 'times-circle',
-            'close': 'times',
-            'loading': 'circle-notch'
-        }
-    }
-}
-
-const getIcons = () => {
-    let icons = {
-        mdi: mdiIcons,
-        fa: faIcons(),
-        fas: faIcons(),
-        far: faIcons(),
-        fad: faIcons(),
-        fab: faIcons(),
-        fal: faIcons()
-    }
-
-    const customIconPacks = getValueByPath(getOptions(), 'customIconPacks')
-    if (customIconPacks) {
-        icons = merge(icons, customIconPacks, true)
-    }
-
-    return icons
-}
-
-export default getIcons
diff --git a/packages/oruga/src/utils/plugins.js b/packages/oruga/src/utils/plugins.js
deleted file mode 100644
index 14bb283a1..000000000
--- a/packages/oruga/src/utils/plugins.js
+++ /dev/null
@@ -1,19 +0,0 @@
-
-export const use = (plugin) => {
-    if (typeof window !== 'undefined' && window.Vue) {
-        window.Vue.use(plugin)
-    }
-}
-
-export const registerPlugin = (vm, plugin) => {
-    vm.use(plugin)
-}
-
-export const registerComponent = (vm, component) => {
-    vm.component(component.name, component)
-}
-
-export const registerComponentProgrammatic = (vm, property, component) => {
-    if (!vm.prototype.$oruga) vm.prototype.$oruga = {}
-    vm.prototype.$oruga[property] = component
-}
diff --git a/packages/oruga/src/utils/ssr.js b/packages/oruga/src/utils/ssr.js
deleted file mode 100644
index a2d892535..000000000
--- a/packages/oruga/src/utils/ssr.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// Polyfills for SSR
-
-export const isSSR = typeof window === 'undefined'
-
-export const HTMLElement = isSSR ? Object : window.HTMLElement
-export const File = isSSR ? Object : window.File
diff --git a/packages/oruga/types/components/Loading.d.ts b/packages/oruga/types/components/Loading.d.ts
deleted file mode 100644
index 19a482ebd..000000000
--- a/packages/oruga/types/components/Loading.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { SizesModifiers } from '../helpers'
-
-export interface LoadingProps {
-    active?: boolean;
-    programmatic?: boolean;
-    container?: object | (() => any) | string;
-    'full-page'?: boolean;
-    animation?: string;
-    'can-cancel'?: boolean;
-    'on-cancel'?: () => any;
-    icon?: string;
-    'icon-spin'?: boolean;
-    'icon-size'?: SizesModifiers;
-    overlay?: boolean;
-    'root-class'?: string | (() => any) | string[];
-    'overlay-class'?: string | (() => any) | string[];
-    'icon-class'?: string | (() => any) | string[];
-}
diff --git a/packages/oruga/types/components/Modal.d.ts b/packages/oruga/types/components/Modal.d.ts
deleted file mode 100644
index 600be52b7..000000000
--- a/packages/oruga/types/components/Modal.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { SizesModifiers } from '../helpers'
-
-export interface ModalProps {
-    active?: boolean;
-    component?: object | (() => any);	
-    content?: string;
-    'close-button-content'?: string;
-    programmatic?: boolean;
-    props?: object;
-    events?: object;
-    width?: string | number;
-    custom?: boolean;
-    animation?: string;
-    'can-cancel'?: [] | boolean;
-    'on-cancel'?: () => any;
-    'on-close'?: () => any;
-    scroll?: string;
-    'full-screen'?: boolean;
-    'trap-focus'?: boolean;
-    'aria-role'?: string;
-    'aria-modal'?: boolean;
-    'aria-label'?: string;
-    'destroy-on-hide'?: boolean;
-    'auto-focus'?: boolean;
-    'close-icon'?: string;
-    'close-icon-size'?: SizesModifiers;
-    'root-class'?: string | (() => any) | string[];
-    'overlay-class'?: string | (() => any) | string[];
-    'content-class'?: string | (() => any) | string[];
-    'close-class'?: string | (() => any) | string[];
-    'full-screen-class'?: string | (() => any) | string[];
-    'mobile-class'?: string | (() => any) | string[];
-}
diff --git a/packages/oruga/types/components/Notification.d.ts b/packages/oruga/types/components/Notification.d.ts
deleted file mode 100644
index 777f18f7d..000000000
--- a/packages/oruga/types/components/Notification.d.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ColorsModifiers, GlobalPositions } from '../helpers'
-
-export interface ModalProps {
-    position?: GlobalPositions;
-    variant?: ColorsModifiers | object;
-    'aria-close-label'?: string;
-    animation?: string;
-    component?: object | (() => any);
-    props?: object;
-    events?: object;
-    'close-icon'?: string;
-    'root-class'?: string | (() => any) | string[];
-    'close-class'?: string | (() => any) | string[];
-    'content-class'?: string | (() => any) | string[];
-    'icon-class'?: string | (() => any) | string[];
-    'position-class'?: string | (() => any) | string[];
-    'variant-class'?: string | (() => any) | string[];
-    'wrapper-class'?: string | (() => any) | string[];
-}
diff --git a/packages/oruga/types/helpers.d.ts b/packages/oruga/types/helpers.d.ts
deleted file mode 100644
index 867f890b3..000000000
--- a/packages/oruga/types/helpers.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export type SizesModifiers = 'small' | 'medium' | 'large';
-export type ColorsModifiers = 'primary' | 'danger' | 'warning' | 'success' | 'info';
-export type GlobalPositions = 'top-right' | 'top' | 'top-left' | 'bottom-right' | 'bottom' | 'bottom-left';
\ No newline at end of file
diff --git a/packages/oruga/types/index.d.ts b/packages/oruga/types/index.d.ts
deleted file mode 100644
index cbb7cbdcd..000000000
--- a/packages/oruga/types/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-declare module '@oruga-ui/oruga';
\ No newline at end of file