diff --git a/.gitignore b/.gitignore
index 63efb49..89958a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,97 +1,7 @@
-# ---> Node
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# TypeScript v1 declaration files
-typings/
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-
-# next.js build output
-.next
-
-# nuxt.js build output
-.nuxt
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless
-
-# FuseBox cache
-.fusebox/
-
-# ---> Vim
-# Swap
-[._]*.s[a-v][a-z]
-[._]*.sw[a-p]
-[._]s[a-rt-v][a-z]
-[._]ss[a-gi-z]
-[._]sw[a-p]
-
-# Session
-Session.vim
-
-# Temporary
-.netrwhist
-*~
-# Auto-generated tag files
-tags
-# Persistent undo
-[._]*.un~
-
+.DS_Store
+/node_modules/
+/src/node_modules/@sapper/
+yarn-error.log
+/cypress/screenshots/
+/__sapper__/
+.*.sw*
diff --git a/README.md b/README.md
index dba07a3..49b74dc 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,111 @@
-# buttons-computer
+# sapper-template
-The code for the little button clicks only programming language.
\ No newline at end of file
+The default [Sapper](https://github.com/sveltejs/sapper) template, available for Rollup and webpack.
+
+
+## Getting started
+
+
+### Using `degit`
+
+[`degit`](https://github.com/Rich-Harris/degit) is a scaffolding tool that lets you create a directory from a branch in a repository. Use either the `rollup` or `webpack` branch in `sapper-template`:
+
+```bash
+# for Rollup
+npx degit "sveltejs/sapper-template#rollup" my-app
+# for webpack
+npx degit "sveltejs/sapper-template#webpack" my-app
+```
+
+
+### Using GitHub templates
+
+Alternatively, you can use GitHub's template feature with the [sapper-template-rollup](https://github.com/sveltejs/sapper-template-rollup) or [sapper-template-webpack](https://github.com/sveltejs/sapper-template-webpack) repositories.
+
+
+### Running the project
+
+However you get the code, you can install dependencies and run the project in development mode with:
+
+```bash
+cd my-app
+npm install # or yarn
+npm run dev
+```
+
+Open up [localhost:3000](http://localhost:3000) and start clicking around.
+
+Consult [sapper.svelte.dev](https://sapper.svelte.dev) for help getting started.
+
+
+## Structure
+
+Sapper expects to find two directories in the root of your project — `src` and `static`.
+
+
+### src
+
+The [src](src) directory contains the entry points for your app — `client.js`, `server.js` and (optionally) a `service-worker.js` — along with a `template.html` file and a `routes` directory.
+
+
+#### src/routes
+
+This is the heart of your Sapper app. There are two kinds of routes — *pages*, and *server routes*.
+
+**Pages** are Svelte components written in `.svelte` files. When a user first visits the application, they will be served a server-rendered version of the route in question, plus some JavaScript that 'hydrates' the page and initialises a client-side router. From that point forward, navigating to other pages is handled entirely on the client for a fast, app-like feel. (Sapper will preload and cache the code for these subsequent pages, so that navigation is instantaneous.)
+
+**Server routes** are modules written in `.js` files, that export functions corresponding to HTTP methods. Each function receives Express `request` and `response` objects as arguments, plus a `next` function. This is useful for creating a JSON API, for example.
+
+There are three simple rules for naming the files that define your routes:
+
+* A file called `src/routes/about.svelte` corresponds to the `/about` route. A file called `src/routes/blog/[slug].svelte` corresponds to the `/blog/:slug` route, in which case `params.slug` is available to the route
+* The file `src/routes/index.svelte` (or `src/routes/index.js`) corresponds to the root of your app. `src/routes/about/index.svelte` is treated the same as `src/routes/about.svelte`.
+* Files and directories with a leading underscore do *not* create routes. This allows you to colocate helper modules and components with the routes that depend on them — for example you could have a file called `src/routes/_helpers/datetime.js` and it would *not* create a `/_helpers/datetime` route
+
+
+### static
+
+The [static](static) directory contains any static assets that should be available. These are served using [sirv](https://github.com/lukeed/sirv).
+
+In your [service-worker.js](src/service-worker.js) file, you can import these as `files` from the generated manifest...
+
+```js
+import { files } from '@sapper/service-worker';
+```
+
+...so that you can cache them (though you can choose not to, for example if you don't want to cache very large files).
+
+
+## Bundler config
+
+Sapper uses Rollup or webpack to provide code-splitting and dynamic imports, as well as compiling your Svelte components. With webpack, it also provides hot module reloading. As long as you don't do anything daft, you can edit the configuration files to add whatever plugins you'd like.
+
+
+## Production mode and deployment
+
+To start a production version of your app, run `npm run build && npm start`. This will disable live reloading, and activate the appropriate bundler plugins.
+
+You can deploy your application to any environment that supports Node 10 or above. As an example, to deploy to [Vercel Now](https://vercel.com) when using `sapper export`, run these commands:
+
+```bash
+npm install -g vercel
+vercel
+```
+
+If your app can't be exported to a static site, you can use the [now-sapper](https://github.com/thgh/now-sapper) builder. You can find instructions on how to do so in its [README](https://github.com/thgh/now-sapper#basic-usage).
+
+
+## Using external components
+
+When using Svelte components installed from npm, such as [@sveltejs/svelte-virtual-list](https://github.com/sveltejs/svelte-virtual-list), Svelte needs the original component source (rather than any precompiled JavaScript that ships with the component). This allows the component to be rendered server-side, and also keeps your client-side app smaller.
+
+Because of that, it's essential that the bundler doesn't treat the package as an *external dependency*. You can either modify the `external` option under `server` in [rollup.config.js](rollup.config.js) or the `externals` option in [webpack.config.js](webpack.config.js), or simply install the package to `devDependencies` rather than `dependencies`, which will cause it to get bundled (and therefore compiled) with your app:
+
+```bash
+npm install -D @sveltejs/svelte-virtual-list
+```
+
+
+## Bugs and feedback
+
+Sapper is in early development, and may have the odd rough edge here and there. Please be vocal over on the [Sapper issue tracker](https://github.com/sveltejs/sapper/issues).
diff --git a/cypress.json b/cypress.json
new file mode 100644
index 0000000..f5622fa
--- /dev/null
+++ b/cypress.json
@@ -0,0 +1,4 @@
+{
+ "baseUrl": "http://localhost:3000",
+ "video": false
+}
\ No newline at end of file
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
new file mode 100644
index 0000000..da18d93
--- /dev/null
+++ b/cypress/fixtures/example.json
@@ -0,0 +1,5 @@
+{
+ "name": "Using fixtures to represent data",
+ "email": "hello@cypress.io",
+ "body": "Fixtures are a great way to mock data for responses to routes"
+}
\ No newline at end of file
diff --git a/cypress/integration/spec.js b/cypress/integration/spec.js
new file mode 100644
index 0000000..9a7140d
--- /dev/null
+++ b/cypress/integration/spec.js
@@ -0,0 +1,19 @@
+describe('Sapper template app', () => {
+ beforeEach(() => {
+ cy.visit('/')
+ });
+
+ it('has the correct
', () => {
+ cy.contains('h1', 'Great success!')
+ });
+
+ it('navigates to /about', () => {
+ cy.get('nav a').contains('about').click();
+ cy.url().should('include', '/about');
+ });
+
+ it('navigates to /blog', () => {
+ cy.get('nav a').contains('blog').click();
+ cy.url().should('include', '/blog');
+ });
+});
\ No newline at end of file
diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js
new file mode 100644
index 0000000..fd170fb
--- /dev/null
+++ b/cypress/plugins/index.js
@@ -0,0 +1,17 @@
+// ***********************************************************
+// This example plugins/index.js can be used to load plugins
+//
+// You can change the location of this file or turn off loading
+// the plugins file with the 'pluginsFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/plugins-guide
+// ***********************************************************
+
+// This function is called when a project is opened or re-opened (e.g. due to
+// the project's config changing)
+
+module.exports = (on, config) => {
+ // `on` is used to hook into various events Cypress emits
+ // `config` is the resolved Cypress config
+}
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
new file mode 100644
index 0000000..c1f5a77
--- /dev/null
+++ b/cypress/support/commands.js
@@ -0,0 +1,25 @@
+// ***********************************************
+// This example commands.js shows you how to
+// create various custom commands and overwrite
+// existing commands.
+//
+// For more comprehensive examples of custom
+// commands please read more here:
+// https://on.cypress.io/custom-commands
+// ***********************************************
+//
+//
+// -- This is a parent command --
+// Cypress.Commands.add("login", (email, password) => { ... })
+//
+//
+// -- This is a child command --
+// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
+//
+//
+// -- This is a dual command --
+// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
+//
+//
+// -- This is will overwrite an existing command --
+// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
diff --git a/cypress/support/index.js b/cypress/support/index.js
new file mode 100644
index 0000000..d68db96
--- /dev/null
+++ b/cypress/support/index.js
@@ -0,0 +1,20 @@
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+import './commands'
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')
diff --git a/ecosystem.config.js b/ecosystem.config.js
new file mode 100644
index 0000000..42ae985
--- /dev/null
+++ b/ecosystem.config.js
@@ -0,0 +1,20 @@
+module.exports = {
+ apps : [
+ {
+ name: 'gulp',
+ script: 'gulp',
+ instances: 1,
+ autorestart: true,
+ watch: false,
+ max_memory_restart: '1G',
+ env: {
+ NODE_ENV: 'development'
+ },
+ env_production: {
+ NODE_ENV: 'production'
+ }
+ },
+ ],
+};
+
+
diff --git a/gulpfile.js b/gulpfile.js
new file mode 100644
index 0000000..245724f
--- /dev/null
+++ b/gulpfile.js
@@ -0,0 +1,35 @@
+const gulp = require('gulp');
+const autoprefixer = require('gulp-autoprefixer');
+const cleancss = require('gulp-clean-css');
+const csscomb = require('gulp-csscomb');
+const rename = require('gulp-rename');
+const sass = require('gulp-sass');
+
+let paths = {
+ source: './sass/*.scss',
+};
+
+const styles = () => {
+ return gulp.src(paths.source)
+ .pipe(sass({outputStyle: 'compact', precision: 10})
+ .on('error', sass.logError)
+ )
+ .pipe(autoprefixer())
+ .pipe(csscomb())
+ .pipe(cleancss())
+ .pipe(rename({
+ suffix: '.min'
+ }))
+ .pipe(gulp.dest('./static/css/'));
+};
+
+
+const auto = () => {
+ return gulp.watch(['./**/*.scss'], styles);
+}
+
+module.exports = {
+ styles,
+ default: auto
+};
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..3a5a51f
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,7448 @@
+{
+ "name": "TODO",
+ "version": "0.0.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz",
+ "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.12.0",
+ "invariant": "^2.2.4",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.11.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz",
+ "integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/generator": "^7.11.4",
+ "@babel/helper-module-transforms": "^7.11.0",
+ "@babel/helpers": "^7.10.4",
+ "@babel/parser": "^7.11.4",
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.11.0",
+ "@babel/types": "^7.11.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.1",
+ "json5": "^2.1.2",
+ "lodash": "^4.17.19",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.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
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.11.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz",
+ "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.11.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz",
+ "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
+ "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz",
+ "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.10.4",
+ "browserslist": "^4.12.0",
+ "invariant": "^2.2.4",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz",
+ "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-member-expression-to-functions": "^7.10.5",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.10.4"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz",
+ "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-regex": "^7.10.4",
+ "regexpu-core": "^4.7.0"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
+ "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/types": "^7.10.5",
+ "lodash": "^4.17.19"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.11.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz",
+ "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
+ "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
+ "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
+ "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz",
+ "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.11.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz",
+ "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz",
+ "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-simple-access": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.11.0",
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.11.0",
+ "lodash": "^4.17.19"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz",
+ "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+ "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz",
+ "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.19"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.11.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz",
+ "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-wrap-function": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz",
+ "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.10.4",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz",
+ "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz",
+ "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.11.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
+ "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.11.0"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
+ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
+ "dev": true
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz",
+ "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz",
+ "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.10.4",
+ "@babel/traverse": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
+ "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.11.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz",
+ "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz",
+ "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-remap-async-to-generator": "^7.10.4",
+ "@babel/plugin-syntax-async-generators": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz",
+ "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz",
+ "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz",
+ "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz",
+ "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz",
+ "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz",
+ "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz",
+ "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-transform-parameters": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz",
+ "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz",
+ "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-private-methods": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz",
+ "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz",
+ "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@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.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz",
+ "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@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-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-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-top-level-await": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz",
+ "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz",
+ "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz",
+ "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-remap-async-to-generator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz",
+ "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz",
+ "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz",
+ "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-define-map": "^7.10.4",
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-optimise-call-expression": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.10.4",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz",
+ "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz",
+ "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz",
+ "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz",
+ "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz",
+ "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz",
+ "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz",
+ "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz",
+ "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz",
+ "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz",
+ "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.10.5",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz",
+ "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-simple-access": "^7.10.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz",
+ "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.10.4",
+ "@babel/helper-module-transforms": "^7.10.5",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz",
+ "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz",
+ "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz",
+ "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz",
+ "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-replace-supers": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz",
+ "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz",
+ "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz",
+ "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.2"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz",
+ "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz",
+ "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.1"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz",
+ "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz",
+ "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz",
+ "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/helper-regex": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.10.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz",
+ "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz",
+ "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz",
+ "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz",
+ "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz",
+ "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.11.0",
+ "@babel/helper-compilation-targets": "^7.10.4",
+ "@babel/helper-module-imports": "^7.10.4",
+ "@babel/helper-plugin-utils": "^7.10.4",
+ "@babel/plugin-proposal-async-generator-functions": "^7.10.4",
+ "@babel/plugin-proposal-class-properties": "^7.10.4",
+ "@babel/plugin-proposal-dynamic-import": "^7.10.4",
+ "@babel/plugin-proposal-export-namespace-from": "^7.10.4",
+ "@babel/plugin-proposal-json-strings": "^7.10.4",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
+ "@babel/plugin-proposal-numeric-separator": "^7.10.4",
+ "@babel/plugin-proposal-object-rest-spread": "^7.11.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.10.4",
+ "@babel/plugin-proposal-optional-chaining": "^7.11.0",
+ "@babel/plugin-proposal-private-methods": "^7.10.4",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.10.4",
+ "@babel/plugin-syntax-async-generators": "^7.8.0",
+ "@babel/plugin-syntax-class-properties": "^7.10.4",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.0",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+ "@babel/plugin-syntax-top-level-await": "^7.10.4",
+ "@babel/plugin-transform-arrow-functions": "^7.10.4",
+ "@babel/plugin-transform-async-to-generator": "^7.10.4",
+ "@babel/plugin-transform-block-scoped-functions": "^7.10.4",
+ "@babel/plugin-transform-block-scoping": "^7.10.4",
+ "@babel/plugin-transform-classes": "^7.10.4",
+ "@babel/plugin-transform-computed-properties": "^7.10.4",
+ "@babel/plugin-transform-destructuring": "^7.10.4",
+ "@babel/plugin-transform-dotall-regex": "^7.10.4",
+ "@babel/plugin-transform-duplicate-keys": "^7.10.4",
+ "@babel/plugin-transform-exponentiation-operator": "^7.10.4",
+ "@babel/plugin-transform-for-of": "^7.10.4",
+ "@babel/plugin-transform-function-name": "^7.10.4",
+ "@babel/plugin-transform-literals": "^7.10.4",
+ "@babel/plugin-transform-member-expression-literals": "^7.10.4",
+ "@babel/plugin-transform-modules-amd": "^7.10.4",
+ "@babel/plugin-transform-modules-commonjs": "^7.10.4",
+ "@babel/plugin-transform-modules-systemjs": "^7.10.4",
+ "@babel/plugin-transform-modules-umd": "^7.10.4",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4",
+ "@babel/plugin-transform-new-target": "^7.10.4",
+ "@babel/plugin-transform-object-super": "^7.10.4",
+ "@babel/plugin-transform-parameters": "^7.10.4",
+ "@babel/plugin-transform-property-literals": "^7.10.4",
+ "@babel/plugin-transform-regenerator": "^7.10.4",
+ "@babel/plugin-transform-reserved-words": "^7.10.4",
+ "@babel/plugin-transform-shorthand-properties": "^7.10.4",
+ "@babel/plugin-transform-spread": "^7.11.0",
+ "@babel/plugin-transform-sticky-regex": "^7.10.4",
+ "@babel/plugin-transform-template-literals": "^7.10.4",
+ "@babel/plugin-transform-typeof-symbol": "^7.10.4",
+ "@babel/plugin-transform-unicode-escapes": "^7.10.4",
+ "@babel/plugin-transform-unicode-regex": "^7.10.4",
+ "@babel/preset-modules": "^0.1.3",
+ "@babel/types": "^7.11.0",
+ "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",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
+ "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
+ "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.11.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
+ "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+ "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/parser": "^7.10.4",
+ "@babel/types": "^7.10.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz",
+ "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/generator": "^7.11.0",
+ "@babel/helper-function-name": "^7.10.4",
+ "@babel/helper-split-export-declaration": "^7.11.0",
+ "@babel/parser": "^7.11.0",
+ "@babel/types": "^7.11.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.19"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.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
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+ "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.10.4",
+ "lodash": "^4.17.19",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@opencensus/core": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz",
+ "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==",
+ "requires": {
+ "continuation-local-storage": "^3.2.1",
+ "log-driver": "^1.2.7",
+ "semver": "^5.5.0",
+ "shimmer": "^1.2.0",
+ "uuid": "^3.2.1"
+ }
+ },
+ "@opencensus/propagation-b3": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz",
+ "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==",
+ "requires": {
+ "@opencensus/core": "^0.0.8",
+ "uuid": "^3.2.1"
+ },
+ "dependencies": {
+ "@opencensus/core": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz",
+ "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==",
+ "requires": {
+ "continuation-local-storage": "^3.2.1",
+ "log-driver": "^1.2.7",
+ "semver": "^5.5.0",
+ "shimmer": "^1.2.0",
+ "uuid": "^3.2.1"
+ }
+ }
+ }
+ },
+ "@pm2/agent": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.4.tgz",
+ "integrity": "sha512-cZLwaoLa45FRuetKCcoI3kHnnQ7VMLpZnmVom04MoK0cpY/RxcSarkCHSCu9V+pdARwxx96QrWdrtAJdw97dng==",
+ "requires": {
+ "async": "~3.2.0",
+ "chalk": "~3.0.0",
+ "dayjs": "~1.8.24",
+ "debug": "~4.1.1",
+ "eventemitter2": "~5.0.1",
+ "fclone": "~1.0.11",
+ "nssocket": "0.6.0",
+ "pm2-axon": "^3.2.0",
+ "pm2-axon-rpc": "^0.5.0",
+ "proxy-agent": "~3.1.1",
+ "semver": "~7.2.0",
+ "ws": "~7.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "semver": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz",
+ "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig=="
+ },
+ "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==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@pm2/agent-node": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/@pm2/agent-node/-/agent-node-1.1.10.tgz",
+ "integrity": "sha512-xRcrk7OEwhS3d/227/kKGvxgmbIi6Yyp27FzGlFNermEKhgddmFaRnmd7GRLIsBM/KB28NrwflBZulzk/mma6g==",
+ "requires": {
+ "debug": "^3.1.0",
+ "eventemitter2": "^5.0.1",
+ "proxy-agent": "^3.0.3",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "ws": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "@pm2/io": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.5.tgz",
+ "integrity": "sha512-CY/a6Nw72vrlp/FPx38l4jfEHp4gNEbo8i+WlSJ2cnWO6VE6CKmnC1zb4yQLvdP8f3EuzzoOBZVq6aGN20M82Q==",
+ "requires": {
+ "@opencensus/core": "0.0.9",
+ "@opencensus/propagation-b3": "0.0.8",
+ "@pm2/agent-node": "^1.1.10",
+ "async": "~2.6.1",
+ "debug": "4.1.1",
+ "eventemitter2": "^6.3.1",
+ "require-in-the-middle": "^5.0.0",
+ "semver": "6.3.0",
+ "shimmer": "^1.2.0",
+ "signal-exit": "^3.0.3",
+ "tslib": "1.9.3"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eventemitter2": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz",
+ "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
+ }
+ }
+ },
+ "@pm2/js-api": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.0.tgz",
+ "integrity": "sha512-ZgM/0yI8s3FRyxP01wI5UzDrVTecS/SmD98z25C9fsHo2Wz3JB1DtS4uIBlPopq2/R5HIQynTUJPDNn4qo1d/Q==",
+ "requires": {
+ "async": "^2.6.3",
+ "axios": "^0.19.0",
+ "debug": "~3.2.6",
+ "eventemitter2": "^6.3.1",
+ "ws": "^7.0.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eventemitter2": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz",
+ "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@pm2/pm2-version-check": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.3.tgz",
+ "integrity": "sha512-SBuYsh+o35knItbRW97vl5/5nEc5c5DYP7PxjyPLOfmm9bMaDsVeATXjXMBy6+KLlyrYWHZxGbfXe003NnHClg==",
+ "requires": {
+ "debug": "^4.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@polka/url": {
+ "version": "1.0.0-next.11",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz",
+ "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA=="
+ },
+ "@rollup/plugin-babel": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.2.0.tgz",
+ "integrity": "sha512-CPABsajaKjINgBQ3it+yMnfVO3ibsrMBxRzbUOUw2cL1hsZJ7aogU8mgglQm3S2hHJgjnAmxPz0Rq7DVdmHsTw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ }
+ },
+ "@rollup/plugin-commonjs": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz",
+ "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==",
+ "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.4.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz",
+ "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.1.0",
+ "@types/resolve": "1.17.1",
+ "builtin-modules": "^3.1.0",
+ "deep-freeze": "^0.0.1",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.17.0"
+ }
+ },
+ "@rollup/plugin-replace": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz",
+ "integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^3.0.8",
+ "magic-string": "^0.25.5"
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
+ },
+ "@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "14.6.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.2.tgz",
+ "integrity": "sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A=="
+ },
+ "@types/pug": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.4.tgz",
+ "integrity": "sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI="
+ },
+ "@types/resolve": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
+ "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/sass": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz",
+ "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "agent-base": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+ "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ }
+ },
+ "ajv": {
+ "version": "6.12.4",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+ "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+ "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"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "amp": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz",
+ "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0="
+ },
+ "amp-message": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz",
+ "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=",
+ "requires": {
+ "amp": "0.3.1"
+ }
+ },
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "requires": {
+ "ansi-wrap": "^0.1.0"
+ }
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "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==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "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": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "append-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+ "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "requires": {
+ "buffer-equal": "^1.0.0"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ },
+ "dependencies": {
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ }
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "arr-filter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
+ "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
+ "requires": {
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "arr-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
+ "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
+ "requires": {
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8="
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
+ },
+ "array-initial": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
+ "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
+ "requires": {
+ "array-slice": "^1.0.0",
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
+ }
+ }
+ },
+ "array-last": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
+ "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
+ "requires": {
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
+ }
+ }
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w=="
+ },
+ "array-sort": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
+ "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
+ "requires": {
+ "default-compare": "^1.0.0",
+ "get-value": "^2.0.6",
+ "kind-of": "^5.0.2"
+ },
+ "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=="
+ }
+ }
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "ast-types": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.1.tgz",
+ "integrity": "sha512-pfSiukbt23P1qMhNnsozLzhMLBs7EEeXqPyvPmnuZM+RMfwfqwDbSVKYflgGuVI7/VehR4oMks0igzdNAg4VeQ==",
+ "requires": {
+ "tslib": "^2.0.1"
+ }
+ },
+ "async": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
+ },
+ "async-done": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
+ "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.2",
+ "process-nextick-args": "^2.0.0",
+ "stream-exhaust": "^1.0.1"
+ }
+ },
+ "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=="
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
+ },
+ "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=="
+ },
+ "async-listener": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
+ "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
+ "requires": {
+ "semver": "^5.3.0",
+ "shimmer": "^1.1.0"
+ }
+ },
+ "async-settle": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
+ "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
+ "requires": {
+ "async-done": "^1.2.2"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
+ "autoprefixer": {
+ "version": "9.8.6",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
+ "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
+ "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",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",
+ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA=="
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
+ "requires": {
+ "follow-redirects": "1.5.10"
+ }
+ },
+ "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"
+ }
+ },
+ "bach": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
+ "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
+ "requires": {
+ "arr-filter": "^1.1.1",
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "array-each": "^1.0.0",
+ "array-initial": "^1.0.0",
+ "array-last": "^1.1.1",
+ "async-done": "^1.2.2",
+ "async-settle": "^1.0.0",
+ "now-and-later": "^2.0.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "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==",
+ "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==",
+ "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==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "blessed": {
+ "version": "0.1.81",
+ "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz",
+ "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk="
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "requires": {
+ "inherits": "~2.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==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "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",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "browserslist": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz",
+ "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001111",
+ "electron-to-chromium": "^1.3.523",
+ "escalade": "^3.0.2",
+ "node-releases": "^1.1.60"
+ }
+ },
+ "buffer-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
+ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74="
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "builtin-modules": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
+ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "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"
+ }
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ }
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001120",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001120.tgz",
+ "integrity": "sha512-JBP68okZs1X8D7MQTY602jxMYBmXEKOFkzTBaNSkubooMPFOAv2TXWaKle7qgHpjLDhUzA/TMT0qsNleVyXGUQ=="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "charm": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz",
+ "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY="
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "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"
+ },
+ "dependencies": {
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.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==",
+ "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",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
+ "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
+ "requires": {
+ "source-map": "~0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "cli-tableau": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz",
+ "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==",
+ "requires": {
+ "chalk": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "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==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
+ },
+ "cloneable-readable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
+ "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "process-nextick-args": "^2.0.0",
+ "readable-stream": "^2.3.5"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "collection-map": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
+ "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
+ "requires": {
+ "arr-map": "^2.0.2",
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.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==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
+ },
+ "colorette": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
+ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "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
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "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=="
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "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==",
+ "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"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "continuation-local-storage": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
+ "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
+ "requires": {
+ "async-listener": "^0.6.0",
+ "emitter-listener": "^1.1.1"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "copy-props": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
+ "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
+ "requires": {
+ "each-props": "^1.3.0",
+ "is-plain-object": "^2.0.1"
+ }
+ },
+ "core-js-compat": {
+ "version": "3.6.5",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz",
+ "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.5",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true
+ }
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cron": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz",
+ "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==",
+ "requires": {
+ "moment-timezone": "^0.5.x"
+ }
+ },
+ "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"
+ }
+ },
+ "csscomb": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/csscomb/-/csscomb-3.1.8.tgz",
+ "integrity": "sha1-qKc4iE9Am6817JRhr8UuHHW9I6I=",
+ "requires": {
+ "commander": "2.0.0",
+ "csscomb-core": "3.0.0-3.1",
+ "gonzales-pe": "3.0.0-28",
+ "vow": "0.4.4"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
+ "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg="
+ }
+ }
+ },
+ "csscomb-core": {
+ "version": "3.0.0-3.1",
+ "resolved": "https://registry.npmjs.org/csscomb-core/-/csscomb-core-3.0.0-3.1.tgz",
+ "integrity": "sha1-tBHI18/g3z8v4d+E0b1kpvAEbGg=",
+ "requires": {
+ "gonzales-pe": "3.0.0-28",
+ "minimatch": "0.2.12",
+ "vow": "0.4.4",
+ "vow-fs": "0.3.2"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
+ },
+ "minimatch": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.12.tgz",
+ "integrity": "sha1-6oKgEqxmLH3fqhRPHBR+aUb12vs=",
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ }
+ }
+ }
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "requires": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "data-uri-to-buffer": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz",
+ "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ=="
+ },
+ "dayjs": {
+ "version": "1.8.34",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.34.tgz",
+ "integrity": "sha512-Olb+E6EoMvdPmAMq2QoucuyZycKHjTlBXmRx8Ada+wGtq4SIXuDCdtoaX4KkK0yjf1fJLnwXQURr8gQKWKaybw=="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ },
+ "deep-freeze": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz",
+ "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+ },
+ "deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true
+ },
+ "default-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
+ "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
+ "requires": {
+ "kind-of": "^5.0.2"
+ },
+ "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=="
+ }
+ }
+ },
+ "default-resolution": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
+ "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ="
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "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==",
+ "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==",
+ "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==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "degenerator": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz",
+ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=",
+ "requires": {
+ "ast-types": "0.x.x",
+ "escodegen": "1.x.x",
+ "esprima": "3.x.x"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc="
+ },
+ "detect-indent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
+ "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA=="
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "each-props": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
+ "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
+ "requires": {
+ "is-plain-object": "^2.0.1",
+ "object.defaults": "^1.1.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.555",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.555.tgz",
+ "integrity": "sha512-/55x3nF2feXFZ5tdGUOr00TxnUjUgdxhrn+eCJ1FAcoAt+cKQTjQkUC5XF4frMWE1R5sjHk+JueuBalimfe5Pg=="
+ },
+ "emitter-listener": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
+ "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
+ "requires": {
+ "shimmer": "^1.2.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "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==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz",
+ "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==",
+ "requires": {
+ "ansi-colors": "^3.2.1"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="
+ }
+ }
+ },
+ "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==",
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
+ "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.0",
+ "is-regex": "^1.1.0",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "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"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.53",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
+ "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+ "requires": {
+ "es6-iterator": "~2.0.3",
+ "es6-symbol": "~3.1.3",
+ "next-tick": "~1.0.0"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "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=="
+ },
+ "es6-promisify": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+ "requires": {
+ "es6-promise": "^4.0.3"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "requires": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "escalade": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
+ "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ=="
+ },
+ "escape-regexp": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz",
+ "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "escodegen": {
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "optional": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+ },
+ "estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+ },
+ "eventemitter2": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
+ "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI="
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "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": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "ext": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
+ "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
+ "requires": {
+ "type": "^2.0.0"
+ },
+ "dependencies": {
+ "type": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
+ "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA=="
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "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==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.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==",
+ "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==",
+ "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==",
+ "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": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ }
+ },
+ "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=="
+ },
+ "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=="
+ },
+ "fast-levenshtein": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
+ "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk="
+ },
+ "fclone": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz",
+ "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA="
+ },
+ "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=="
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "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",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+ "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ }
+ },
+ "flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q=="
+ },
+ "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==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "requires": {
+ "debug": "=3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "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==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "through2": "^2.0.3"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "optional": true
+ },
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ }
+ }
+ },
+ "ftp": {
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
+ "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=",
+ "requires": {
+ "readable-stream": "1.1.x",
+ "xregexp": "2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
+ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+ },
+ "get-uri": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz",
+ "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==",
+ "requires": {
+ "data-uri-to-buffer": "1",
+ "debug": "2",
+ "extend": "~3.0.2",
+ "file-uri-to-path": "1",
+ "ftp": "~0.3.10",
+ "readable-stream": "2"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "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": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "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": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "requires": {
+ "extend": "^3.0.0",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
+ "unique-stream": "^2.0.2"
+ }
+ },
+ "glob-watcher": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
+ "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-done": "^1.2.0",
+ "chokidar": "^2.0.0",
+ "is-negated-glob": "^1.0.0",
+ "just-debounce": "^1.0.0",
+ "normalize-path": "^3.0.0",
+ "object.defaults": "^1.1.0"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ }
+ },
+ "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
+ },
+ "globule": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+ "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ }
+ },
+ "glogg": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
+ "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
+ "requires": {
+ "sparkles": "^1.0.0"
+ }
+ },
+ "gonzales-pe": {
+ "version": "3.0.0-28",
+ "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.0.0-28.tgz",
+ "integrity": "sha1-3VC0HdFbaCooxA5fD/IAeQGsYr0="
+ },
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
+ },
+ "gulp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
+ "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
+ "requires": {
+ "glob-watcher": "^5.0.3",
+ "gulp-cli": "^2.2.0",
+ "undertaker": "^1.2.1",
+ "vinyl-fs": "^3.0.0"
+ },
+ "dependencies": {
+ "gulp-cli": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
+ "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
+ "requires": {
+ "ansi-colors": "^1.0.1",
+ "archy": "^1.0.0",
+ "array-sort": "^1.0.0",
+ "color-support": "^1.1.3",
+ "concat-stream": "^1.6.0",
+ "copy-props": "^2.0.1",
+ "fancy-log": "^1.3.2",
+ "gulplog": "^1.0.0",
+ "interpret": "^1.4.0",
+ "isobject": "^3.0.1",
+ "liftoff": "^3.1.0",
+ "matchdep": "^2.0.0",
+ "mute-stdout": "^1.0.0",
+ "pretty-hrtime": "^1.0.0",
+ "replace-homedir": "^1.0.0",
+ "semver-greatest-satisfied-range": "^1.1.0",
+ "v8flags": "^3.2.0",
+ "yargs": "^7.1.0"
+ }
+ }
+ }
+ },
+ "gulp-autoprefixer": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-7.0.1.tgz",
+ "integrity": "sha512-QJGEmHw+bEt7FSqvmbAUTxbCuNLJYx4sz3ox9WouYqT/7j5FH5CQ8ZnpL1M7H5npX1bUJa7lUVY1w20jXxhOxg==",
+ "requires": {
+ "autoprefixer": "^9.6.1",
+ "fancy-log": "^1.3.2",
+ "plugin-error": "^1.0.1",
+ "postcss": "^7.0.17",
+ "through2": "^3.0.1",
+ "vinyl-sourcemaps-apply": "^0.2.1"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
+ }
+ }
+ }
+ },
+ "gulp-clean-css": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz",
+ "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==",
+ "requires": {
+ "clean-css": "4.2.3",
+ "plugin-error": "1.0.1",
+ "through2": "3.0.1",
+ "vinyl-sourcemaps-apply": "0.2.1"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
+ "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+ "requires": {
+ "readable-stream": "2 || 3"
+ }
+ }
+ }
+ },
+ "gulp-csscomb": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-csscomb/-/gulp-csscomb-3.1.0.tgz",
+ "integrity": "sha512-DNg9GcnN1hHYCVP5nO+pKNL9BPW9ucD6DmyS36etPpLc4mMNPd+xjM8bf9o+wZdNZJok9a/Wxv3/PAQwlFAl4A==",
+ "requires": {
+ "ansi-colors": "^1.0.1",
+ "csscomb": "^3.1.7",
+ "fancy-log": "^1.3.2",
+ "plugin-error": "^0.1.2",
+ "through2": "^2.0.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "requires": {
+ "arr-flatten": "^1.0.1",
+ "array-slice": "^0.2.3"
+ }
+ },
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "requires": {
+ "kind-of": "^1.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
+ },
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "requires": {
+ "ansi-cyan": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "arr-diff": "^1.0.1",
+ "arr-union": "^2.0.1",
+ "extend-shallow": "^1.1.2"
+ }
+ }
+ }
+ },
+ "gulp-rename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz",
+ "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ=="
+ },
+ "gulp-sass": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.1.0.tgz",
+ "integrity": "sha512-xIiwp9nkBLcJDpmYHbEHdoWZv+j+WtYaKD6Zil/67F3nrAaZtWYN5mDwerdo7EvcdBenSAj7Xb2hx2DqURLGdA==",
+ "requires": {
+ "chalk": "^2.3.0",
+ "lodash": "^4.17.11",
+ "node-sass": "^4.8.3",
+ "plugin-error": "^1.0.1",
+ "replace-ext": "^1.0.0",
+ "strip-ansi": "^4.0.0",
+ "through2": "^2.0.0",
+ "vinyl-sourcemaps-apply": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "requires": {
+ "glogg": "^1.0.0"
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "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-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "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": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="
+ },
+ "html-minifier": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
+ "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "dev": true,
+ "requires": {
+ "camel-case": "^3.0.0",
+ "clean-css": "^4.2.1",
+ "commander": "^2.19.0",
+ "he": "^1.2.0",
+ "param-case": "^2.1.1",
+ "relateurl": "^0.2.7",
+ "uglify-js": "^3.5.1"
+ }
+ },
+ "http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ }
+ },
+ "http-link-header": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.2.tgz",
+ "integrity": "sha512-z6YOZ8ZEnejkcCWlGZzYXNa6i+ZaTfiTg3WhlV/YvnNya3W/RbX1bMVUMTuCrg/DrtTCQxaFCkXCz4FtLpcebg==",
+ "dev": true
+ },
+ "http-proxy-agent": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
+ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
+ "requires": {
+ "agent-base": "4",
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz",
+ "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==",
+ "requires": {
+ "agent-base": "^4.3.0",
+ "debug": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "in-publish": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "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=="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "requires": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "^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=="
+ },
+ "is-callable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
+ "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "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=="
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "dev": true
+ },
+ "is-negated-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI="
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "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==",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "*"
+ }
+ },
+ "is-regex": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
+ "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "requires": {
+ "is-unc-path": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "requires": {
+ "unc-path-regex": "^0.1.2"
+ }
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ },
+ "is-valid-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao="
+ },
+ "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=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jest-worker": {
+ "version": "26.3.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
+ "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+ },
+ "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
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "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.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "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=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "json5": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "just-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
+ "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo="
+ },
+ "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=="
+ },
+ "last-run": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
+ "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
+ "requires": {
+ "default-resolution": "^2.0.0",
+ "es6-weak-map": "^2.0.1"
+ }
+ },
+ "lazy": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz",
+ "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA="
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "requires": {
+ "readable-stream": "^2.0.5"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "lead": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+ "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "requires": {
+ "flush-write-stream": "^1.0.2"
+ }
+ },
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true
+ },
+ "levenary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+ "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
+ "dev": true,
+ "requires": {
+ "leven": "^3.1.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "liftoff": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
+ "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+ "requires": {
+ "extend": "^3.0.0",
+ "findup-sync": "^3.0.0",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^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==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+ },
+ "log-driver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
+ "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg=="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+ "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+ "dev": true,
+ "requires": {
+ "sourcemap-codec": "^1.4.4"
+ }
+ },
+ "make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "matchdep": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
+ "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
+ "requires": {
+ "findup-sync": "^2.0.0",
+ "micromatch": "^3.0.4",
+ "resolve": "^1.4.0",
+ "stack-trace": "0.0.10"
+ },
+ "dependencies": {
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "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"
+ }
+ },
+ "mime": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+ "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
+ },
+ "mime-db": {
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
+ },
+ "mime-types": {
+ "version": "2.1.27",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+ "requires": {
+ "mime-db": "1.44.0"
+ }
+ },
+ "min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "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==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+ },
+ "module-details-from-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz",
+ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is="
+ },
+ "moment": {
+ "version": "2.27.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
+ "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
+ },
+ "moment-timezone": {
+ "version": "0.5.31",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz",
+ "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==",
+ "requires": {
+ "moment": ">= 2.9.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "mute-stdout": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
+ "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg=="
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
+ },
+ "nan": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "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"
+ }
+ },
+ "needle": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz",
+ "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==",
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+ },
+ "netmask": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz",
+ "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU="
+ },
+ "next-tick": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
+ },
+ "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-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ }
+ }
+ },
+ "node-releases": {
+ "version": "1.1.60",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
+ "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA=="
+ },
+ "node-sass": {
+ "version": "4.14.1",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+ "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "2.2.5",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "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"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "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==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ }
+ }
+ },
+ "node-uuid": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz",
+ "integrity": "sha1-B/myM3Vy/2J1x3Xh1IUT86RdemU="
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "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==",
+ "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=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
+ },
+ "now-and-later": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+ "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "requires": {
+ "once": "^1.3.2"
+ }
+ },
+ "npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "nssocket": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz",
+ "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=",
+ "requires": {
+ "eventemitter2": "~0.4.14",
+ "lazy": "~1.0.11"
+ },
+ "dependencies": {
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas="
+ }
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
+ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "requires": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.reduce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
+ "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "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=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "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"
+ },
+ "dependencies": {
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ }
+ }
+ },
+ "ordered-read-streams": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.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==",
+ "requires": {
+ "p-limit": "^2.0.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=="
+ },
+ "pac-proxy-agent": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz",
+ "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==",
+ "requires": {
+ "agent-base": "^4.2.0",
+ "debug": "^4.1.1",
+ "get-uri": "^2.0.0",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^3.0.0",
+ "pac-resolver": "^3.0.0",
+ "raw-body": "^2.2.0",
+ "socks-proxy-agent": "^4.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "pac-resolver": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz",
+ "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==",
+ "requires": {
+ "co": "^4.6.0",
+ "degenerator": "^1.0.4",
+ "ip": "^1.1.5",
+ "netmask": "^1.0.6",
+ "thunkify": "^2.1.2"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
+ },
+ "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"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "picomatch": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
+ },
+ "pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true
+ },
+ "pidusage": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz",
+ "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==",
+ "requires": {
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "plugin-error": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
+ "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+ "requires": {
+ "ansi-colors": "^1.0.1",
+ "arr-diff": "^4.0.0",
+ "arr-union": "^3.1.0",
+ "extend-shallow": "^3.0.2"
+ }
+ },
+ "pm2": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.4.1.tgz",
+ "integrity": "sha512-ece2zqVvSg29tIGdznKqk07IwVaO4mX7zLBMVxbJQMfvxpQUotLLERDW0v/RYMHtzj1bX8MLsDUsmPiIbEszKg==",
+ "requires": {
+ "@pm2/agent": "~1.0.2",
+ "@pm2/io": "~4.3.5",
+ "@pm2/js-api": "~0.6.0",
+ "@pm2/pm2-version-check": "^1.0.3",
+ "async": "~3.2.0",
+ "blessed": "0.1.81",
+ "chalk": "3.0.0",
+ "chokidar": "^3.3.0",
+ "cli-tableau": "^2.0.0",
+ "commander": "2.15.1",
+ "cron": "1.8.2",
+ "dayjs": "~1.8.25",
+ "debug": "4.1.1",
+ "enquirer": "2.3.5",
+ "eventemitter2": "5.0.1",
+ "fclone": "1.0.11",
+ "mkdirp": "1.0.4",
+ "needle": "2.4.0",
+ "pidusage": "2.0.18",
+ "pm2-axon": "3.3.0",
+ "pm2-axon-rpc": "0.5.1",
+ "pm2-deploy": "~1.0.2",
+ "pm2-multimeter": "^0.1.2",
+ "promptly": "^2",
+ "ps-list": "6.3.0",
+ "semver": "^7.2",
+ "source-map-support": "0.5.16",
+ "sprintf-js": "1.1.2",
+ "systeminformation": "^4.23.3",
+ "vizion": "0.2.13",
+ "yamljs": "0.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "binary-extensions": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ=="
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
+ "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.4.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==",
+ "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=="
+ },
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "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==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "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==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "readdirp": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ=="
+ },
+ "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-support": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+ "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "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==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "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==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "pm2-axon": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-3.3.0.tgz",
+ "integrity": "sha512-dAFlFYRuFbFjX7oAk41zT+dx86EuaFX/TgOp5QpUKRKwxb946IM6ydnoH5sSTkdI2pHSVZ+3Am8n/l0ocr7jdQ==",
+ "requires": {
+ "amp": "~0.3.1",
+ "amp-message": "~0.1.1",
+ "debug": "^3.0",
+ "escape-regexp": "0.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "pm2-axon-rpc": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.5.1.tgz",
+ "integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==",
+ "requires": {
+ "debug": "^3.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "pm2-deploy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz",
+ "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==",
+ "requires": {
+ "run-series": "^1.1.8",
+ "tv4": "^1.3.0"
+ }
+ },
+ "pm2-multimeter": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz",
+ "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=",
+ "requires": {
+ "charm": "~0.1.1"
+ }
+ },
+ "polka": {
+ "version": "1.0.0-next.11",
+ "resolved": "https://registry.npmjs.org/polka/-/polka-1.0.0-next.11.tgz",
+ "integrity": "sha512-M/HBkS6ILksrDq7uvktCTev81OzuLwNtpxMyYdUhxLKQlMWdsu789XMotQU+p8JY8CM8vx8ML0HudyWjRus/lg==",
+ "requires": {
+ "@polka/url": "^1.0.0-next.11",
+ "trouter": "^3.1.0"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "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==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
+ },
+ "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=="
+ },
+ "promptly": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz",
+ "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=",
+ "requires": {
+ "read": "^1.0.4"
+ }
+ },
+ "proxy-agent": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz",
+ "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==",
+ "requires": {
+ "agent-base": "^4.2.0",
+ "debug": "4",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^3.0.0",
+ "lru-cache": "^5.1.1",
+ "pac-proxy-agent": "^3.0.1",
+ "proxy-from-env": "^1.0.0",
+ "socks-proxy-agent": "^4.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "ps-list": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz",
+ "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA=="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "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==",
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "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"
+ }
+ },
+ "randomcolor": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/randomcolor/-/randomcolor-0.6.2.tgz",
+ "integrity": "sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A=="
+ },
+ "raw-body": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz",
+ "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
+ "requires": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.3",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ }
+ }
+ },
+ "read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "requires": {
+ "mute-stream": "~0.0.4"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "requires": {
+ "is-utf8": "^0.2.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==",
+ "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": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "dependencies": {
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
+ "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
+ "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.7",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+ "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+ "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==",
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexparam": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz",
+ "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g=="
+ },
+ "regexpu-core": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
+ "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==",
+ "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",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
+ "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
+ "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": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
+ "remove-bom-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+ "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+ "requires": {
+ "is-buffer": "^1.1.5",
+ "is-utf8": "^0.2.1"
+ }
+ },
+ "remove-bom-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+ "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
+ "requires": {
+ "remove-bom-buffer": "^3.0.0",
+ "safe-buffer": "^5.1.0",
+ "through2": "^2.0.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+ "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw=="
+ },
+ "replace-homedir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
+ "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
+ "requires": {
+ "homedir-polyfill": "^1.0.1",
+ "is-absolute": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0"
+ }
+ },
+ "request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "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": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-in-the-middle": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz",
+ "integrity": "sha512-p/ICV8uMlqC4tjOYabLMxAWCIKa0YUQgZZ6KDM0xgXJNgdGQ1WmL2A07TwmrZw+wi6ITUFKzH5v3n+ENEyXVkA==",
+ "requires": {
+ "debug": "^4.1.1",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.12.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ },
+ "require-relative": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+ "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
+ "resolve-options": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
+ "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
+ "requires": {
+ "value-or-function": "^3.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "rollup": {
+ "version": "2.26.8",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.8.tgz",
+ "integrity": "sha512-li9WaJYc5z9WzV1jhZbPQCrsOpGNsI+Li1qyrn5n745ZNSnlkRlBtj1Hs+Z0Dc2N1+P7HT34UKAEASqN9Th8cg==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.1.2"
+ }
+ },
+ "rollup-plugin-svelte": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-6.0.0.tgz",
+ "integrity": "sha512-y9qtWa+iNYwXdOZqaEqz3i6k3gzofC9JXzv+WVKDOt0DLiJxJaSrlKKf4YkKG91RzTK5Lo+0fW8in9QH/DxEhA==",
+ "dev": true,
+ "requires": {
+ "require-relative": "^0.8.7",
+ "rollup-pluginutils": "^2.8.2",
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "rollup-plugin-terser": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.1.tgz",
+ "integrity": "sha512-HL0dgzSxBYG/Ly9i/E5Sc+PuKKZ0zBzk11VmLCfdUtpqH4yYqkLclPkTqRy85FU9246yetImOClaQ/ufnj08vg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^0.6.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+ "dev": true
+ }
+ }
+ },
+ "run-series": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz",
+ "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg=="
+ },
+ "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=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sapper": {
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.28.2.tgz",
+ "integrity": "sha512-0k967n9EnGxj9t1ezuvEUFiqUI7Mr92grAJXlhRNmEfV7qvJhiTqNmN/N7GvUtz3qk4RF9u2hfQCa48ozx85GA==",
+ "dev": true,
+ "requires": {
+ "html-minifier": "^4.0.0",
+ "http-link-header": "^1.0.2",
+ "shimport": "^1.0.1",
+ "source-map": "^0.6.1",
+ "sourcemap-codec": "^1.4.6",
+ "string-hash": "^1.1.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "sass-graph": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+ "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.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==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "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=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "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=="
+ },
+ "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==",
+ "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==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "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==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "semver-greatest-satisfied-range": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
+ "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
+ "requires": {
+ "sver-compat": "^1.5.0"
+ }
+ },
+ "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"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "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==",
+ "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",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
+ "dev": true
+ },
+ "shimmer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
+ "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
+ },
+ "shimport": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/shimport/-/shimport-1.0.1.tgz",
+ "integrity": "sha512-Imf4gH+8WQmT1GvxS/x79qpmfnE6m50hyN1ucatX+7oMCgmaF8obZWCPIzSUe6+P+YmXM46lkP2pxiV2/lt9Og==",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
+ },
+ "signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+ },
+ "sirv": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.6.tgz",
+ "integrity": "sha512-LRGu7Op4Xl9hhigOy2kcB53zAYTjNDdpooey49dIU0cMdpOv9ithVf7nstk3jvs8EhMiT/VORoyazZYGgw4vnA==",
+ "requires": {
+ "@polka/url": "^1.0.0-next.9",
+ "mime": "^2.3.1",
+ "totalist": "^1.0.0"
+ }
+ },
+ "smart-buffer": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
+ "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw=="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "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": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "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==",
+ "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "socks": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
+ "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
+ "requires": {
+ "ip": "1.1.5",
+ "smart-buffer": "^4.1.0"
+ }
+ },
+ "socks-proxy-agent": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
+ "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
+ "requires": {
+ "agent-base": "~4.2.1",
+ "socks": "~2.3.2"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "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==",
+ "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.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+ },
+ "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
+ },
+ "sparkles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
+ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw=="
+ },
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "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=="
+ },
+ "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==",
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
+ },
+ "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==",
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "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"
+ }
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "stream-exhaust": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw=="
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
+ },
+ "string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string.prototype.padend": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz",
+ "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+ "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+ "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "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==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "requires": {
+ "min-indent": "^1.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "svelte": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.24.1.tgz",
+ "integrity": "sha512-OX/IBVUJSFo1rnznXdwf9rv6LReJ3qQ0PwRjj76vfUWyTfbHbR9OXqJBnUrpjyis2dwYcbT2Zm1DFjOOF1ZbbQ==",
+ "dev": true
+ },
+ "svelte-preprocess": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.1.2.tgz",
+ "integrity": "sha512-l665fccStg1W2BlD0MUfFLmbTCd2tIsSvj18IzfyAoJ46sZqqeT8DPuqpNyIJ//zvRZl2g7aHNzqYAH8FOCEqg==",
+ "requires": {
+ "@types/pug": "^2.0.4",
+ "@types/sass": "^1.16.0",
+ "detect-indent": "^6.0.0",
+ "strip-indent": "^3.0.0"
+ }
+ },
+ "sver-compat": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
+ "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
+ "requires": {
+ "es6-iterator": "^2.0.1",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "systeminformation": {
+ "version": "4.27.3",
+ "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.27.3.tgz",
+ "integrity": "sha512-0Nc8AYEK818h7FI+bbe/kj7xXsMD5zOHvO9alUqQH/G4MHXu5tHQfWqC/bzWOk4JtoQPhnyLgxMYncDA2eeSBw==",
+ "optional": true
+ },
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
+ "terser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.2.1.tgz",
+ "integrity": "sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ==",
+ "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",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "through2-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+ "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+ "requires": {
+ "through2": "~2.0.0",
+ "xtend": "~4.0.0"
+ }
+ },
+ "thunkify": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz",
+ "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0="
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+ },
+ "to-absolute-glob": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+ "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "is-negated-glob": "^1.0.0"
+ }
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "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": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "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",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "to-through": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
+ "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
+ "requires": {
+ "through2": "^2.0.3"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
+ "totalist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g=="
+ },
+ "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==",
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
+ },
+ "trouter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/trouter/-/trouter-3.1.0.tgz",
+ "integrity": "sha512-3Swwu638QQWOefHLss9cdyLi5/9BKYmXZEXpH0KOFfB9YZwUAwHbDAcoYxaHfqAeFvbi/LqAK7rGkhCr1v1BJA==",
+ "requires": {
+ "regexparam": "^1.3.0"
+ }
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
+ "tslib": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
+ "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ=="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tv4": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz",
+ "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM="
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "uglify-js": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.2.tgz",
+ "integrity": "sha512-GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow==",
+ "dev": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
+ },
+ "undertaker": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
+ "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+ "requires": {
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "bach": "^1.0.0",
+ "collection-map": "^1.0.0",
+ "es6-weak-map": "^2.0.1",
+ "fast-levenshtein": "^1.0.0",
+ "last-run": "^1.1.0",
+ "object.defaults": "^1.0.0",
+ "object.reduce": "^1.0.0",
+ "undertaker-registry": "^1.0.0"
+ }
+ },
+ "undertaker-registry": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
+ "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA="
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "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",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
+ "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
+ "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==",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unique-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+ "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+ "requires": {
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "through2-filter": "^3.0.0"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "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": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "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": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "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": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.3.0.tgz",
+ "integrity": "sha512-Q9Q9RlMM08eWfdPPmDDrXd8Ny3R1sY/DaRDR2zTPPneJ6GYiLx3++fPiZobv49ovkYAnHl/P72Ie3HWXIRVVYA==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+ },
+ "v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "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==",
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "value-or-function": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
+ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vinyl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
+ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
+ "requires": {
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
+ }
+ },
+ "vinyl-fs": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+ "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
+ "requires": {
+ "fs-mkdirp-stream": "^1.0.0",
+ "glob-stream": "^6.1.0",
+ "graceful-fs": "^4.0.0",
+ "is-valid-glob": "^1.0.0",
+ "lazystream": "^1.0.0",
+ "lead": "^1.0.0",
+ "object.assign": "^4.0.4",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.3.3",
+ "remove-bom-buffer": "^3.0.0",
+ "remove-bom-stream": "^1.2.0",
+ "resolve-options": "^1.1.0",
+ "through2": "^2.0.0",
+ "to-through": "^2.0.0",
+ "value-or-function": "^3.0.0",
+ "vinyl": "^2.0.0",
+ "vinyl-sourcemap": "^1.1.0"
+ }
+ },
+ "vinyl-sourcemap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+ "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
+ "requires": {
+ "append-buffer": "^1.0.2",
+ "convert-source-map": "^1.5.0",
+ "graceful-fs": "^4.1.6",
+ "normalize-path": "^2.1.1",
+ "now-and-later": "^2.0.0",
+ "remove-bom-buffer": "^3.0.0",
+ "vinyl": "^2.0.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-sourcemaps-apply": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
+ "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
+ "requires": {
+ "source-map": "^0.5.1"
+ }
+ },
+ "vizion": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/vizion/-/vizion-0.2.13.tgz",
+ "integrity": "sha1-ExTN7is0EW+fWxJIU2+V2/zW718=",
+ "requires": {
+ "async": "1.5"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ }
+ }
+ },
+ "vow": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz",
+ "integrity": "sha1-yf5GCRKdf1qmIVCOvmS1HJW8e5g="
+ },
+ "vow-fs": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.2.tgz",
+ "integrity": "sha1-6isDTYXh24wnfrLpqG0cFfXTjno=",
+ "requires": {
+ "glob": "3.2.8",
+ "node-uuid": "1.4.0",
+ "vow": "0.4.4",
+ "vow-queue": "0.3.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.8.tgz",
+ "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=",
+ "requires": {
+ "inherits": "2",
+ "minimatch": "~0.2.11"
+ }
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ }
+ }
+ }
+ },
+ "vow-queue": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz",
+ "integrity": "sha1-WYxRoVsKgabV/AX0dhzrRi3h6Gg=",
+ "requires": {
+ "vow": "~0.4.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "ws": {
+ "version": "7.2.5",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz",
+ "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA=="
+ },
+ "xregexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
+ "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "yamljs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
+ "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "glob": "^7.0.5"
+ }
+ },
+ "yargs": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
+ "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
+ "requires": {
+ "camelcase": "^3.0.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.2",
+ "which-module": "^1.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "5.0.0-security.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "5.0.0-security.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
+ "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
+ "requires": {
+ "camelcase": "^3.0.0",
+ "object.assign": "^4.1.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ef351d9
--- /dev/null
+++ b/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "TODO",
+ "description": "TODO",
+ "version": "0.0.1",
+ "scripts": {
+ "dev": "sapper dev",
+ "build": "sapper build --legacy",
+ "export": "sapper export --legacy",
+ "start": "node __sapper__/build",
+ "cy:run": "cypress run",
+ "cy:open": "cypress open",
+ "test": "run-p --race dev cy:run"
+ },
+ "dependencies": {
+ "compression": "^1.7.1",
+ "gulp": "^4.0.2",
+ "gulp-autoprefixer": "^7.0.1",
+ "gulp-clean-css": "^4.3.0",
+ "gulp-csscomb": "^3.1.0",
+ "gulp-rename": "^2.0.0",
+ "gulp-sass": "^4.1.0",
+ "pm2": "^4.4.1",
+ "polka": "next",
+ "randomcolor": "^0.6.2",
+ "sirv": "^1.0.0",
+ "svelte-preprocess": "^4.1.2"
+ },
+ "devDependencies": {
+ "npm-run-all": "^4.1.5",
+ "sapper": "^0.28.0",
+ "svelte": "^3.17.3",
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/runtime": "^7.0.0",
+ "@rollup/plugin-babel": "^5.0.0",
+ "@rollup/plugin-commonjs": "^14.0.0",
+ "@rollup/plugin-node-resolve": "^8.0.0",
+ "@rollup/plugin-replace": "^2.2.0",
+ "rollup": "^2.3.4",
+ "rollup-plugin-svelte": "^6.0.0",
+ "rollup-plugin-terser": "^7.0.0"
+ }
+}
diff --git a/rollup.config.js b/rollup.config.js
new file mode 100644
index 0000000..9513dda
--- /dev/null
+++ b/rollup.config.js
@@ -0,0 +1,111 @@
+import resolve from '@rollup/plugin-node-resolve';
+import replace from '@rollup/plugin-replace';
+import commonjs from '@rollup/plugin-commonjs';
+import svelte from 'rollup-plugin-svelte';
+import babel from '@rollup/plugin-babel';
+import { terser } from 'rollup-plugin-terser';
+import config from 'sapper/config/rollup.js';
+import pkg from './package.json';
+import sveltePreprocess from 'svelte-preprocess';
+
+const preprocopts = {};
+
+
+const mode = process.env.NODE_ENV;
+const dev = mode === 'development';
+const legacy = !!process.env.SAPPER_LEGACY_BUILD;
+
+const onwarn = (warning, onwarn) =>
+ (warning.code === 'MISSING_EXPORT' && /'preload'/.test(warning.message)) ||
+ (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) ||
+ onwarn(warning);
+
+export default {
+ client: {
+ input: config.client.input(),
+ output: config.client.output(),
+ plugins: [
+ replace({
+ 'process.browser': true,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ svelte({
+ dev,
+ hydratable: true,
+ emitCss: true,
+ preprocess: sveltePreprocess(preprocopts)
+ }),
+ resolve({
+ browser: true,
+ dedupe: ['svelte']
+ }),
+ commonjs(),
+
+ legacy && babel({
+ extensions: ['.js', '.mjs', '.html', '.svelte'],
+ babelHelpers: 'runtime',
+ exclude: ['node_modules/@babel/**'],
+ presets: [
+ ['@babel/preset-env', {
+ targets: '> 0.25%, not dead'
+ }]
+ ],
+ plugins: [
+ '@babel/plugin-syntax-dynamic-import',
+ ['@babel/plugin-transform-runtime', {
+ useESModules: true
+ }]
+ ]
+ }),
+
+ !dev && terser({
+ module: true
+ })
+ ],
+
+ preserveEntrySignatures: false,
+ onwarn,
+ },
+
+ server: {
+ input: config.server.input(),
+ output: config.server.output(),
+ plugins: [
+ replace({
+ 'process.browser': false,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ svelte({
+ generate: 'ssr',
+ hydratable: true,
+ dev,
+ preprocess: sveltePreprocess(preprocopts)
+ }),
+ resolve({
+ dedupe: ['svelte']
+ }),
+ commonjs()
+ ],
+ external: Object.keys(pkg.dependencies).concat(require('module').builtinModules),
+
+ preserveEntrySignatures: 'strict',
+ onwarn,
+ },
+
+ serviceworker: {
+ input: config.serviceworker.input(),
+ output: config.serviceworker.output(),
+ plugins: [
+ resolve(),
+ replace({
+ 'process.browser': true,
+ 'process.env.NODE_ENV': JSON.stringify(mode)
+ }),
+ commonjs(),
+ !dev && terser()
+ ],
+
+ preserveEntrySignatures: false,
+ onwarn,
+ }
+};
diff --git a/sass/_accordions.scss b/sass/_accordions.scss
new file mode 100644
index 0000000..fd21585
--- /dev/null
+++ b/sass/_accordions.scss
@@ -0,0 +1,38 @@
+// Accordions
+.accordion {
+ input:checked ~,
+ &[open] {
+ & .accordion-header {
+ .icon {
+ transform: rotate(90deg);
+ }
+ }
+
+ & .accordion-body {
+ max-height: 50rem;
+ }
+ }
+
+ .accordion-header {
+ display: block;
+ padding: $unit-1 $unit-2;
+
+ .icon {
+ transition: transform .25s;
+ }
+ }
+
+ .accordion-body {
+ margin-bottom: $layout-spacing;
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height .25s;
+ }
+}
+
+// Remove default details marker in Webkit
+summary.accordion-header {
+ &::-webkit-details-marker {
+ display: none;
+ }
+}
diff --git a/sass/_animations.scss b/sass/_animations.scss
new file mode 100644
index 0000000..e7fde1a
--- /dev/null
+++ b/sass/_animations.scss
@@ -0,0 +1,20 @@
+// Animations
+@keyframes loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes slide-down {
+ 0% {
+ opacity: 0;
+ transform: translateY(-$unit-8);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
diff --git a/sass/_autocomplete.scss b/sass/_autocomplete.scss
new file mode 100644
index 0000000..279fa03
--- /dev/null
+++ b/sass/_autocomplete.scss
@@ -0,0 +1,47 @@
+// Autocomplete
+.form-autocomplete {
+ position: relative;
+
+ .form-autocomplete-input {
+ align-content: flex-start;
+ display: flex;
+ flex-wrap: wrap;
+ height: auto;
+ min-height: $unit-8;
+ padding: $unit-h;
+
+ &.is-focused {
+ @include control-shadow();
+ border-color: $primary-color;
+ }
+
+ .form-input {
+ border-color: transparent;
+ box-shadow: none;
+ display: inline-block;
+ flex: 1 0 auto;
+ height: $unit-6;
+ line-height: $unit-4;
+ margin: $unit-h;
+ width: auto;
+ }
+ }
+
+ .menu {
+ left: 0;
+ position: absolute;
+ top: 100%;
+ width: 100%;
+ }
+
+ &.autocomplete-oneline {
+ .form-autocomplete-input {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ }
+
+ .chip {
+ flex: 1 0 auto;
+ }
+ }
+}
diff --git a/sass/_avatars.scss b/sass/_avatars.scss
new file mode 100644
index 0000000..b203aa2
--- /dev/null
+++ b/sass/_avatars.scss
@@ -0,0 +1,77 @@
+// Avatars
+.avatar {
+ @include avatar-base();
+ background: $primary-color;
+ border-radius: 50%;
+ color: rgba($light-color, .85);
+ display: inline-block;
+ font-weight: 300;
+ line-height: 1.25;
+ margin: 0;
+ position: relative;
+ vertical-align: middle;
+
+ &.avatar-xs {
+ @include avatar-base($unit-4);
+ }
+ &.avatar-sm {
+ @include avatar-base($unit-6);
+ }
+ &.avatar-lg {
+ @include avatar-base($unit-12);
+ }
+ &.avatar-xl {
+ @include avatar-base($unit-16);
+ }
+
+ img {
+ border-radius: 50%;
+ height: 100%;
+ position: relative;
+ width: 100%;
+ z-index: $zindex-0;
+ }
+
+ .avatar-icon,
+ .avatar-presence {
+ background: $bg-color-light;
+ bottom: 14.64%;
+ height: 50%;
+ padding: $border-width-lg;
+ position: absolute;
+ right: 14.64%;
+ transform: translate(50%, 50%);
+ width: 50%;
+ z-index: $zindex-0 + 1;
+ }
+
+ .avatar-presence {
+ background: $gray-color;
+ box-shadow: 0 0 0 $border-width-lg $light-color;
+ border-radius: 50%;
+ height: .5em;
+ width: .5em;
+
+ &.online {
+ background: $success-color;
+ }
+
+ &.busy {
+ background: $error-color;
+ }
+
+ &.away {
+ background: $warning-color;
+ }
+ }
+
+ &[data-initial]::before {
+ color: currentColor;
+ content: attr(data-initial);
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ z-index: $zindex-0;
+ }
+}
\ No newline at end of file
diff --git a/sass/_badges.scss b/sass/_badges.scss
new file mode 100644
index 0000000..d67f6d1
--- /dev/null
+++ b/sass/_badges.scss
@@ -0,0 +1,60 @@
+// Badges
+.badge {
+ position: relative;
+ white-space: nowrap;
+
+ &[data-badge],
+ &:not([data-badge]) {
+ &::after {
+ background: $primary-color;
+ background-clip: padding-box;
+ border-radius: .5rem;
+ box-shadow: 0 0 0 .1rem $bg-color-light;
+ color: $light-color;
+ content: attr(data-badge);
+ display: inline-block;
+ transform: translate(-.05rem, -.5rem);
+ }
+ }
+ &[data-badge] {
+ &::after {
+ font-size: $font-size-sm;
+ height: .9rem;
+ line-height: 1;
+ min-width: .9rem;
+ padding: .1rem .2rem;
+ text-align: center;
+ white-space: nowrap;
+ }
+ }
+ &:not([data-badge]),
+ &[data-badge=""] {
+ &::after {
+ height: 6px;
+ min-width: 6px;
+ padding: 0;
+ width: 6px;
+ }
+ }
+
+ // Badges for Buttons
+ &.btn {
+ &::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(50%, -50%);
+ }
+ }
+
+ // Badges for Avatars
+ &.avatar {
+ &::after {
+ position: absolute;
+ top: 14.64%;
+ right: 14.64%;
+ transform: translate(50%, -50%);
+ z-index: $zindex-1;
+ }
+ }
+}
diff --git a/sass/_bars.scss b/sass/_bars.scss
new file mode 100644
index 0000000..47e21c9
--- /dev/null
+++ b/sass/_bars.scss
@@ -0,0 +1,71 @@
+// Bars
+.bar {
+ background: $bg-color-dark;
+ border-radius: $border-radius;
+ display: flex;
+ flex-wrap: nowrap;
+ height: $unit-4;
+ width: 100%;
+
+ &.bar-sm {
+ height: $unit-1;
+ }
+
+ // TODO: attr() support
+ .bar-item {
+ background: $primary-color;
+ color: $light-color;
+ display: block;
+ font-size: $font-size-sm;
+ flex-shrink: 0;
+ line-height: $unit-4;
+ height: 100%;
+ position: relative;
+ text-align: center;
+ width: 0;
+
+ &:first-child {
+ border-bottom-left-radius: $border-radius;
+ border-top-left-radius: $border-radius;
+ }
+ &:last-child {
+ border-bottom-right-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ flex-shrink: 1;
+ }
+ }
+}
+
+// Slider bar
+.bar-slider {
+ height: $border-width-lg;
+ margin: $layout-spacing 0;
+ position: relative;
+
+ .bar-item {
+ left: 0;
+ padding: 0;
+ position: absolute;
+ &:not(:last-child):first-child {
+ background: $bg-color-dark;
+ z-index: $zindex-0;
+ }
+ }
+
+ .bar-slider-btn {
+ background: $primary-color;
+ border: 0;
+ border-radius: 50%;
+ height: $unit-3;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translate(50%, -50%);
+ width: $unit-3;
+
+ &:active {
+ box-shadow: 0 0 0 .1rem $primary-color;
+ }
+ }
+}
diff --git a/sass/_base.scss b/sass/_base.scss
new file mode 100644
index 0000000..20aefe1
--- /dev/null
+++ b/sass/_base.scss
@@ -0,0 +1,40 @@
+// Base
+*,
+*::before,
+*::after {
+ box-sizing: inherit;
+}
+
+html {
+ box-sizing: border-box;
+ font-size: $html-font-size;
+ line-height: $html-line-height;
+ -webkit-tap-highlight-color: transparent;
+}
+
+body {
+ background: $body-bg;
+ color: $body-font-color;
+ font-family: $body-font-family;
+ font-size: $font-size;
+ overflow-x: hidden;
+ text-rendering: optimizeLegibility;
+}
+
+a {
+ color: $link-color;
+ outline: none;
+ text-decoration: underline;
+
+ &:focus {
+ @include control-shadow();
+ }
+
+ &:focus,
+ &:hover,
+ &:active,
+ &.active {
+ color: $link-color-dark;
+ text-decoration: underline;
+ }
+}
diff --git a/sass/_breadcrumbs.scss b/sass/_breadcrumbs.scss
new file mode 100644
index 0000000..6a5af31
--- /dev/null
+++ b/sass/_breadcrumbs.scss
@@ -0,0 +1,29 @@
+// Breadcrumbs
+.breadcrumb {
+ list-style: none;
+ margin: $unit-1 0;
+ padding: $unit-1 0;
+
+ .breadcrumb-item {
+ color: $gray-color-dark;
+ display: inline-block;
+ margin: 0;
+ padding: $unit-1 0;
+
+ &:not(:last-child) {
+ margin-right: $unit-1;
+
+ a {
+ color: $gray-color-dark;
+ }
+ }
+
+ &:not(:first-child) {
+ &::before {
+ color: $gray-color-dark;
+ content: "/";
+ padding-right: $unit-2;
+ }
+ }
+ }
+}
diff --git a/sass/_buttons.scss b/sass/_buttons.scss
new file mode 100644
index 0000000..f89e8a0
--- /dev/null
+++ b/sass/_buttons.scss
@@ -0,0 +1,198 @@
+// Buttons
+.btn {
+ appearance: none;
+ background: $bg-color-light;
+ border: $border-width solid $primary-color;
+ border-radius: $border-radius;
+ color: $primary-color;
+ cursor: pointer;
+ display: inline-block;
+ font-size: $font-size;
+ height: $control-size;
+ line-height: $line-height;
+ outline: none;
+ padding: $control-padding-y $control-padding-x;
+ text-align: center;
+ text-decoration: none;
+ transition: background .2s, border .2s, box-shadow .2s, color .2s;
+ user-select: none;
+ vertical-align: middle;
+ white-space: nowrap;
+ &:focus {
+ @include control-shadow();
+ }
+ &:focus,
+ &:hover {
+ background: $secondary-color;
+ border-color: $primary-color-dark;
+ color: $light-color;
+ text-decoration: none;
+ }
+ &:active,
+ &.active {
+ background: $primary-color-dark;
+ border-color: darken($primary-color-dark, 5%);
+ color: $light-color;
+ text-decoration: none;
+ &.loading {
+ &::after {
+ border-bottom-color: $light-color;
+ border-left-color: $light-color;
+ }
+ }
+ }
+ &[disabled],
+ &:disabled,
+ &.disabled {
+ cursor: default;
+ opacity: .5;
+ pointer-events: none;
+ }
+
+ // Button Primary
+ &.btn-primary {
+ background: $primary-color;
+ border-color: $primary-color-dark;
+ color: $light-color;
+ &:focus,
+ &:hover {
+ background: darken($primary-color-dark, 2%);
+ border-color: darken($primary-color-dark, 5%);
+ color: $light-color;
+ }
+ &:active,
+ &.active {
+ background: darken($primary-color-dark, 4%);
+ border-color: darken($primary-color-dark, 7%);
+ color: $light-color;
+ }
+ &.loading {
+ &::after {
+ border-bottom-color: $light-color;
+ border-left-color: $light-color;
+ }
+ }
+ }
+
+ // Button Colors
+ &.btn-success {
+ @include button-variant($success-color);
+ }
+
+ &.btn-warning {
+ @include button-variant($warning-color);
+ }
+
+ &.btn-error {
+ @include button-variant($error-color);
+ }
+
+ // Button Link
+ &.btn-link {
+ background: transparent;
+ border-color: transparent;
+ color: $link-color;
+ &:focus,
+ &:hover,
+ &:active,
+ &.active {
+ color: $link-color-dark;
+ }
+ }
+
+ // Button Sizes
+ &.btn-sm {
+ font-size: $font-size-sm;
+ height: $control-size-sm;
+ padding: $control-padding-y-sm $control-padding-x-sm;
+ }
+
+ &.btn-lg {
+ font-size: $font-size-lg;
+ height: $control-size-lg;
+ padding: $control-padding-y-lg $control-padding-x-lg;
+ }
+
+ // Button Block
+ &.btn-block {
+ display: block;
+ width: 100%;
+ }
+
+ // Button Action
+ &.btn-action {
+ width: $control-size;
+ padding-left: 0;
+ padding-right: 0;
+
+ &.btn-sm {
+ width: $control-size-sm;
+ }
+
+ &.btn-lg {
+ width: $control-size-lg;
+ }
+ }
+
+ // Button Clear
+ &.btn-clear {
+ background: transparent;
+ border: 0;
+ color: currentColor;
+ height: $unit-5;
+ line-height: $unit-4;
+ margin-left: $unit-1;
+ margin-right: -2px;
+ opacity: 1;
+ padding: $unit-h;
+ text-decoration: none;
+ width: $unit-5;
+
+ &:focus,
+ &:hover {
+ background: rgba($bg-color, .5);
+ opacity: .95;
+ }
+
+ &::before {
+ content: "\2715";
+ }
+ }
+}
+
+// Button groups
+.btn-group {
+ display: inline-flex;
+ flex-wrap: wrap;
+
+ .btn {
+ flex: 1 0 auto;
+ &:first-child:not(:last-child) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ }
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ margin-left: -$border-width;
+ }
+ &:last-child:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+ margin-left: -$border-width;
+ }
+ &:focus,
+ &:hover,
+ &:active,
+ &.active {
+ z-index: $zindex-0;
+ }
+ }
+
+ &.btn-group-block {
+ display: flex;
+
+ .btn {
+ flex: 1 0 0;
+ }
+ }
+}
diff --git a/sass/_calendars.scss b/sass/_calendars.scss
new file mode 100644
index 0000000..1e9fd15
--- /dev/null
+++ b/sass/_calendars.scss
@@ -0,0 +1,222 @@
+// Calendars
+.calendar {
+ border: $border-width solid $border-color;
+ border-radius: $border-radius;
+ display: block;
+ min-width: 280px;
+
+ .calendar-nav {
+ align-items: center;
+ background: $bg-color;
+ border-top-left-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ display: flex;
+ font-size: $font-size-lg;
+ padding: $layout-spacing;
+ }
+
+ .calendar-header,
+ .calendar-body {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ padding: $layout-spacing 0;
+
+ .calendar-date {
+ flex: 0 0 14.28%; // 7 calendar-items each row
+ max-width: 14.28%;
+ }
+ }
+
+ .calendar-header {
+ background: $bg-color;
+ border-bottom: $border-width solid $border-color;
+ color: $gray-color;
+ font-size: $font-size-sm;
+ text-align: center;
+ }
+
+ .calendar-body {
+ color: $gray-color-dark;
+ }
+
+ .calendar-date {
+ border: 0;
+ padding: $unit-1;
+
+ .date-item {
+ appearance: none;
+ background: transparent;
+ border: $border-width solid transparent;
+ border-radius: 50%;
+ color: $gray-color-dark;
+ cursor: pointer;
+ font-size: $font-size-sm;
+ height: $unit-7;
+ line-height: $unit-5;
+ outline: none;
+ padding: $unit-h;
+ position: relative;
+ text-align: center;
+ text-decoration: none;
+ transition: background .2s, border .2s, box-shadow .2s, color .2s;
+ vertical-align: middle;
+ white-space: nowrap;
+ width: $unit-7;
+
+ &.date-today {
+ border-color: $secondary-color-dark;
+ color: $primary-color;
+ }
+
+ &:focus {
+ @include control-shadow();
+ }
+
+ &:focus,
+ &:hover {
+ background: $secondary-color-light;
+ border-color: $secondary-color-dark;
+ color: $primary-color;
+ text-decoration: none;
+ }
+ &:active,
+ &.active {
+ background: $primary-color-dark;
+ border-color: darken($primary-color-dark, 5%);
+ color: $light-color;
+ }
+
+ // Calendar badge support
+ &.badge {
+ &::after {
+ position: absolute;
+ top: 3px;
+ right: 3px;
+ transform: translate(50%, -50%);
+ }
+ }
+ }
+
+ .date-item,
+ .calendar-event {
+ &:disabled,
+ &.disabled {
+ cursor: default;
+ opacity: .25;
+ pointer-events: none;
+ }
+ }
+
+ &.prev-month,
+ &.next-month {
+ .date-item,
+ .calendar-event {
+ opacity: .25;
+ }
+ }
+ }
+
+ .calendar-range {
+ position: relative;
+
+ &::before {
+ background: $secondary-color;
+ content: "";
+ height: $unit-7;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ }
+ &.range-start {
+ &::before {
+ left: 50%;
+ }
+ }
+ &.range-end {
+ &::before {
+ right: 50%;
+ }
+ }
+
+ &.range-start,
+ &.range-end {
+ .date-item {
+ background: $primary-color-dark;
+ border-color: darken($primary-color-dark, 5%);
+ color: $light-color;
+ }
+ }
+
+ .date-item {
+ color: $primary-color;
+ }
+ }
+
+ // Calendars size
+ &.calendar-lg {
+ .calendar-body {
+ padding: 0;
+
+ .calendar-date {
+ border-bottom: $border-width solid $border-color;
+ border-right: $border-width solid $border-color;
+ display: flex;
+ flex-direction: column;
+ height: 5.5rem;
+ padding: 0;
+
+ &:nth-child(7n) {
+ border-right: 0;
+ }
+ &:nth-last-child(-n+7) {
+ border-bottom: 0;
+ }
+ }
+ }
+
+ .date-item {
+ align-self: flex-end;
+ height: $unit-7;
+ margin-right: $layout-spacing-sm;
+ margin-top: $layout-spacing-sm;
+ }
+
+ .calendar-range {
+ &::before {
+ top: 19px;
+ }
+ &.range-start {
+ &::before {
+ left: auto;
+ width: 19px;
+ }
+ }
+ &.range-end {
+ &::before {
+ right: 19px;
+ }
+ }
+ }
+
+ .calendar-events {
+ flex-grow: 1;
+ line-height: 1;
+ overflow-y: auto;
+ padding: $layout-spacing-sm;
+ }
+
+ .calendar-event {
+ border-radius: $border-radius;
+ font-size: $font-size-sm;
+ display: block;
+ margin: $unit-h auto;
+ overflow: hidden;
+ padding: 3px 4px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+}
diff --git a/sass/_cards.scss b/sass/_cards.scss
new file mode 100644
index 0000000..6b712e1
--- /dev/null
+++ b/sass/_cards.scss
@@ -0,0 +1,43 @@
+// Cards
+.card {
+ background: $bg-color-light;
+ border: $border-width solid $border-color;
+ border-radius: $border-radius;
+ display: flex;
+ flex-direction: column;
+
+ .card-header,
+ .card-body,
+ .card-footer {
+ padding: $layout-spacing-lg;
+ padding-bottom: 0;
+
+ &:last-child {
+ padding-bottom: $layout-spacing-lg;
+ }
+ }
+
+ .card-body {
+ flex: 1 1 auto;
+ }
+
+ .card-image {
+ padding-top: $layout-spacing-lg;
+
+ &:first-child {
+ padding-top: 0;
+
+ img {
+ border-top-left-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ }
+ }
+
+ &:last-child {
+ img {
+ border-bottom-left-radius: $border-radius;
+ border-bottom-right-radius: $border-radius;
+ }
+ }
+ }
+}
diff --git a/sass/_carousels.scss b/sass/_carousels.scss
new file mode 100644
index 0000000..66dc51b
--- /dev/null
+++ b/sass/_carousels.scss
@@ -0,0 +1,136 @@
+// Carousels
+// The number of carousel images
+$carousel-number: 8;
+
+%carousel-image-checked {
+ animation: carousel-slidein .75s ease-in-out 1;
+ opacity: 1;
+ z-index: $zindex-1;
+}
+
+%carousel-nav-checked {
+ color: $gray-color-light;
+}
+
+.carousel {
+ background: $bg-color;
+ display: block;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+ -webkit-overflow-scrolling: touch;
+ z-index: $zindex-0;
+
+ .carousel-container {
+ height: 100%;
+ left: 0;
+ position: relative;
+ &::before {
+ content: "";
+ display: block;
+ padding-bottom: 56.25%;
+ }
+
+ .carousel-item {
+ animation: carousel-slideout 1s ease-in-out 1;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+
+ &:hover {
+ .item-prev,
+ .item-next {
+ opacity: 1;
+ }
+ }
+ }
+
+ .item-prev,
+ .item-next {
+ background: rgba($gray-color-light, .25);
+ border-color: rgba($gray-color-light, .5);
+ color: $gray-color-light;
+ opacity: 0;
+ position: absolute;
+ top: 50%;
+ transition: all .4s;
+ transform: translateY(-50%);
+ z-index: $zindex-1;
+ }
+ .item-prev {
+ left: 1rem;
+ }
+ .item-next {
+ right: 1rem;
+ }
+ }
+
+ .carousel-locator {
+ @for $i from 1 through ($carousel-number) {
+ &:nth-of-type(#{$i}):checked ~ .carousel-container .carousel-item:nth-of-type(#{$i}) {
+ @extend %carousel-image-checked;
+ }
+ }
+
+ @for $i from 1 through ($carousel-number) {
+ &:nth-of-type(#{$i}):checked ~ .carousel-nav .nav-item:nth-of-type(#{$i}) {
+ @extend %carousel-nav-checked;
+ }
+ }
+ }
+
+ .carousel-nav {
+ bottom: $layout-spacing;
+ display: flex;
+ justify-content: center;
+ left: 50%;
+ position: absolute;
+ transform: translateX(-50%);
+ width: 10rem;
+ z-index: $zindex-1;
+
+ .nav-item {
+ color: rgba($gray-color-light, .5);
+ display: block;
+ flex: 1 0 auto;
+ height: $unit-8;
+ margin: $unit-1;
+ max-width: 2.5rem;
+ position: relative;
+
+ &::before {
+ background: currentColor;
+ content: "";
+ display: block;
+ height: $unit-h;
+ position: absolute;
+ top: .5rem;
+ width: 100%;
+ }
+ }
+ }
+}
+
+@keyframes carousel-slidein {
+ 0% {
+ transform: translateX(100%);
+ }
+ 100% {
+ transform: translateX(0);
+ }
+}
+
+@keyframes carousel-slideout {
+ 0% {
+ opacity: 1;
+ transform: translateX(0);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateX(-50%);
+ }
+}
diff --git a/sass/_chips.scss b/sass/_chips.scss
new file mode 100644
index 0000000..6729c56
--- /dev/null
+++ b/sass/_chips.scss
@@ -0,0 +1,33 @@
+// Chips
+.chip {
+ align-items: center;
+ background: $bg-color-dark;
+ border-radius: 5rem;
+ display: inline-flex;
+ font-size: 90%;
+ height: $unit-6;
+ line-height: $unit-4;
+ margin: $unit-h;
+ max-width: $control-width-sm;
+ overflow: hidden;
+ padding: $unit-1 $unit-2;
+ text-decoration: none;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+ white-space: nowrap;
+
+ &.active {
+ background: $primary-color;
+ color: $light-color;
+ }
+
+ .avatar {
+ margin-left: -$unit-2;
+ margin-right: $unit-1;
+ }
+
+ .btn-clear {
+ border-radius: 50%;
+ transform: scale(.75);
+ }
+}
diff --git a/sass/_codes.scss b/sass/_codes.scss
new file mode 100644
index 0000000..49d2d99
--- /dev/null
+++ b/sass/_codes.scss
@@ -0,0 +1,31 @@
+// Codes
+code {
+ @include label-base();
+ @include label-variant($code-color, $black);
+ font-size: 85%;
+}
+
+pre {
+ border-radius: $border-radius;
+ color: $white;
+ position: relative;
+ background-color: $black;
+
+ &::before {
+ color: $gray-color;
+ content: attr(data-lang);
+ font-size: $font-size-sm;
+ position: absolute;
+ right: $layout-spacing;
+ top: $unit-h;
+ }
+
+ code {
+ color: inherit;
+ display: block;
+ line-height: 1.5;
+ overflow-x: auto;
+ padding: 1rem;
+ width: 100%;
+ }
+}
diff --git a/sass/_comparison-sliders.scss b/sass/_comparison-sliders.scss
new file mode 100644
index 0000000..72bb25f
--- /dev/null
+++ b/sass/_comparison-sliders.scss
@@ -0,0 +1,115 @@
+// Image comparison slider
+// Credit: http://codepen.io/solipsistacp/pen/Gpmaq
+.comparison-slider {
+ height: 50vh;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+ -webkit-overflow-scrolling: touch;
+
+ .comparison-before,
+ .comparison-after {
+ height: 100%;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+
+ img {
+ height: 100%;
+ object-fit: cover;
+ object-position: left center;
+ position: absolute;
+ width: 100%;
+ }
+ }
+
+ .comparison-before {
+ width: 100%;
+ z-index: 1;
+
+ .comparison-label {
+ right: $unit-4;
+ }
+ }
+
+ .comparison-after {
+ max-width: 100%;
+ min-width: 0;
+ z-index: 2;
+
+ &::before {
+ background: transparent;
+ content: "";
+ cursor: default;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ right: $unit-4;
+ top: 0;
+ z-index: $zindex-0;
+ }
+
+ &::after {
+ background: currentColor;
+ border-radius: 50%;
+ box-shadow: 0 -5px, 0 5px;
+ color: $light-color;
+ content: "";
+ height: 3px;
+ position: absolute;
+ right: $unit-2;
+ top: 50%;
+ transform: translate(50%, -50%);
+ width: 3px;
+ }
+
+ .comparison-label {
+ left: $unit-4;
+ }
+ }
+
+ .comparison-resizer {
+ animation: first-run 1.5s 1 ease-in-out;
+ cursor: ew-resize;
+ height: $unit-4;
+ left: 0;
+ max-width: 100%;
+ min-width: $unit-4;
+ opacity: 0;
+ outline: none;
+ position: relative;
+ resize: horizontal;
+ top: 50%;
+ transform: translateY(-50%) scaleY(30);
+ width: 0;
+ }
+
+ .comparison-label {
+ background: rgba($dark-color, .5);
+ bottom: $unit-4;
+ color: $light-color;
+ padding: $unit-1 $unit-2;
+ position: absolute;
+ user-select: none;
+ }
+}
+
+@keyframes first-run {
+ 0% {
+ width: 0;
+ }
+ 25% {
+ width: $unit-12;
+ }
+ 50% {
+ width: $unit-4;
+ }
+ 75% {
+ width: $unit-6;
+ }
+ 100% {
+ width: 0;
+ }
+}
diff --git a/sass/_dropdowns.scss b/sass/_dropdowns.scss
new file mode 100644
index 0000000..324440b
--- /dev/null
+++ b/sass/_dropdowns.scss
@@ -0,0 +1,36 @@
+// Dropdown
+.dropdown {
+ display: inline-block;
+ position: relative;
+
+ .menu {
+ animation: slide-down .15s ease 1;
+ display: none;
+ left: 0;
+ max-height: 50vh;
+ overflow-y: auto;
+ position: absolute;
+ top: 100%;
+ }
+
+ &.dropdown-right {
+ .menu {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ &.active .menu,
+ .dropdown-toggle:focus + .menu,
+ .menu:hover {
+ display: block;
+ }
+
+ // Fix dropdown-toggle border radius in button groups
+ .btn-group {
+ .dropdown-toggle:nth-last-child(2) {
+ border-bottom-right-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ }
+ }
+}
diff --git a/sass/_empty.scss b/sass/_empty.scss
new file mode 100644
index 0000000..accba9c
--- /dev/null
+++ b/sass/_empty.scss
@@ -0,0 +1,21 @@
+// Empty states (or Blank slates)
+.empty {
+ background: $bg-color;
+ border-radius: $border-radius;
+ color: $gray-color-dark;
+ text-align: center;
+ padding: $unit-16 $unit-8;
+
+ .empty-icon {
+ margin-bottom: $layout-spacing-lg;
+ }
+
+ .empty-title,
+ .empty-subtitle {
+ margin: $layout-spacing auto;
+ }
+
+ .empty-action {
+ margin-top: $layout-spacing-lg;
+ }
+}
diff --git a/sass/_filters.scss b/sass/_filters.scss
new file mode 100644
index 0000000..37ccc89
--- /dev/null
+++ b/sass/_filters.scss
@@ -0,0 +1,37 @@
+// Filters
+// The number of filter options
+$filter-number: 8 !default;
+
+%filter-checked-nav {
+ background: $primary-color;
+ color: $light-color;
+}
+
+%filter-checked-body {
+ display: none;
+}
+
+.filter {
+ .filter-nav {
+ margin: $layout-spacing 0;
+ }
+
+ .filter-body {
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .filter-tag {
+ @for $i from 0 through ($filter-number) {
+ tag-#{$i}:checked ~ .filter-nav .chip[for="tag-#{$i}"] {
+ @extend %filter-checked-nav;
+ }
+ }
+
+ @for $i from 1 through ($filter-number) {
+ tag-#{$i}:checked ~ .filter-body .filter-item:not([data-tag~="tag-#{$i}"]) {
+ @extend %filter-checked-body;
+ }
+ }
+ }
+}
diff --git a/sass/_forms.scss b/sass/_forms.scss
new file mode 100644
index 0000000..ffa624d
--- /dev/null
+++ b/sass/_forms.scss
@@ -0,0 +1,557 @@
+// Forms
+.form-group {
+ &:not(:last-child) {
+ margin-bottom: $layout-spacing;
+ }
+}
+
+fieldset {
+ margin-bottom: $layout-spacing-lg;
+}
+
+legend {
+ font-size: $font-size-lg;
+ font-weight: 500;
+ margin-bottom: $layout-spacing-lg;
+}
+
+// Form element: Label
+.form-label {
+ display: block;
+ line-height: $line-height;
+ padding: $control-padding-y + $border-width 0;
+ margin-top: $layout-spacing-sm;
+
+ &.label-sm {
+ font-size: $font-size-sm;
+ padding: $control-padding-y-sm + $border-width 0;
+ }
+
+ &.label-lg {
+ font-size: $font-size-lg;
+ padding: $control-padding-y-lg + $border-width 0;
+ }
+}
+
+// Form element: Input
+.form-input {
+ appearance: none;
+ background: $bg-color-light;
+ background-image: none;
+ border: $border-width solid $border-color-dark;
+ border-radius: $border-radius;
+ color: $body-font-color;
+ display: block;
+ font-size: $font-size;
+ height: $control-size;
+ line-height: $line-height;
+ max-width: 100%;
+ outline: none;
+ padding: $control-padding-y $control-padding-x;
+ position: relative;
+ transition: background .2s, border .2s, box-shadow .2s, color .2s;
+ width: 100%;
+ &:focus {
+ @include control-shadow();
+ border-color: $primary-color;
+ }
+ &::placeholder {
+ color: $gray-color;
+ }
+
+ // Input sizes
+ &.input-sm {
+ font-size: $font-size-sm;
+ height: $control-size-sm;
+ padding: $control-padding-y-sm $control-padding-x-sm;
+ }
+
+ &.input-lg {
+ font-size: $font-size-lg;
+ height: $control-size-lg;
+ padding: $control-padding-y-lg $control-padding-x-lg;
+ }
+
+ &.input-inline {
+ display: inline-block;
+ vertical-align: middle;
+ width: auto;
+ }
+
+ // Input types
+ &[type="file"] {
+ height: auto;
+ }
+}
+
+// Form element: Textarea
+textarea.form-input {
+ &,
+ &.input-lg,
+ &.input-sm {
+ height: auto;
+ }
+}
+
+// Form element: Input hint
+.form-input-hint {
+ color: $gray-color;
+ font-size: $font-size-sm;
+ margin-top: $unit-1;
+
+ .has-success &,
+ .is-success + & {
+ color: $success-color;
+ }
+
+ .has-error &,
+ .is-error + & {
+ color: $error-color;
+ }
+}
+
+// Form element: Select
+.form-select {
+ appearance: none;
+ border: $border-width solid $border-color-dark;
+ border-radius: $border-radius;
+ color: inherit;
+ font-size: $font-size;
+ height: $control-size;
+ line-height: $line-height;
+ outline: none;
+ padding: $control-padding-y $control-padding-x;
+ vertical-align: middle;
+ width: 100%;
+ background: $bg-color-light;
+ &:focus {
+ @include control-shadow();
+ border-color: $primary-color;
+ }
+ &::-ms-expand {
+ display: none;
+ }
+
+ // Select sizes
+ &.select-sm {
+ font-size: $font-size-sm;
+ height: $control-size-sm;
+ padding: $control-padding-y-sm ($control-icon-size + $control-padding-x-sm) $control-padding-y-sm $control-padding-x-sm;
+ }
+
+ &.select-lg {
+ font-size: $font-size-lg;
+ height: $control-size-lg;
+ padding: $control-padding-y-lg ($control-icon-size + $control-padding-x-lg) $control-padding-y-lg $control-padding-x-lg;
+ }
+
+ // Multiple select
+ &[size],
+ &[multiple] {
+ height: auto;
+ padding: $control-padding-y $control-padding-x;
+
+ option {
+ padding: $unit-h $unit-1;
+ }
+ }
+ &:not([multiple]):not([size]) {
+ background: $bg-color-light url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center / .4rem .5rem;
+ padding-right: $control-icon-size + $control-padding-x;
+ }
+}
+
+// Form Icons
+.has-icon-left,
+.has-icon-right {
+ position: relative;
+
+ .form-icon {
+ height: $control-icon-size;
+ margin: 0 $control-padding-y;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ width: $control-icon-size;
+ z-index: $zindex-0 + 1;
+ }
+}
+
+.has-icon-left {
+ .form-icon {
+ left: $border-width;
+ }
+
+ .form-input {
+ padding-left: $control-icon-size + $control-padding-y * 2;
+ }
+}
+
+.has-icon-right {
+ .form-icon {
+ right: $border-width;
+ }
+
+ .form-input {
+ padding-right: $control-icon-size + $control-padding-y * 2;
+ }
+}
+
+// Form element: Checkbox and Radio
+.form-checkbox,
+.form-radio,
+.form-switch {
+ display: block;
+ line-height: $line-height;
+ margin: ($control-size - $control-size-sm) 0;
+ min-height: $control-size-sm;
+ padding: (($control-size-sm - $line-height) / 2) $control-padding-x (($control-size-sm - $line-height) / 2) ($control-icon-size + $control-padding-x);
+ position: relative;
+
+ input {
+ clip: rect(0, 0, 0, 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ position: absolute;
+ width: 1px;
+ &:focus + .form-icon {
+ @include control-shadow();
+ border-color: $primary-color;
+ }
+ &:checked + .form-icon {
+ background: $primary-color;
+ border-color: $primary-color;
+ }
+ }
+
+ .form-icon {
+ border: $border-width solid $border-color-dark;
+ cursor: pointer;
+ display: inline-block;
+ position: absolute;
+ transition: background .2s, border .2s, box-shadow .2s, color .2s;
+ }
+
+ // Input checkbox, radio and switch sizes
+ &.input-sm {
+ font-size: $font-size-sm;
+ margin: 0;
+ }
+
+ &.input-lg {
+ font-size: $font-size-lg;
+ margin: ($control-size-lg - $control-size-sm) / 2 0;
+ }
+}
+
+.form-checkbox,
+.form-radio {
+ .form-icon {
+ background: $bg-color-light;
+ height: $control-icon-size;
+ left: 0;
+ top: ($control-size-sm - $control-icon-size) / 2;
+ width: $control-icon-size;
+ }
+
+ input {
+ &:active + .form-icon {
+ background: $bg-color-dark;
+ }
+ }
+}
+.form-checkbox {
+ .form-icon {
+ border-radius: $border-radius;
+ }
+
+ input {
+ &:checked + .form-icon {
+ &::before {
+ background-clip: padding-box;
+ border: $border-width solid $light-color;
+ border-left-width: 0;
+ border-top-width: 0;
+ content: "";
+ height: 9px;
+ left: 50%;
+ margin-left: -3px;
+ margin-top: -6px;
+ position: absolute;
+ top: 50%;
+ transform: rotate(45deg);
+ width: 6px;
+ }
+ }
+ &:indeterminate + .form-icon {
+ background: $primary-color;
+ border-color: $primary-color;
+ &::before {
+ background: $bg-color-light;
+ content: "";
+ height: 2px;
+ left: 50%;
+ margin-left: -5px;
+ margin-top: -1px;
+ position: absolute;
+ top: 50%;
+ width: 10px;
+ }
+ }
+ }
+}
+.form-radio {
+ .form-icon {
+ border-radius: 50%;
+ }
+
+ input {
+ &:checked + .form-icon {
+ &::before {
+ background: $bg-color-light;
+ border-radius: 50%;
+ content: "";
+ height: 6px;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: 6px;
+ }
+ }
+ }
+}
+
+// Form element: Switch
+.form-switch {
+ padding-left: ($unit-8 + $control-padding-x);
+
+ .form-icon {
+ background: $gray-color;
+ background-clip: padding-box;
+ border-radius: $unit-2 + $border-width;
+ height: $unit-4 + $border-width * 2;
+ left: 0;
+ top: ($control-size-sm - $unit-4) / 2 - $border-width;
+ width: $unit-8;
+ &::before {
+ background: $bg-color-light;
+ border-radius: 50%;
+ content: "";
+ display: block;
+ height: $unit-4;
+ left: 0;
+ position: absolute;
+ top: 0;
+ transition: background .2s, border .2s, box-shadow .2s, color .2s, left .2s;
+ width: $unit-4;
+ }
+ }
+
+ input {
+ &:checked + .form-icon {
+ &::before {
+ left: 14px;
+ }
+ }
+ &:active + .form-icon {
+ &::before {
+ background: $bg-color;
+ }
+ }
+ }
+}
+
+// Form element: Input groups
+.input-group {
+ display: flex;
+
+ .input-group-addon {
+ background: $bg-color;
+ border: $border-width solid $border-color-dark;
+ border-radius: $border-radius;
+ line-height: $line-height;
+ padding: $control-padding-y $control-padding-x;
+ white-space: nowrap;
+
+ &.addon-sm {
+ font-size: $font-size-sm;
+ padding: $control-padding-y-sm $control-padding-x-sm;
+ }
+
+ &.addon-lg {
+ font-size: $font-size-lg;
+ padding: $control-padding-y-lg $control-padding-x-lg;
+ }
+ }
+
+ .form-input,
+ .form-select {
+ flex: 1 1 auto;
+ width: 1%;
+ }
+
+ .input-group-btn {
+ z-index: $zindex-0;
+ }
+
+ .form-input,
+ .form-select,
+ .input-group-addon,
+ .input-group-btn {
+ &:first-child:not(:last-child) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ }
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ margin-left: -$border-width;
+ }
+ &:last-child:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+ margin-left: -$border-width;
+ }
+ &:focus {
+ z-index: $zindex-0 + 1;
+ }
+ }
+
+ .form-select {
+ width: auto;
+ }
+
+ &.input-inline {
+ display: inline-flex;
+ }
+}
+
+// Form validation states
+.form-input,
+.form-select {
+ .has-success &,
+ &.is-success {
+ background: lighten($success-color, 53%);
+ border-color: $success-color;
+ &:focus {
+ @include control-shadow($success-color);
+ }
+ }
+
+ .has-error &,
+ &.is-error {
+ background: lighten($error-color, 53%);
+ border-color: $error-color;
+ &:focus {
+ @include control-shadow($error-color);
+ }
+ }
+}
+
+.form-checkbox,
+.form-radio,
+.form-switch {
+ .has-error &,
+ &.is-error {
+ .form-icon {
+ border-color: $error-color;
+ }
+
+ input {
+ &:checked + .form-icon {
+ background: $error-color;
+ border-color: $error-color;
+ }
+
+ &:focus + .form-icon {
+ @include control-shadow($error-color);
+ border-color: $error-color;
+ }
+ }
+ }
+}
+
+.form-checkbox {
+ .has-error &,
+ &.is-error {
+ input {
+ &:indeterminate + .form-icon {
+ background: $error-color;
+ border-color: $error-color;
+ }
+ }
+ }
+}
+
+// validation based on :placeholder-shown (Edge doesn't support it yet)
+.form-input {
+ &:not(:placeholder-shown) {
+ &:invalid {
+ border-color: $error-color;
+ &:focus {
+ @include control-shadow($error-color);
+ background: lighten($error-color, 53%);
+ }
+
+ & + .form-input-hint {
+ color: $error-color;
+ }
+ }
+ }
+}
+
+// Form disabled and readonly
+.form-input,
+.form-select {
+ &:disabled,
+ &.disabled {
+ background-color: $bg-color-dark;
+ cursor: not-allowed;
+ opacity: .5;
+ color: $black !important;
+ }
+}
+
+.form-input {
+ &[readonly] {
+ background-color: $bg-color;
+ }
+}
+
+input {
+ &:disabled,
+ &.disabled {
+ & + .form-icon {
+ background: $bg-color-dark;
+ cursor: not-allowed;
+ opacity: .5;
+ }
+ }
+}
+
+.form-switch {
+ input {
+ &:disabled,
+ &.disabled {
+ & + .form-icon::before {
+ background: $bg-color-light;
+ }
+ }
+ }
+}
+
+// Form horizontal
+.form-horizontal {
+ padding: $layout-spacing 0;
+
+ .form-group {
+ display: flex;
+ flex-wrap: wrap;
+ }
+}
+
+// Form inline
+.form-inline {
+ display: inline-block;
+}
diff --git a/sass/_hero.scss b/sass/_hero.scss
new file mode 100644
index 0000000..48114e3
--- /dev/null
+++ b/sass/_hero.scss
@@ -0,0 +1,22 @@
+// Hero
+.hero {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding-bottom: 4rem;
+ padding-top: 4rem;
+
+ &.hero-sm {
+ padding-bottom: 2rem;
+ padding-top: 2rem;
+ }
+
+ &.hero-lg {
+ padding-bottom: 6rem;
+ padding-top: 6rem;
+ }
+
+ .hero-body {
+ padding: $layout-spacing;
+ }
+}
diff --git a/sass/_icons.scss b/sass/_icons.scss
new file mode 100644
index 0000000..4f3c5ce
--- /dev/null
+++ b/sass/_icons.scss
@@ -0,0 +1,5 @@
+// CSS Icons
+@import "icons/icons-core";
+@import "icons/icons-navigation";
+@import "icons/icons-action";
+@import "icons/icons-object";
\ No newline at end of file
diff --git a/sass/_labels.scss b/sass/_labels.scss
new file mode 100644
index 0000000..ca693cd
--- /dev/null
+++ b/sass/_labels.scss
@@ -0,0 +1,34 @@
+// Labels
+.label {
+ @include label-base();
+ @include label-variant(lighten($body-font-color, 5%), $bg-color-dark);
+ display: inline-block;
+
+ // Label rounded
+ &.label-rounded {
+ border-radius: 5rem;
+ padding-left: .4rem;
+ padding-right: .4rem;
+ }
+
+ // Label colors
+ &.label-primary {
+ @include label-variant($light-color, $primary-color);
+ }
+
+ &.label-secondary {
+ @include label-variant($primary-color, $secondary-color);
+ }
+
+ &.label-success {
+ @include label-variant($light-color, $success-color);
+ }
+
+ &.label-warning {
+ @include label-variant($light-color, $warning-color);
+ }
+
+ &.label-error {
+ @include label-variant($light-color, $error-color);
+ }
+}
diff --git a/sass/_layout.scss b/sass/_layout.scss
new file mode 100644
index 0000000..094b82b
--- /dev/null
+++ b/sass/_layout.scss
@@ -0,0 +1,509 @@
+// Layout
+.container {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: $layout-spacing;
+ padding-right: $layout-spacing;
+ width: 100%;
+
+ $grid-spacing: ($layout-spacing / ($layout-spacing * 0 + 1)) * $html-font-size;
+
+ &.grid-xl {
+ max-width: $grid-spacing * 2 + $size-2x;
+ }
+
+ &.grid-lg {
+ max-width: $grid-spacing * 2 + $size-lg;
+ }
+
+ &.grid-md {
+ max-width: $grid-spacing * 2 + $size-md;
+ }
+
+ &.grid-sm {
+ max-width: $grid-spacing * 2 + $size-sm;
+ }
+
+ &.grid-xs {
+ max-width: $grid-spacing * 2 + $size-xs;
+ }
+}
+
+// Responsive breakpoint system
+.show-xs,
+.show-sm,
+.show-md,
+.show-lg,
+.show-xl {
+ display: none !important;
+}
+
+// Responsive grid system
+.columns {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: -$layout-spacing;
+ margin-right: -$layout-spacing;
+
+ &.col-gapless {
+ margin-left: 0;
+ margin-right: 0;
+
+ & > .column {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ }
+ &.col-oneline {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ }
+}
+.column {
+ flex: 1;
+ max-width: 100%;
+ padding-left: $layout-spacing;
+ padding-right: $layout-spacing;
+
+ &.col-12,
+ &.col-11,
+ &.col-10,
+ &.col-9,
+ &.col-8,
+ &.col-7,
+ &.col-6,
+ &.col-5,
+ &.col-4,
+ &.col-3,
+ &.col-2,
+ &.col-1,
+ &.col-auto {
+ flex: none;
+ }
+}
+.col-12 {
+ width: 100%;
+}
+.col-11 {
+ width: 91.66666667%;
+}
+.col-10 {
+ width: 83.33333333%;
+}
+.col-9 {
+ width: 75%;
+}
+.col-8 {
+ width: 66.66666667%;
+}
+.col-7 {
+ width: 58.33333333%;
+}
+.col-6 {
+ width: 50%;
+}
+.col-5 {
+ width: 41.66666667%;
+}
+.col-4 {
+ width: 33.33333333%;
+}
+.col-3 {
+ width: 25%;
+}
+.col-2 {
+ width: 16.66666667%;
+}
+.col-1 {
+ width: 8.33333333%;
+}
+.col-auto {
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto;
+}
+.col-mx-auto {
+ margin-left: auto;
+ margin-right: auto;
+}
+.col-ml-auto {
+ margin-left: auto;
+}
+.col-mr-auto {
+ margin-right: auto;
+}
+@media (max-width: $size-xl) {
+ .col-xl-12,
+ .col-xl-11,
+ .col-xl-10,
+ .col-xl-9,
+ .col-xl-8,
+ .col-xl-7,
+ .col-xl-6,
+ .col-xl-5,
+ .col-xl-4,
+ .col-xl-3,
+ .col-xl-2,
+ .col-xl-1,
+ .col-xl-auto {
+ flex: none;
+ }
+ .col-xl-12 {
+ width: 100%;
+ }
+ .col-xl-11 {
+ width: 91.66666667%;
+ }
+ .col-xl-10 {
+ width: 83.33333333%;
+ }
+ .col-xl-9 {
+ width: 75%;
+ }
+ .col-xl-8 {
+ width: 66.66666667%;
+ }
+ .col-xl-7 {
+ width: 58.33333333%;
+ }
+ .col-xl-6 {
+ width: 50%;
+ }
+ .col-xl-5 {
+ width: 41.66666667%;
+ }
+ .col-xl-4 {
+ width: 33.33333333%;
+ }
+ .col-xl-3 {
+ width: 25%;
+ }
+ .col-xl-2 {
+ width: 16.66666667%;
+ }
+ .col-xl-1 {
+ width: 8.33333333%;
+ }
+ .col-xl-auto {
+ width: auto;
+ }
+ .hide-xl {
+ display: none !important;
+ }
+ .show-xl {
+ display: block !important;
+ }
+}
+@media (max-width: $size-lg) {
+ .col-lg-12,
+ .col-lg-11,
+ .col-lg-10,
+ .col-lg-9,
+ .col-lg-8,
+ .col-lg-7,
+ .col-lg-6,
+ .col-lg-5,
+ .col-lg-4,
+ .col-lg-3,
+ .col-lg-2,
+ .col-lg-1,
+ .col-lg-auto {
+ flex: none;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-auto {
+ width: auto;
+ }
+ .hide-lg {
+ display: none !important;
+ }
+ .show-lg {
+ display: block !important;
+ }
+}
+@media (max-width: $size-md) {
+ .col-md-12,
+ .col-md-11,
+ .col-md-10,
+ .col-md-9,
+ .col-md-8,
+ .col-md-7,
+ .col-md-6,
+ .col-md-5,
+ .col-md-4,
+ .col-md-3,
+ .col-md-2,
+ .col-md-1,
+ .col-md-auto {
+ flex: none;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-auto {
+ width: auto;
+ }
+ .hide-md {
+ display: none !important;
+ }
+ .show-md {
+ display: block !important;
+ }
+}
+@media (max-width: $size-sm) {
+ .col-sm-12,
+ .col-sm-11,
+ .col-sm-10,
+ .col-sm-9,
+ .col-sm-8,
+ .col-sm-7,
+ .col-sm-6,
+ .col-sm-5,
+ .col-sm-4,
+ .col-sm-3,
+ .col-sm-2,
+ .col-sm-1,
+ .col-sm-auto {
+ flex: none;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-auto {
+ width: auto;
+ }
+ .hide-sm {
+ display: none !important;
+ }
+ .show-sm {
+ display: block !important;
+ }
+}
+@media (max-width: $size-xs) {
+ .col-xs-12,
+ .col-xs-11,
+ .col-xs-10,
+ .col-xs-9,
+ .col-xs-8,
+ .col-xs-7,
+ .col-xs-6,
+ .col-xs-5,
+ .col-xs-4,
+ .col-xs-3,
+ .col-xs-2,
+ .col-xs-1,
+ .col-xs-auto {
+ flex: none;
+ }
+ .col-xs-12 {
+ width: 100%;
+ }
+ .col-xs-11 {
+ width: 91.66666667%;
+ }
+ .col-xs-10 {
+ width: 83.33333333%;
+ }
+ .col-xs-9 {
+ width: 75%;
+ }
+ .col-xs-8 {
+ width: 66.66666667%;
+ }
+ .col-xs-7 {
+ width: 58.33333333%;
+ }
+ .col-xs-6 {
+ width: 50%;
+ }
+ .col-xs-5 {
+ width: 41.66666667%;
+ }
+ .col-xs-4 {
+ width: 33.33333333%;
+ }
+ .col-xs-3 {
+ width: 25%;
+ }
+ .col-xs-2 {
+ width: 16.66666667%;
+ }
+ .col-xs-1 {
+ width: 8.33333333%;
+ }
+ .col-xs-auto {
+ width: auto;
+ }
+ .hide-xs {
+ display: none !important;
+ }
+ .show-xs {
+ display: block !important;
+ }
+}
+
+.container #content {
+}
+
+.full-width {
+ padding-right: 0rem !important;
+ padding-left: 0rem !important;
+}
+
+
+.full-width-gray {
+ padding-right: 0rem !important;
+ padding-left: 0rem !important;
+ background-color: $gray-color-light !important;
+}
+
+
+.grid {
+ display: grid;
+ grid-gap: $border-width-lg;
+ grid-template-columns: repeat(auto-fit, minmax($control-width-sm, 1fr));
+ grid-auto-rows: $control-width-sm;
+ grid-auto-flow: dense;
+
+ &-tall {
+ grid-row: span 2;
+ }
+
+ &-tall-3 {
+ grid-row: span 3;
+ }
+
+ &-tall-4 {
+ grid-row: span 4;
+ }
+
+ &-square {
+ grid-row: span 1;
+ grid-column: span 1;
+ }
+
+ &-square-2 {
+ grid-row: span 2;
+ grid-column: span 2;
+ }
+
+ &-square-3 {
+ grid-row: span 3;
+ grid-column: span 3;
+ }
+
+ &-wide {
+ grid-column: span 2;
+ }
+
+ &-wide-3 {
+ grid-column: span 3;
+ }
+
+ &-wide-4 {
+ grid-column: span 4;
+ }
+}
+
+
diff --git a/sass/_media.scss b/sass/_media.scss
new file mode 100644
index 0000000..4029e4c
--- /dev/null
+++ b/sass/_media.scss
@@ -0,0 +1,75 @@
+// Media
+// Image responsive
+.img-responsive {
+ display: block;
+ height: auto;
+ max-width: 100%;
+}
+
+// object-fit support is coming to Microsoft Edge
+// https://developer.microsoft.com/en-us/microsoft-edge/platform/status/objectfitandobjectposition/
+.img-fit-cover {
+ object-fit: cover;
+}
+
+.img-fit-contain {
+ object-fit: contain;
+}
+
+// Video responsive
+.video-responsive {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 100%;
+ &::before {
+ content: "";
+ display: block;
+ padding-bottom: 56.25%; // Default ratio 16:9, you can calculate this value by dividing 9 by 16
+ }
+
+ iframe,
+ object,
+ embed {
+ border: 0;
+ bottom: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 100%;
+ }
+}
+
+video.video-responsive {
+ height: auto;
+ max-width: 100%;
+
+ &::before {
+ content: none;
+ }
+}
+
+.video-responsive-4-3 {
+ &::before {
+ padding-bottom: 75%; // Ratio 4:3
+ }
+}
+
+.video-responsive-1-1 {
+ &::before {
+ padding-bottom: 100%; // Ratio 1:1
+ }
+}
+
+// Figure
+.figure {
+ margin: 0 0 $layout-spacing 0;
+
+ .figure-caption {
+ color: $gray-color-dark;
+ margin-top: $layout-spacing;
+ }
+}
diff --git a/sass/_menus.scss b/sass/_menus.scss
new file mode 100644
index 0000000..4647d3f
--- /dev/null
+++ b/sass/_menus.scss
@@ -0,0 +1,66 @@
+// Menus
+.menu {
+ @include shadow-variant(.05rem);
+ background: $bg-color-light;
+ border-radius: $border-radius;
+ list-style: none;
+ margin: 0;
+ min-width: $control-width-xs;
+ padding: $unit-2;
+ transform: translateY($layout-spacing-sm);
+ z-index: $zindex-3;
+
+ &.menu-nav {
+ background: transparent;
+ box-shadow: none;
+ }
+
+ .menu-item {
+ margin-top: 0;
+ padding: 0 $unit-2;
+ position: relative;
+
+ & > a {
+ text-decoration: none;
+ border-radius: $border-radius;
+ color: inherit;
+ display: block;
+ margin: 0 (-$unit-2);
+ padding: $unit-o $unit-o;
+ &:focus,
+ &:hover {
+ background: $gray-color-light;
+ color: $primary-color;
+ }
+ &:active,
+ &.active {
+ background: $gray-color;
+ color: $primary-color;
+ }
+ }
+
+ .form-checkbox,
+ .form-radio,
+ .form-switch {
+ margin: $unit-h 0;
+ }
+
+ & + .menu-item {
+ margin-top: $unit-1;
+ font-size: .9rem;
+ }
+ }
+
+ .menu-badge {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ position: absolute;
+ right: 0;
+ top: 0;
+
+ .label {
+ margin-right: $unit-2;
+ }
+ }
+}
diff --git a/sass/_meters.scss b/sass/_meters.scss
new file mode 100644
index 0000000..9fd98b0
--- /dev/null
+++ b/sass/_meters.scss
@@ -0,0 +1,57 @@
+// Meters
+// Credit: https://css-tricks.com/html5-meter-element/
+.meter {
+ appearance: none;
+ background: $bg-color;
+ border: 0;
+ border-radius: $border-radius;
+ display: block;
+ width: 100%;
+ height: $unit-4;
+
+ &::-webkit-meter-inner-element {
+ display: block;
+ }
+
+ &::-webkit-meter-bar,
+ &::-webkit-meter-optimum-value,
+ &::-webkit-meter-suboptimum-value,
+ &::-webkit-meter-even-less-good-value {
+ border-radius: $border-radius;
+ }
+
+ &::-webkit-meter-bar {
+ background: $bg-color;
+ }
+
+ &::-webkit-meter-optimum-value {
+ background: $success-color;
+ }
+
+ &::-webkit-meter-suboptimum-value {
+ background: $warning-color;
+ }
+
+ &::-webkit-meter-even-less-good-value {
+ background: $error-color;
+ }
+
+ &::-moz-meter-bar,
+ &:-moz-meter-optimum,
+ &:-moz-meter-sub-optimum,
+ &:-moz-meter-sub-sub-optimum {
+ border-radius: $border-radius;
+ }
+
+ &:-moz-meter-optimum::-moz-meter-bar {
+ background: $success-color;
+ }
+
+ &:-moz-meter-sub-optimum::-moz-meter-bar {
+ background: $warning-color;
+ }
+
+ &:-moz-meter-sub-sub-optimum::-moz-meter-bar {
+ background: $error-color;
+ }
+}
diff --git a/sass/_mixins.scss b/sass/_mixins.scss
new file mode 100644
index 0000000..d3a28d5
--- /dev/null
+++ b/sass/_mixins.scss
@@ -0,0 +1,10 @@
+// Mixins
+@import "mixins/avatar";
+@import "mixins/button";
+@import "mixins/clearfix";
+@import "mixins/color";
+@import "mixins/label";
+@import "mixins/position";
+@import "mixins/shadow";
+@import "mixins/text";
+@import "mixins/toast";
\ No newline at end of file
diff --git a/sass/_modals.scss b/sass/_modals.scss
new file mode 100644
index 0000000..156eb8e
--- /dev/null
+++ b/sass/_modals.scss
@@ -0,0 +1,87 @@
+// Modals
+.modal {
+ align-items: center;
+ display: none;
+ justify-content: center;
+ opacity: 0;
+ overflow: hidden;
+ padding: $layout-spacing;
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ top: -30vh;
+
+ &:target,
+ &.active {
+ display: flex;
+ opacity: 1;
+ z-index: $zindex-4;
+
+ .modal-overlay {
+ background: rgba($bg-color, .75);
+ bottom: 0;
+ cursor: default;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+
+ .modal-container {
+ animation: slide-down .2s ease 1;
+ z-index: $zindex-0;
+ }
+ }
+
+ &.modal-sm {
+ .modal-container {
+ max-width: $control-width-sm;
+ padding: 0 $unit-2;
+ }
+ }
+
+ &.modal-lg {
+ .modal-overlay {
+ background: $bg-color-light;
+ }
+
+ .modal-container {
+ box-shadow: none;
+ max-width: $control-width-lg;
+ }
+ }
+}
+
+.modal-container {
+ @include shadow-variant(.2rem);
+ background: $bg-color-light;
+ border-radius: $border-radius;
+ display: flex;
+ flex-direction: column;
+ max-height: 75vh;
+ max-width: $control-width-md;
+ padding: 0 $unit-4;
+ width: 100%;
+
+ &.modal-fullheight {
+ max-height: 100vh;
+ }
+
+ .modal-header {
+ color: $dark-color;
+ padding: $unit-4;
+ }
+
+ .modal-body {
+ overflow-y: auto;
+ padding: $unit-4;
+ position: relative;
+ }
+
+ .modal-footer {
+ padding: $unit-4;
+ text-align: right;
+ }
+}
diff --git a/sass/_navbar.scss b/sass/_navbar.scss
new file mode 100644
index 0000000..46d9b34
--- /dev/null
+++ b/sass/_navbar.scss
@@ -0,0 +1,33 @@
+// Navbar
+.navbar {
+ align-items: stretch;
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: $unit-3;
+ padding-right: $unit-3;
+ justify-content: space-between;
+ border-bottom: 2px solid $secondary-color-light;
+
+ .navbar-section {
+ align-items: center;
+ display: flex;
+ flex: 1 0 0;
+
+ &:not(:first-child):last-child {
+ justify-content: flex-end;
+ }
+ }
+
+ .navbar-center {
+ align-items: center;
+ display: flex;
+ flex: 0 0 auto;
+ }
+
+ .navbar-brand {
+ position: relative;
+ top: 15%;
+ font-size: $font-size-lg;
+ text-decoration: none;
+ }
+}
diff --git a/sass/_navs.scss b/sass/_navs.scss
new file mode 100644
index 0000000..927b5e9
--- /dev/null
+++ b/sass/_navs.scss
@@ -0,0 +1,49 @@
+// Navs
+.nav {
+ display: flex;
+ flex-direction: column;
+ list-style: none;
+ margin: $unit-1 0;
+ background-color: inherit;
+ font-family: $mono-font-family;
+
+ .divider {
+ margin: 1px;
+ }
+
+ .h4 {
+ font-family: $mono-font-family;
+ }
+
+ .nav-item {
+ a {
+ color: $primary-color;
+ padding: $unit-1 $unit-2;
+ text-decoration: none;
+ &:focus,
+ &:hover {
+ color: $black;
+ text-decoration: underline;
+ }
+ }
+ &.active {
+ & > a {
+ color: darken($primary-color, 10%);
+ font-weight: bold;
+ &:focus,
+ &:hover {
+ color: $primary-color;
+ }
+ }
+ }
+ }
+
+ & .nav {
+ margin-bottom: $unit-2;
+ margin-left: $unit-4;
+ }
+
+ ul {
+ background-color: inherit;
+ }
+}
diff --git a/sass/_normalize.scss b/sass/_normalize.scss
new file mode 100644
index 0000000..a098a84
--- /dev/null
+++ b/sass/_normalize.scss
@@ -0,0 +1,446 @@
+/* Manually forked from Normalize.css */
+/* normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/**
+ * 1. Change the default font family in all browsers (opinionated).
+ * 2. Correct the line height in all browsers.
+ * 3. Prevent adjustments of font size after orientation changes in
+ * IE on Windows Phone and in iOS.
+ */
+
+/* Document
+ ========================================================================== */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 3 */
+ -webkit-text-size-adjust: 100%; /* 3 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+article,
+aside,
+footer,
+header,
+nav,
+section {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+
+figcaption,
+figure,
+main { /* 1 */
+ display: block;
+}
+
+/**
+ * Add the correct margin in IE 8 (removed).
+ */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers. (removed)
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+
+a {
+ background-color: transparent; /* 1 */
+ -webkit-text-decoration-skip: objects; /* 2 */
+}
+
+/**
+ * Remove the outline on focused links when they are also active or hovered
+ * in all browsers (opinionated).
+ */
+
+a:active,
+a:hover {
+ outline-width: 0;
+}
+
+/**
+ * Modify default styling of address.
+ */
+
+address {
+ font-style: normal;
+}
+
+/**
+ * 1. Remove the bottom border in Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. (removed)
+ */
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+
+b,
+strong {
+ font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: $mono-font-family; /* 1 (changed) */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-. (Removed)
+ */
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+ font-weight: 400; /* (added) */
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+ border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 (changed) */
+ font-size: inherit; /* 1 (changed) */
+ line-height: inherit; /* 1 (changed) */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule (removed).
+ */
+
+
+/**
+ * Change the border, margin, and padding in all browsers (opinionated) (changed).
+ */
+
+fieldset {
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+
+details, /* 1 */
+menu {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+ outline: none;
+}
+
+/* Scripting
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+canvas {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+template {
+ display: none;
+}
+
+/* Hidden
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10-.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/sass/_off-canvas.scss b/sass/_off-canvas.scss
new file mode 100644
index 0000000..ee80f30
--- /dev/null
+++ b/sass/_off-canvas.scss
@@ -0,0 +1,104 @@
+// Off canvas menus
+$off-canvas-breakpoint: $size-lg !default;
+
+.off-canvas {
+ display: flex;
+ flex-flow: nowrap;
+ height: 100%;
+ position: relative;
+ width: 100%;
+
+ .off-canvas-toggle {
+ display: block;
+ position: absolute;
+ top: $layout-spacing;
+ transition: none;
+ z-index: $zindex-0;
+ @if $rtl == true {
+ right: $layout-spacing;
+ } @else {
+ left: $layout-spacing;
+ }
+ }
+
+ .off-canvas-sidebar {
+ background: $bg-color;
+ bottom: 0;
+ min-width: 10rem;
+ overflow-y: auto;
+ position: fixed;
+ top: 0;
+ transition: transform .25s;
+ z-index: $zindex-2;
+ @if $rtl == true {
+ right: 0;
+ transform: translateX(100%);
+ } @else {
+ left: 0;
+ transform: translateX(-100%);
+ }
+ }
+
+ .off-canvas-content {
+ flex: 1 1 auto;
+ height: 100%;
+ padding: $layout-spacing $layout-spacing*2 $layout-spacing 1rem;
+ }
+
+ .off-canvas-overlay {
+ background: rgba($dark-color, .1);
+ border-color: transparent;
+ border-radius: 0;
+ bottom: 0;
+ display: none;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ width: 100%;
+ }
+
+ .off-canvas-sidebar {
+ &:target,
+ &.active {
+ transform: translateX(0);
+ }
+
+ &:target ~ .off-canvas-overlay,
+ &.active ~ .off-canvas-overlay {
+ display: block;
+ z-index: $zindex-1;
+ }
+ }
+}
+
+// Responsive layout
+@media (min-width: $off-canvas-breakpoint) {
+ .off-canvas {
+ &.off-canvas-sidebar-show {
+ .off-canvas-toggle {
+ display: none;
+ }
+
+ .off-canvas-sidebar {
+ flex: 0 0 auto;
+ position: relative;
+ transform: none;
+ }
+
+ .off-canvas-overlay {
+ display: none !important;
+ }
+ }
+ }
+}
+
+.off-canvas .nav {
+ margin: 0px;
+ padding: 2px;
+}
+
+.off-canvas .nav .nav-item {
+ margin: 0px;
+}
diff --git a/sass/_pagination.scss b/sass/_pagination.scss
new file mode 100644
index 0000000..4c0e011
--- /dev/null
+++ b/sass/_pagination.scss
@@ -0,0 +1,60 @@
+// Pagination
+.pagination {
+ display: flex;
+ list-style: none;
+ margin: $unit-1 0;
+ padding: $unit-1 0;
+
+ .page-item {
+ margin: $unit-1 $unit-o;
+
+ span {
+ display: inline-block;
+ padding: $unit-1 $unit-1;
+ }
+
+ a {
+ border-radius: $border-radius;
+ display: inline-block;
+ padding: $unit-1 $unit-2;
+ text-decoration: none;
+ &:focus,
+ &:hover {
+ color: $primary-color;
+ }
+ }
+
+ &.disabled {
+ a {
+ cursor: default;
+ opacity: .5;
+ pointer-events: none;
+ }
+ }
+
+ &.active {
+ a {
+ background: $primary-color;
+ color: $light-color;
+ }
+ }
+
+ &.page-prev,
+ &.page-next {
+ flex: 1 0 50%;
+ }
+
+ &.page-next {
+ text-align: right;
+ }
+
+ .page-item-title {
+ margin: 0;
+ }
+
+ .page-item-subtitle {
+ margin: 0;
+ opacity: .5;
+ }
+ }
+}
diff --git a/sass/_panels.scss b/sass/_panels.scss
new file mode 100644
index 0000000..386f96e
--- /dev/null
+++ b/sass/_panels.scss
@@ -0,0 +1,23 @@
+// Panels
+.panel {
+ border: $border-width solid $border-color;
+ border-radius: $border-radius;
+ display: flex;
+ flex-direction: column;
+
+ .panel-header,
+ .panel-footer {
+ flex: 0 0 auto;
+ padding: $layout-spacing-lg;
+ }
+
+ .panel-nav {
+ flex: 0 0 auto;
+ }
+
+ .panel-body {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ padding: 0 $layout-spacing-lg;
+ }
+}
diff --git a/sass/_parallax.scss b/sass/_parallax.scss
new file mode 100644
index 0000000..ea244e5
--- /dev/null
+++ b/sass/_parallax.scss
@@ -0,0 +1,135 @@
+// Parallax
+$parallax-deg: 3deg !default;
+$parallax-offset: 4.5px !default;
+$parallax-offset-z: 50px !default;
+$parallax-perspective: 1000px !default;
+$parallax-scale: .95 !default;
+$parallax-fade-color: rgba(255, 255, 255, .35) !default;
+
+// Mixin: Parallax direction
+@mixin parallax-dir() {
+ height: 50%;
+ outline: none;
+ position: absolute;
+ width: 50%;
+ z-index: $zindex-1;
+}
+
+.parallax {
+ display: block;
+ height: auto;
+ position: relative;
+ width: auto;
+
+ .parallax-content {
+ @include shadow-variant(1rem);
+ height: auto;
+ transform: perspective($parallax-perspective);
+ transform-style: preserve-3d;
+ transition: all .4s ease;
+ width: 100%;
+
+ &::before {
+ content: "";
+ display: block;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ }
+ }
+
+ .parallax-front {
+ align-items: center;
+ color: $light-color;
+ display: flex;
+ height: 100%;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ text-align: center;
+ text-shadow: 0 0 20px rgba($dark-color, .75);
+ top: 0;
+ transform: translateZ($parallax-offset-z) scale($parallax-scale);
+ transition: transform .4s;
+ width: 100%;
+ z-index: $zindex-0;
+ }
+
+ .parallax-top-left {
+ @include parallax-dir();
+ left: 0;
+ top: 0;
+
+ &:focus ~ .parallax-content,
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX($parallax-deg) rotateY(-$parallax-deg);
+
+ &::before {
+ background: linear-gradient(135deg, $parallax-fade-color 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d($parallax-offset, $parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-top-right {
+ @include parallax-dir();
+ right: 0;
+ top: 0;
+
+ &:focus ~ .parallax-content,
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX($parallax-deg) rotateY($parallax-deg);
+
+ &::before {
+ background: linear-gradient(-135deg, $parallax-fade-color 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d(-$parallax-offset, $parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-bottom-left {
+ @include parallax-dir();
+ bottom: 0;
+ left: 0;
+
+ &:focus ~ .parallax-content,
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX(-$parallax-deg) rotateY(-$parallax-deg);
+
+ &::before {
+ background: linear-gradient(45deg, $parallax-fade-color 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d($parallax-offset, -$parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-bottom-right {
+ @include parallax-dir();
+ bottom: 0;
+ right: 0;
+
+ &:focus ~ .parallax-content,
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX(-$parallax-deg) rotateY($parallax-deg);
+
+ &::before {
+ background: linear-gradient(-45deg, $parallax-fade-color 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d(-$parallax-offset, -$parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+}
diff --git a/sass/_popovers.scss b/sass/_popovers.scss
new file mode 100644
index 0000000..35b6bcd
--- /dev/null
+++ b/sass/_popovers.scss
@@ -0,0 +1,65 @@
+// Popovers
+.popover {
+ display: inline-block;
+ position: relative;
+
+ .popover-container {
+ left: 50%;
+ opacity: 0;
+ padding: $layout-spacing;
+ position: absolute;
+ top: 0;
+ transform: translate(-50%, -50%) scale(0);
+ transition: transform .2s;
+ width: $control-width-sm;
+ z-index: $zindex-3;
+ }
+
+ *:focus + .popover-container,
+ &:hover .popover-container {
+ display: block;
+ opacity: 1;
+ transform: translate(-50%, -100%) scale(1);
+ }
+
+ &.popover-right {
+ .popover-container {
+ left: 100%;
+ top: 50%;
+ }
+
+ *:focus + .popover-container,
+ &:hover .popover-container {
+ transform: translate(0, -50%) scale(1);
+ }
+ }
+
+ &.popover-bottom {
+ .popover-container {
+ left: 50%;
+ top: 100%;
+ }
+
+ *:focus + .popover-container,
+ &:hover .popover-container {
+ transform: translate(-50%, 0) scale(1);
+ }
+ }
+
+ &.popover-left {
+ .popover-container {
+ left: 0;
+ top: 50%;
+ }
+
+ *:focus + .popover-container,
+ &:hover .popover-container {
+ transform: translate(-100%, -50%) scale(1);
+ }
+ }
+
+ .card {
+ @include shadow-variant(.2rem);
+ border: 0;
+ }
+}
diff --git a/sass/_progress.scss b/sass/_progress.scss
new file mode 100644
index 0000000..f173772
--- /dev/null
+++ b/sass/_progress.scss
@@ -0,0 +1,45 @@
+// Progress
+// Credit: https://css-tricks.com/html5-progress-element/
+.progress {
+ appearance: none;
+ background: $bg-color-dark;
+ border: 0;
+ border-radius: $border-radius;
+ color: $primary-color;
+ height: $unit-1;
+ position: relative;
+ width: 100%;
+
+ &::-webkit-progress-bar {
+ background: transparent;
+ border-radius: $border-radius;
+ }
+
+ &::-webkit-progress-value {
+ background: $primary-color;
+ border-radius: $border-radius;
+ }
+
+ &::-moz-progress-bar {
+ background: $primary-color;
+ border-radius: $border-radius;
+ }
+
+ &:indeterminate {
+ animation: progress-indeterminate 1.5s linear infinite;
+ background: $bg-color-dark linear-gradient(to right, $primary-color 30%, $bg-color-dark 30%) top left / 150% 150% no-repeat;
+
+ &::-moz-progress-bar {
+ background: transparent;
+ }
+ }
+}
+
+@keyframes progress-indeterminate {
+ 0% {
+ background-position: 200% 0;
+ }
+ 100% {
+ background-position: -200% 0;
+ }
+}
diff --git a/sass/_sliders.scss b/sass/_sliders.scss
new file mode 100644
index 0000000..3ff38e8
--- /dev/null
+++ b/sass/_sliders.scss
@@ -0,0 +1,99 @@
+// Sliders
+// Credit: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/
+.slider {
+ appearance: none;
+ background: transparent;
+ display: block;
+ width: 100%;
+ height: $unit-6;
+
+ &:focus {
+ @include control-shadow();
+ outline: none;
+ }
+
+ &.tooltip:not([data-tooltip]) {
+ &::after {
+ content: attr(value);
+ }
+ }
+
+ // Slider Thumb
+ &::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ background: $primary-color;
+ border: 0;
+ border-radius: 50%;
+ height: $unit-3;
+ margin-top: -($unit-3 - $unit-h) / 2;
+ transition: transform .2s;
+ width: $unit-3;
+ }
+ &::-moz-range-thumb {
+ background: $primary-color;
+ border: 0;
+ border-radius: 50%;
+ height: $unit-3;
+ transition: transform .2s;
+ width: $unit-3;
+ }
+ &::-ms-thumb {
+ background: $primary-color;
+ border: 0;
+ border-radius: 50%;
+ height: $unit-3;
+ transition: transform .2s;
+ width: $unit-3;
+ }
+
+ &:active {
+ &::-webkit-slider-thumb {
+ transform: scale(1.25);
+ }
+ &::-moz-range-thumb {
+ transform: scale(1.25);
+ }
+ &::-ms-thumb {
+ transform: scale(1.25);
+ }
+ }
+
+ &:disabled,
+ &.disabled {
+ &::-webkit-slider-thumb {
+ background: $gray-color-light;
+ transform: scale(1);
+ }
+ &::-moz-range-thumb {
+ background: $gray-color-light;
+ transform: scale(1);
+ }
+ &::-ms-thumb {
+ background: $gray-color-light;
+ transform: scale(1);
+ }
+ }
+
+ // Slider Track
+ &::-webkit-slider-runnable-track {
+ background: $bg-color-dark;
+ border-radius: $border-radius;
+ height: $unit-h;
+ width: 100%;
+ }
+ &::-moz-range-track {
+ background: $bg-color-dark;
+ border-radius: $border-radius;
+ height: $unit-h;
+ width: 100%;
+ }
+ &::-ms-track {
+ background: $bg-color-dark;
+ border-radius: $border-radius;
+ height: $unit-h;
+ width: 100%;
+ }
+ &::-ms-fill-lower {
+ background: $primary-color;
+ }
+}
diff --git a/sass/_steps.scss b/sass/_steps.scss
new file mode 100644
index 0000000..f642ff8
--- /dev/null
+++ b/sass/_steps.scss
@@ -0,0 +1,71 @@
+// Steps
+.step {
+ display: flex;
+ flex-wrap: nowrap;
+ list-style: none;
+ margin: $unit-1 0;
+ width: 100%;
+
+ .step-item {
+ flex: 1 1 0;
+ margin-top: 0;
+ min-height: 1rem;
+ text-align: center;
+ position: relative;
+
+ &:not(:first-child)::before {
+ background: $primary-color;
+ content: "";
+ height: 2px;
+ left: -50%;
+ position: absolute;
+ top: 9px;
+ width: 100%;
+ }
+
+ a {
+ color: $primary-color;
+ display: inline-block;
+ padding: 20px 10px 0;
+ text-decoration: none;
+
+ &::before {
+ background: $primary-color;
+ border: $border-width-lg solid $light-color;
+ border-radius: 50%;
+ content: "";
+ display: block;
+ height: $unit-3;
+ left: 50%;
+ position: absolute;
+ top: $unit-1;
+ transform: translateX(-50%);
+ width: $unit-3;
+ z-index: $zindex-0;
+ }
+ }
+
+ &.active {
+ a {
+ &::before {
+ background: $light-color;
+ border: $border-width-lg solid $primary-color;
+ }
+ }
+
+ & ~ .step-item {
+ &::before {
+ background: $border-color;
+ }
+
+ a {
+ color: $gray-color;
+
+ &::before {
+ background: $border-color;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/sass/_tables.scss b/sass/_tables.scss
new file mode 100644
index 0000000..656c03e
--- /dev/null
+++ b/sass/_tables.scss
@@ -0,0 +1,57 @@
+// Tables
+.table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ width: 100%;
+ @if $rtl == true {
+ text-align: right;
+ } @else {
+ text-align: left;
+ }
+
+ &.table-striped {
+ tbody {
+ tr:nth-of-type(odd) {
+ background: $bg-color;
+ }
+ }
+ }
+
+ &,
+ &.table-striped {
+ tbody {
+ tr {
+ &.active {
+ background: $bg-color-dark;
+ }
+ }
+ }
+ }
+
+ &.table-hover {
+ tbody {
+ tr {
+ &:hover {
+ background: $bg-color-dark;
+ }
+ }
+ }
+ }
+
+ // Scollable tables
+ &.table-scroll {
+ display: block;
+ overflow-x: auto;
+ padding-bottom: .75rem;
+ white-space: nowrap;
+ }
+
+ td,
+ th {
+ border-bottom: $border-width solid $border-color;
+ padding: $unit-3 $unit-2;
+ }
+ th {
+ border-bottom-width: $border-width-lg;
+ }
+}
diff --git a/sass/_tabs.scss b/sass/_tabs.scss
new file mode 100644
index 0000000..0dcbaf3
--- /dev/null
+++ b/sass/_tabs.scss
@@ -0,0 +1,66 @@
+// Tabs
+.tab {
+ align-items: center;
+ border-bottom: $border-width solid $border-color;
+ display: flex;
+ flex-wrap: wrap;
+ list-style: none;
+ margin: $unit-1 0 ($unit-1 - $border-width) 0;
+
+ .tab-item {
+ margin-top: 0;
+
+ a {
+ border-bottom: $border-width-lg solid transparent;
+ color: inherit;
+ display: block;
+ margin: 0 $unit-2 0 0;
+ padding: $unit-2 $unit-1 $unit-2 - $border-width-lg $unit-1;
+ text-decoration: none;
+ &:focus,
+ &:hover {
+ color: $link-color;
+ }
+ }
+ &.active a,
+ a.active {
+ border-bottom-color: $primary-color;
+ color: $link-color;
+ }
+
+ &.tab-action {
+ flex: 1 0 auto;
+ text-align: right;
+ }
+
+ .btn-clear {
+ margin-top: -$unit-1;
+ }
+ }
+
+ &.tab-block {
+ .tab-item {
+ flex: 1 0 0;
+ text-align: center;
+
+ a {
+ margin: 0;
+ }
+
+ .badge {
+ &[data-badge]::after {
+ position: absolute;
+ right: $unit-h;
+ top: $unit-h;
+ transform: translate(0, 0);
+ }
+ }
+ }
+ }
+
+ &:not(.tab-block) {
+ .badge {
+ padding-right: 0;
+ }
+ }
+}
diff --git a/sass/_tiles.scss b/sass/_tiles.scss
new file mode 100644
index 0000000..742bbae
--- /dev/null
+++ b/sass/_tiles.scss
@@ -0,0 +1,38 @@
+// Tiles
+.tile {
+ align-content: space-between;
+ align-items: flex-start;
+ display: flex;
+
+ .tile-icon,
+ .tile-action {
+ flex: 0 0 auto;
+ }
+ .tile-content {
+ flex: 1 1 auto;
+ &:not(:first-child) {
+ padding-left: $unit-2;
+ }
+ &:not(:last-child) {
+ padding-right: $unit-2;
+ }
+ }
+ .tile-title,
+ .tile-subtitle {
+ line-height: $line-height;
+ }
+
+ &.tile-centered {
+ align-items: center;
+
+ .tile-content {
+ overflow: hidden;
+ }
+
+ .tile-title,
+ .tile-subtitle {
+ @include text-ellipsis();
+ margin-bottom: 0;
+ }
+ }
+}
diff --git a/sass/_timelines.scss b/sass/_timelines.scss
new file mode 100644
index 0000000..c56746d
--- /dev/null
+++ b/sass/_timelines.scss
@@ -0,0 +1,56 @@
+// Timelines
+.timeline {
+ .timeline-item {
+ display: flex;
+ margin-bottom: $unit-6;
+ position: relative;
+ &::before {
+ background: $border-color;
+ content: "";
+ height: 100%;
+ left: 11px;
+ position: absolute;
+ top: $unit-6;
+ width: 2px;
+ }
+
+ .timeline-left {
+ flex: 0 0 auto;
+ }
+
+ .timeline-content {
+ flex: 1 1 auto;
+ padding: 2px 0 2px $layout-spacing-lg;
+ }
+
+ .timeline-icon {
+ align-items: center;
+ border-radius: 50%;
+ color: $light-color;
+ display: flex;
+ height: $unit-6;
+ justify-content: center;
+ text-align: center;
+ width: $unit-6;
+ &::before {
+ border: $border-width-lg solid $primary-color;
+ border-radius: 50%;
+ content: "";
+ display: block;
+ height: $unit-2;
+ left: $unit-2;
+ position: absolute;
+ top: $unit-2;
+ width: $unit-2;
+ }
+
+ &.icon-lg {
+ background: $primary-color;
+ line-height: $line-height;
+ &::before {
+ content: none;
+ }
+ }
+ }
+ }
+}
diff --git a/sass/_toasts.scss b/sass/_toasts.scss
new file mode 100644
index 0000000..ae5d8d5
--- /dev/null
+++ b/sass/_toasts.scss
@@ -0,0 +1,47 @@
+// Toasts
+.toast {
+ @include toast-variant($dark-color, $gray-color);
+ border-radius: $border-radius;
+ color: $black !important;
+ display: block;
+ padding: $layout-spacing;
+ width: 100%;
+
+ &.toast-primary {
+ @include toast-variant($gray-color-light, $primary-color);
+ }
+
+ &.toast-success {
+ @include toast-variant(lighten($success-color, 30%), $success-color);
+ }
+
+ &.toast-warning {
+ @include toast-variant(lighten($warning-color, 30%), $warning-color);
+ }
+
+ &.toast-error {
+ @include toast-variant(lighten($error-color, 60%), $error-color);
+ }
+
+ a {
+ color: $black !important;
+ text-decoration: underline;
+
+ &:focus,
+ &:hover,
+ &:active,
+ &.active {
+ opacity: .75;
+ }
+ }
+
+ .btn-clear {
+ margin: $unit-h;
+ }
+
+ p {
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+}
diff --git a/sass/_tooltips.scss b/sass/_tooltips.scss
new file mode 100644
index 0000000..8693b67
--- /dev/null
+++ b/sass/_tooltips.scss
@@ -0,0 +1,79 @@
+// Tooltips
+.tooltip {
+ position: relative;
+ &::after {
+ background: rgba($dark-color, .95);
+ border-radius: $border-radius;
+ bottom: 100%;
+ color: $light-color;
+ content: attr(data-tooltip);
+ display: block;
+ font-size: $font-size-sm;
+ left: 50%;
+ max-width: $control-width-sm;
+ opacity: 0;
+ overflow: hidden;
+ padding: $unit-1 $unit-2;
+ pointer-events: none;
+ position: absolute;
+ text-overflow: ellipsis;
+ transform: translate(-50%, $unit-2);
+ transition: opacity .2s, transform .2s;
+ white-space: pre;
+ z-index: $zindex-3;
+ }
+ &:focus,
+ &:hover {
+ &::after {
+ opacity: 1;
+ transform: translate(-50%, -$unit-1);
+ }
+ }
+ &[disabled],
+ &.disabled {
+ pointer-events: auto;
+ }
+
+ &.tooltip-right {
+ &::after {
+ bottom: 50%;
+ left: 100%;
+ transform: translate(-$unit-1, 50%);
+ }
+ &:focus,
+ &:hover {
+ &::after {
+ transform: translate($unit-1, 50%);
+ }
+ }
+ }
+
+ &.tooltip-bottom {
+ &::after {
+ bottom: auto;
+ top: 100%;
+ transform: translate(-50%, -$unit-2);
+ }
+ &:focus,
+ &:hover {
+ &::after {
+ transform: translate(-50%, $unit-1);
+ }
+ }
+ }
+
+ &.tooltip-left {
+ &::after {
+ bottom: 50%;
+ left: auto;
+ right: 100%;
+ transform: translate($unit-2, 50%);
+ }
+ &:focus,
+ &:hover {
+ &::after {
+ transform: translate(-$unit-1, 50%);
+ }
+ }
+ }
+}
diff --git a/sass/_typography.scss b/sass/_typography.scss
new file mode 100644
index 0000000..67707f8
--- /dev/null
+++ b/sass/_typography.scss
@@ -0,0 +1,165 @@
+// Typography
+// Headings
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 700;
+ margin-bottom: .5em;
+ margin-top: 0;
+ font-family: "Arial Black";
+
+ a {
+ text-decoration: none !important;
+ color: $primary-color !important;
+ }
+}
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-weight: 700;
+ font-family: "Arial Black";
+
+ a {
+ text-decoration: none !important;
+ color: $primary-color !important;
+ }
+}
+h1,
+.h1 {
+ font-size: 58px;
+ line-height: 87px;
+}
+h2,
+.h2 {
+ font-size: 45px;
+ line-height: 69px;
+}
+h3,
+.h3 {
+ font-size: 36px;
+ line-height: 56px;
+}
+h4,
+.h4 {
+ font-size: 28px;
+ line-height: 44px;
+}
+h5,
+.h5 {
+ font-size: 22px;
+ line-height: 35px;
+}
+h6,
+.h6 {
+ font-size: 17px;
+ line-height: 18px;
+}
+
+
+// Paragraphs
+p {
+ margin: 0 0 $line-height;
+ color: $black;
+}
+
+// Semantic text elements
+a,
+ins,
+u {
+ text-decoration-skip: ink edges;
+}
+
+abbr[title] {
+ border-bottom: $border-width dotted;
+ cursor: help;
+ text-decoration: none;
+}
+
+kbd {
+ @include label-base();
+ @include label-variant($light-color, $dark-color);
+ font-size: $font-size-sm;
+}
+
+mark {
+ @include label-variant($body-font-color, $highlight-color);
+ border-bottom: $unit-o solid darken($highlight-color, 15%);
+ border-radius: $border-radius;
+ padding: $unit-o $unit-h 0;
+}
+
+// Blockquote
+blockquote {
+ border-left: $border-width-lg solid $border-color;
+ background-color: lighten($gray-color-light, 3%);
+ margin-left: 0;
+ padding: $unit-2 $unit-4;
+
+ p:last-child {
+ margin-bottom: 0;
+ }
+}
+
+// Lists
+ul,
+ol {
+ margin: $unit-4 $unit-4 $unit-4 $unit-4;
+ background-color: lighten($gray-color-light, 3%);
+ padding: 0.5em;
+
+
+ ul,
+ ol {
+ margin: $unit-4 $unit-4 $unit-4 $unit-4;
+ }
+
+ li {
+ margin-top: $unit-2;
+ }
+}
+
+ul {
+ list-style: disc inside;
+
+ ul {
+ list-style-type: circle;
+ }
+}
+
+ol {
+ list-style: none;
+ counter-reset: high-contrast-counter;
+
+ ol {
+ list-style-type: lower-alpha;
+ }
+
+ li {
+ counter-increment: high-contrast-counter;
+ }
+
+ li::before {
+ content: "0" counter(high-contrast-counter) ".";
+ border-radius: $border-radius;
+ background-color: $black;
+ color: $snow;
+ padding: 3px;
+ margin-right: 0.3em;
+ }
+}
+
+dl {
+ dt {
+ font-weight: bold;
+ }
+ dd {
+ margin: $unit-2 0 $unit-4 0;
+ }
+}
+
diff --git a/sass/_utilities.scss b/sass/_utilities.scss
new file mode 100644
index 0000000..80f1e0b
--- /dev/null
+++ b/sass/_utilities.scss
@@ -0,0 +1,8 @@
+@import "utilities/colors";
+@import "utilities/cursors";
+@import "utilities/display";
+@import "utilities/divider";
+@import "utilities/loading";
+@import "utilities/position";
+@import "utilities/shapes";
+@import "utilities/text";
diff --git a/sass/_variables.scss b/sass/_variables.scss
new file mode 100644
index 0000000..788e0fe
--- /dev/null
+++ b/sass/_variables.scss
@@ -0,0 +1,126 @@
+// Core variables
+$version: "0.5.8";
+
+// Core features
+$rtl: false !default;
+
+// created by me just kind of randomly
+$black: hsl(309, 15%, 9%);
+$blue: hsl(216, 43%, 21%);
+$red: hsl(356, 71%, 25%);
+$yellow: hsl(42, 75%, 49%);
+$green: hsl(151, 50%, 55%);
+$snow: hsl(86, 23, 94);
+$white: #f8f8f2; // this comes from the code prism uses
+
+// Core colors
+$primary-color: $blue !default;
+$primary-color-dark: $black !default;
+$primary-color-light: hsl(181, 29%, 67%) !default;
+$secondary-color: hsl(218, 8%, 63%) !default;
+$secondary-color-dark: hsl(212, 20%, 31%) !default;
+$secondary-color-light: hsl(240, 11%, 78%) !default;
+
+// Gray colors
+$dark-color: darken($primary-color, 5%) !default;
+$light-color: lighten($snow, 3%) !default;
+$gray-color: lighten($blue, 55%) !default;
+$gray-color-dark: darken($gray-color, 30%) !default;
+$gray-color-light: lighten($gray-color, 18%) !default;
+
+$border-color: lighten($dark-color, 65%) !default;
+$border-color-dark: darken($border-color, 10%) !default;
+$border-color-light: lighten($border-color, 8%) !default;
+$bg-color: $gray-color-light !default;
+$bg-color-dark: darken($bg-color, 3%) !default;
+$bg-color-light: $light-color !default;
+
+// Control colors
+$success-color: darken($green, 5%) !default;
+$warning-color: $yellow !default;
+$error-color: $red !default;
+
+// Other colors
+$code-color: $snow !default;
+$highlight-color: #ffe9b3 !default;
+$body-bg: $bg-color-light !default;
+$body-font-color: lighten($dark-color, 5%) !default;
+$link-color: $primary-color !default;
+$link-color-dark: darken($red, 20%) !default;
+$link-color-light: lighten($link-color, 10%) !default;
+
+// Fonts
+// Credit: https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/
+$base-font-family: "Arial", !default;
+$header-font-family: "Arial Black", !default;
+$mono-font-family: “Roboto”, “Droid Sans”, “Helvetica Neue”, sans-serif, !default;
+$fallback-font-family: "Helvetica Neue", sans-serif !default;
+$body-font-family: $base-font-family, $fallback-font-family !default;
+
+// Unit sizes
+$unit-o: .1rem !default;
+$unit-h: .2rem !default;
+$unit-1: .3rem !default;
+$unit-2: .5rem !default;
+$unit-3: .7rem !default;
+$unit-4: .9rem !default;
+$unit-5: 1.1rem !default;
+$unit-6: 1.3rem !default;
+$unit-7: 1.5rem !default;
+$unit-8: 1.7rem !default;
+$unit-9: 1.9rem !default;
+$unit-10: 2.1rem !default;
+$unit-12: 2.5rem !default;
+$unit-16: 3.3rem !default;
+
+// Font sizes
+$html-font-size: 22px !default;
+$html-line-height: 35px !default;
+$font-size: 1rem !default;
+$font-size-sm: 0.9rem !default;
+$font-size-lg: 1.1rem !default;
+$line-height: 1.4rem !default;
+
+// Sizes
+$layout-spacing: $unit-2 !default;
+$layout-spacing-sm: $unit-1 !default;
+$layout-spacing-lg: $unit-4 !default;
+$layout-spacing-xl: $unit-6 !default;
+$border-radius: $unit-h !default;
+$border-width-sm: 1px !default;
+$border-width: $unit-o !default;
+$border-width-lg: $unit-h !default;
+$control-size: $unit-9 !default;
+$control-size-sm: $unit-7 !default;
+$control-size-lg: $unit-10 !default;
+$control-padding-x: $unit-2 !default;
+$control-padding-x-sm: $unit-2 * .75 !default;
+$control-padding-x-lg: $unit-2 * 1.5 !default;
+$control-padding-y: ($control-size - $line-height) / 2 - $border-width !default;
+$control-padding-y-sm: ($control-size-sm - $line-height) / 2 - $border-width !default;
+$control-padding-y-lg: ($control-size-lg - $line-height) / 2 - $border-width !default;
+$control-icon-size: 1rem !default;
+
+$control-width-xs: 180px !default;
+$control-width-sm: 320px !default;
+$control-width-md: 640px !default;
+$control-width-lg: 960px !default;
+$control-width-xl: 1280px !default;
+
+// Responsive breakpoints
+$size-xs: 480px !default;
+$size-sm: 600px !default;
+$size-md: 840px !default;
+$size-lg: 960px !default;
+$size-xl: 1257px !default;
+$size-2x: 1440px !default;
+
+$responsive-breakpoint: $size-xs !default;
+
+// Z-index
+$zindex-0: 1 !default;
+$zindex-1: 100 !default;
+$zindex-2: 200 !default;
+$zindex-3: 300 !default;
+$zindex-4: 400 !default;
+
diff --git a/sass/_viewer-360.scss b/sass/_viewer-360.scss
new file mode 100644
index 0000000..c1b8928
--- /dev/null
+++ b/sass/_viewer-360.scss
@@ -0,0 +1,34 @@
+// 360 Degree Viewer
+
+// Mixin: Viewer slider sizes
+@mixin viewer-slider-size($image-number: 36) {
+ @for $s from 1 through ($image-number) {
+ .viewer-slider[max='#{$image-number}'][value='#{$s}'] + .viewer-image {
+ background-position-y: percentage((($s)-1) * 1/(($image-number)-1));
+ }
+ }
+}
+
+.viewer-360 {
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+
+ // Copy and add more numbers if you need
+ @include viewer-slider-size(36);
+
+ .viewer-slider {
+ cursor: ew-resize;
+ margin: 1rem;
+ order: 2;
+ width: 60%;
+ }
+
+ .viewer-image {
+ background-position-y: 0;
+ background-repeat: no-repeat;
+ background-size: 100%;
+ max-width: 100%;
+ order: 1;
+ }
+}
\ No newline at end of file
diff --git a/sass/icons/_icons-action.scss b/sass/icons/_icons-action.scss
new file mode 100644
index 0000000..1b952ea
--- /dev/null
+++ b/sass/icons/_icons-action.scss
@@ -0,0 +1,315 @@
+// Icon resize
+.icon-resize-horiz,
+.icon-resize-vert {
+ &::before,
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-right: 0;
+ height: .45em;
+ width: .45em;
+ }
+ &::before {
+ transform: translate(-50%, -90%) rotate(45deg);
+ }
+ &::after {
+ transform: translate(-50%, -10%) rotate(225deg);
+ }
+}
+
+.icon-resize-horiz {
+ &::before {
+ transform: translate(-90%, -50%) rotate(-45deg);
+ }
+ &::after {
+ transform: translate(-10%, -50%) rotate(135deg);
+ }
+}
+
+// Icon more
+.icon-more-horiz,
+.icon-more-vert {
+ &::before {
+ background: currentColor;
+ box-shadow: -.4em 0, .4em 0;
+ border-radius: 50%;
+ height: 3px;
+ width: 3px;
+ }
+}
+
+.icon-more-vert {
+ &::before {
+ box-shadow: 0 -.4em, 0 .4em;
+ }
+}
+
+// Icon plus, minus, cross
+.icon-plus,
+.icon-minus,
+.icon-cross {
+ &::before {
+ background: currentColor;
+ height: $icon-border-width;
+ width: 100%;
+ }
+}
+
+.icon-plus,
+.icon-cross {
+ &::after {
+ background: currentColor;
+ height: 100%;
+ width: $icon-border-width;
+ }
+}
+
+.icon-cross {
+ &::before {
+ width: 100%;
+ }
+ &::after {
+ height: 100%;
+ }
+ &::before,
+ &::after {
+ transform: translate(-50%, -50%) rotate(45deg);
+ }
+}
+
+// Icon check
+.icon-check {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-right: 0;
+ border-top: 0;
+ height: .5em;
+ width: .9em;
+ transform: translate(-50%, -75%) rotate(-45deg);
+ }
+}
+
+// Icon stop
+.icon-stop {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ &::before {
+ background: currentColor;
+ height: $icon-border-width;
+ transform: translate(-50%, -50%) rotate(45deg);
+ width: 1em;
+ }
+}
+
+// Icon shutdown
+.icon-shutdown {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ border-top-color: transparent;
+ &::before {
+ background: currentColor;
+ content: "";
+ height: .5em;
+ top: .1em;
+ width: $icon-border-width;
+ }
+}
+
+// Icon refresh
+.icon-refresh {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ border-right-color: transparent;
+ height: 1em;
+ width: 1em;
+ }
+ &::after {
+ border: .2em solid currentColor;
+ border-top-color: transparent;
+ border-left-color: transparent;
+ height: 0;
+ left: 80%;
+ top: 20%;
+ width: 0;
+ }
+}
+
+// Icon search
+.icon-search {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ height: .75em;
+ left: 5%;
+ top: 5%;
+ transform: translate(0, 0) rotate(45deg);
+ width: .75em;
+ }
+ &::after {
+ background: currentColor;
+ height: $icon-border-width;
+ left: 80%;
+ top: 80%;
+ transform: translate(-50%, -50%) rotate(45deg);
+ width: .4em;
+ }
+}
+
+// Icon edit
+.icon-edit {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ height: .4em;
+ transform: translate(-40%, -60%) rotate(-45deg);
+ width: .85em;
+ }
+ &::after {
+ border: .15em solid currentColor;
+ border-top-color: transparent;
+ border-right-color: transparent;
+ height: 0;
+ left: 5%;
+ top: 95%;
+ transform: translate(0, -100%);
+ width: 0;
+ }
+}
+
+// Icon delete
+.icon-delete {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-bottom-left-radius: $border-radius;
+ border-bottom-right-radius: $border-radius;
+ border-top: 0;
+ height: .75em;
+ top: 60%;
+ width: .75em;
+ }
+ &::after {
+ background: currentColor;
+ box-shadow: -.25em .2em, .25em .2em;
+ height: $icon-border-width;
+ top: $icon-border-width/2;
+ width: .5em;
+ }
+}
+
+// Icon share
+.icon-share {
+ border: $icon-border-width solid currentColor;
+ border-radius: $border-radius;
+ border-right: 0;
+ border-top: 0;
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-left: 0;
+ border-top: 0;
+ height: .4em;
+ left: 100%;
+ top: .25em;
+ transform: translate(-125%, -50%) rotate(-45deg);
+ width: .4em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-right: 0;
+ border-radius: 75% 0;
+ height: .5em;
+ width: .6em;
+ }
+}
+
+// Icon flag
+.icon-flag {
+ &::before {
+ background: currentColor;
+ height: 1em;
+ left: 15%;
+ width: $icon-border-width;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom-right-radius: $border-radius;
+ border-left: 0;
+ border-top-right-radius: $border-radius;
+ height: .65em;
+ top: 35%;
+ left: 60%;
+ width: .8em;
+ }
+}
+
+// Icon bookmark
+.icon-bookmark {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-top-left-radius: $border-radius;
+ border-top-right-radius: $border-radius;
+ height: .9em;
+ width: .8em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-left: 0;
+ border-radius: $border-radius;
+ height: .5em;
+ transform: translate(-50%, 35%) rotate(-45deg) skew(15deg, 15deg);
+ width: .5em;
+ }
+}
+
+// Icon download & upload
+.icon-download,
+.icon-upload {
+ border-bottom: $icon-border-width solid currentColor;
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-right: 0;
+ height: .5em;
+ width: .5em;
+ transform: translate(-50%, -60%) rotate(-135deg);
+ }
+ &::after {
+ background: currentColor;
+ height: .6em;
+ top: 40%;
+ width: $icon-border-width;
+ }
+}
+
+.icon-upload {
+ &::before {
+ transform: translate(-50%, -60%) rotate(45deg);
+ }
+ &::after {
+ top: 50%;
+ }
+}
+
+// Icon copy
+.icon-copy {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: $border-radius;
+ border-right: 0;
+ border-bottom: 0;
+ height: .8em;
+ left: 40%;
+ top: 35%;
+ width: .8em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-radius: $border-radius;
+ height: .8em;
+ left: 60%;
+ top: 60%;
+ width: .8em;
+ }
+}
\ No newline at end of file
diff --git a/sass/icons/_icons-core.scss b/sass/icons/_icons-core.scss
new file mode 100644
index 0000000..9a67ae4
--- /dev/null
+++ b/sass/icons/_icons-core.scss
@@ -0,0 +1,54 @@
+// Icon variables
+$icon-border-width: $border-width-lg;
+$icon-prefix: "icon";
+
+// Icon base style
+.#{$icon-prefix} {
+ box-sizing: border-box;
+ display: inline-block;
+ font-size: inherit;
+ font-style: normal;
+ height: 1em;
+ position: relative;
+ text-indent: -9999px;
+ vertical-align: middle;
+ width: 1em;
+ &::before,
+ &::after {
+ content: "";
+ display: block;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ // Icon sizes
+ &.icon-2x {
+ font-size: 1.6rem;
+ }
+
+ &.icon-3x {
+ font-size: 2.4rem;
+ }
+
+ &.icon-4x {
+ font-size: 3.2rem;
+ }
+}
+
+// Component icon support
+.accordion,
+.btn,
+.toast,
+.menu {
+ .#{$icon-prefix} {
+ vertical-align: -10%;
+ }
+}
+
+.btn-lg {
+ .#{$icon-prefix} {
+ vertical-align: -15%;
+ }
+}
diff --git a/sass/icons/_icons-navigation.scss b/sass/icons/_icons-navigation.scss
new file mode 100644
index 0000000..92ab231
--- /dev/null
+++ b/sass/icons/_icons-navigation.scss
@@ -0,0 +1,127 @@
+// Icon arrows
+.icon-arrow-down,
+.icon-arrow-left,
+.icon-arrow-right,
+.icon-arrow-up,
+.icon-downward,
+.icon-back,
+.icon-forward,
+.icon-upward {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-right: 0;
+ height: .65em;
+ width: .65em;
+ }
+}
+
+.icon-arrow-down {
+ &::before {
+ transform: translate(-50%, -75%) rotate(225deg);
+ }
+}
+
+.icon-arrow-left {
+ &::before {
+ transform: translate(-25%, -50%) rotate(-45deg);
+ }
+}
+
+.icon-arrow-right {
+ &::before {
+ transform: translate(-75%, -50%) rotate(135deg);
+ }
+}
+
+.icon-arrow-up {
+ &::before {
+ transform: translate(-50%, -25%) rotate(45deg);
+ }
+}
+
+.icon-back,
+.icon-forward {
+ &::after {
+ background: currentColor;
+ height: $icon-border-width;
+ width: .8em;
+ }
+}
+
+.icon-downward,
+.icon-upward {
+ &::after {
+ background: currentColor;
+ height: .8em;
+ width: $icon-border-width;
+ }
+}
+
+.icon-back {
+ &::after {
+ left: 55%;
+ }
+ &::before {
+ transform: translate(-50%, -50%) rotate(-45deg);
+ }
+}
+
+.icon-downward {
+ &::after {
+ top: 45%;
+ }
+ &::before {
+ transform: translate(-50%, -50%) rotate(-135deg);
+ }
+}
+
+.icon-forward {
+ &::after {
+ left: 45%;
+ }
+ &::before {
+ transform: translate(-50%, -50%) rotate(135deg);
+ }
+}
+
+.icon-upward {
+ &::after {
+ top: 55%;
+ }
+ &::before {
+ transform: translate(-50%, -50%) rotate(45deg);
+ }
+}
+
+// Icon caret
+.icon-caret {
+ &::before {
+ border-top: .3em solid currentColor;
+ border-right: .3em solid transparent;
+ border-left: .3em solid transparent;
+ height: 0;
+ transform: translate(-50%, -25%);
+ width: 0;
+ }
+}
+
+// Icon menu
+.icon-menu {
+ &::before {
+ background: currentColor;
+ box-shadow: 0 -.35em, 0 .35em;
+ height: $icon-border-width;
+ width: 100%;
+ }
+}
+
+// Icon apps
+.icon-apps {
+ &::before {
+ background: currentColor;
+ box-shadow: -.35em -.35em, -.35em 0, -.35em .35em, 0 -.35em, 0 .35em, .35em -.35em, .35em 0, .35em .35em;
+ height: 3px;
+ width: 3px;
+ }
+}
diff --git a/sass/icons/_icons-object.scss b/sass/icons/_icons-object.scss
new file mode 100644
index 0000000..00597d8
--- /dev/null
+++ b/sass/icons/_icons-object.scss
@@ -0,0 +1,161 @@
+// Icon time
+.icon-time {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ &::before {
+ background: currentColor;
+ height: .4em;
+ transform: translate(-50%, -75%);
+ width: $icon-border-width;
+ }
+ &::after {
+ background: currentColor;
+ height: .3em;
+ transform: translate(-50%, -75%) rotate(90deg);
+ transform-origin: 50% 90%;
+ width: $icon-border-width;
+ }
+}
+
+// Icon mail
+.icon-mail {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: $border-radius;
+ height: .8em;
+ width: 1em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-right: 0;
+ border-top: 0;
+ height: .5em;
+ transform: translate(-50%, -90%) rotate(-45deg) skew(10deg, 10deg);
+ width: .5em;
+ }
+}
+
+// Icon people
+.icon-people {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ height: .45em;
+ top: 25%;
+ width: .45em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50% 50% 0 0;
+ height: .4em;
+ top: 75%;
+ width: .9em;
+ }
+}
+
+// Icon message
+.icon-message {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-radius: $border-radius;
+ border-right: 0;
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-bottom-right-radius: $border-radius;
+ border-left: 0;
+ border-top: 0;
+ height: .8em;
+ left: 65%;
+ top: 40%;
+ width: .7em;
+ }
+ &::after {
+ background: currentColor;
+ border-radius: $border-radius;
+ height: .3em;
+ left: 10%;
+ top: 100%;
+ transform: translate(0, -90%) rotate(45deg);
+ width: $icon-border-width;
+ }
+}
+
+// Icon photo
+.icon-photo {
+ border: $icon-border-width solid currentColor;
+ border-radius: $border-radius;
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ height: .25em;
+ left: 35%;
+ top: 35%;
+ width: .25em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom: 0;
+ border-left: 0;
+ height: .5em;
+ left: 60%;
+ transform: translate(-50%, 25%) rotate(-45deg);
+ width: .5em;
+ }
+}
+
+// Icon link
+.icon-link {
+ &::before,
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-radius: 5em 0 0 5em;
+ border-right: 0;
+ height: .5em;
+ width: .75em;
+ }
+ &::before {
+ transform: translate(-70%, -45%) rotate(-45deg);
+ }
+ &::after {
+ transform: translate(-30%, -55%) rotate(135deg);
+ }
+}
+
+// Icon location
+.icon-location {
+ &::before {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50% 50% 50% 0;
+ height: .8em;
+ transform: translate(-50%, -60%) rotate(-45deg);
+ width: .8em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ height: .2em;
+ transform: translate(-50%, -80%);
+ width: .2em;
+ }
+}
+
+// Icon emoji
+.icon-emoji {
+ border: $icon-border-width solid currentColor;
+ border-radius: 50%;
+ &::before {
+ border-radius: 50%;
+ box-shadow: -.17em -.1em, .17em -.1em;
+ height: .15em;
+ width: .15em;
+ }
+ &::after {
+ border: $icon-border-width solid currentColor;
+ border-bottom-color: transparent;
+ border-radius: 50%;
+ border-right-color: transparent;
+ height: .5em;
+ transform: translate(-50%, -40%) rotate(-135deg);
+ width: .5em;
+ }
+}
diff --git a/sass/mixins/_avatar.scss b/sass/mixins/_avatar.scss
new file mode 100644
index 0000000..14617ad
--- /dev/null
+++ b/sass/mixins/_avatar.scss
@@ -0,0 +1,6 @@
+// Avatar mixin
+@mixin avatar-base($size: $unit-8) {
+ font-size: $size / 2;
+ height: $size;
+ width: $size;
+}
diff --git a/sass/mixins/_button.scss b/sass/mixins/_button.scss
new file mode 100644
index 0000000..c90a94b
--- /dev/null
+++ b/sass/mixins/_button.scss
@@ -0,0 +1,54 @@
+// Button variant mixin
+@mixin button-variant($color: $primary-color) {
+ background: $color;
+ border-color: darken($color, 3%);
+ color: $light-color;
+ &:focus {
+ @include control-shadow($color);
+ }
+ &:focus,
+ &:hover {
+ background: darken($color, 2%);
+ border-color: darken($color, 5%);
+ color: $light-color;
+ }
+ &:active,
+ &.active {
+ background: darken($color, 7%);
+ border-color: darken($color, 10%);
+ color: $light-color;
+ }
+ &.loading {
+ &::after {
+ border-bottom-color: $light-color;
+ border-left-color: $light-color;
+ }
+ }
+}
+
+@mixin button-outline-variant($color: $primary-color) {
+ background: $light-color;
+ border-color: $color;
+ color: $color;
+ &:focus {
+ @include control-shadow($color);
+ }
+ &:focus,
+ &:hover {
+ background: lighten($color, 50%);
+ border-color: darken($color, 2%);
+ color: $color;
+ }
+ &:active,
+ &.active {
+ background: $color;
+ border-color: darken($color, 5%);
+ color: $light-color;
+ }
+ &.loading {
+ &::after {
+ border-bottom-color: $color;
+ border-left-color: $color;
+ }
+ }
+}
diff --git a/sass/mixins/_clearfix.scss b/sass/mixins/_clearfix.scss
new file mode 100644
index 0000000..db6895f
--- /dev/null
+++ b/sass/mixins/_clearfix.scss
@@ -0,0 +1,8 @@
+// Clearfix mixin
+@mixin clearfix() {
+ &::after {
+ clear: both;
+ content: "";
+ display: table;
+ }
+}
diff --git a/sass/mixins/_color.scss b/sass/mixins/_color.scss
new file mode 100644
index 0000000..697d0c3
--- /dev/null
+++ b/sass/mixins/_color.scss
@@ -0,0 +1,27 @@
+// Background color utility mixin
+@mixin bg-color-variant($name: ".bg-primary", $color: $primary-color) {
+ #{$name} {
+ background: $color !important;
+
+ @if (lightness($color) < 60) {
+ color: $light-color;
+ }
+ }
+}
+
+// Text color utility mixin
+@mixin text-color-variant($name: ".text-primary", $color: $primary-color) {
+ #{$name} {
+ color: $color !important;
+ }
+
+ a#{$name} {
+ &:focus,
+ &:hover {
+ color: darken($color, 5%);
+ }
+ &:visited {
+ color: lighten($color, 5%);
+ }
+ }
+}
diff --git a/sass/mixins/_label.scss b/sass/mixins/_label.scss
new file mode 100644
index 0000000..1574f02
--- /dev/null
+++ b/sass/mixins/_label.scss
@@ -0,0 +1,11 @@
+// Label base style
+@mixin label-base() {
+ border-radius: $border-radius;
+ line-height: 1.25;
+ padding: .1rem .2rem;
+}
+
+@mixin label-variant($color: $light-color, $bg-color: $primary-color) {
+ background: $bg-color;
+ color: $color;
+}
diff --git a/sass/mixins/_position.scss b/sass/mixins/_position.scss
new file mode 100644
index 0000000..98b5cfc
--- /dev/null
+++ b/sass/mixins/_position.scss
@@ -0,0 +1,65 @@
+// Margin utility mixin
+@mixin margin-variant($id: 1, $size: $unit-1) {
+ .m-#{$id} {
+ margin: $size !important;
+ }
+
+ .mb-#{$id} {
+ margin-bottom: $size !important;
+ }
+
+ .ml-#{$id} {
+ margin-left: $size !important;
+ }
+
+ .mr-#{$id} {
+ margin-right: $size !important;
+ }
+
+ .mt-#{$id} {
+ margin-top: $size !important;
+ }
+
+ .mx-#{$id} {
+ margin-left: $size !important;
+ margin-right: $size !important;
+ }
+
+ .my-#{$id} {
+ margin-bottom: $size !important;
+ margin-top: $size !important;
+ }
+}
+
+// Padding utility mixin
+@mixin padding-variant($id: 1, $size: $unit-1) {
+ .p-#{$id} {
+ padding: $size !important;
+ }
+
+ .pb-#{$id} {
+ padding-bottom: $size !important;
+ }
+
+ .pl-#{$id} {
+ padding-left: $size !important;
+ }
+
+ .pr-#{$id} {
+ padding-right: $size !important;
+ }
+
+ .pt-#{$id} {
+ padding-top: $size !important;
+ }
+
+ .px-#{$id} {
+ padding-left: $size !important;
+ padding-right: $size !important;
+ }
+
+ .py-#{$id} {
+ padding-bottom: $size !important;
+ padding-top: $size !important;
+ }
+}
diff --git a/sass/mixins/_shadow.scss b/sass/mixins/_shadow.scss
new file mode 100644
index 0000000..7984449
--- /dev/null
+++ b/sass/mixins/_shadow.scss
@@ -0,0 +1,9 @@
+// Component focus shadow
+@mixin control-shadow($color: $primary-color) {
+ box-shadow: 0 0 0 .1rem rgba($color, .2);
+}
+
+// Shadow mixin
+@mixin shadow-variant($offset) {
+ box-shadow: 0 $offset ($offset + .05rem) * 2 rgba($dark-color, .3);
+}
diff --git a/sass/mixins/_text.scss b/sass/mixins/_text.scss
new file mode 100644
index 0000000..97dc99d
--- /dev/null
+++ b/sass/mixins/_text.scss
@@ -0,0 +1,6 @@
+// Text Ellipsis
+@mixin text-ellipsis() {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
diff --git a/sass/mixins/_toast.scss b/sass/mixins/_toast.scss
new file mode 100644
index 0000000..74e8f3e
--- /dev/null
+++ b/sass/mixins/_toast.scss
@@ -0,0 +1,5 @@
+// Toast variant mixin
+@mixin toast-variant($color: $dark-color, $border: $red) {
+ background: rgba($color, .95);
+ border: $border-width solid $border;
+}
diff --git a/sass/pattern.scss b/sass/pattern.scss
new file mode 100644
index 0000000..9919f9b
--- /dev/null
+++ b/sass/pattern.scss
@@ -0,0 +1,206 @@
+/* from https://bansal.io/pattern-css */
+
+$pattern-prefix : 'pattern' !default;
+
+$pattern-sizes : (sm:10px,
+ md:25px,
+ lg:50px,
+ xl:100px,
+) !default;
+
+$pattern-list: ('checks',
+ 'grid',
+ 'grid',
+ 'dots',
+ 'cross-dots',
+ 'vertical-lines',
+ 'horizontal-lines',
+ 'diagonal-lines',
+ 'vertical-stripes',
+ 'horizontal-stripes',
+ 'diagonal-stripes',
+ 'triangles',
+ 'zigzag'
+) !default;
+
+$dots : (sm:.5px,
+ md:1px,
+ lg:1.5px,
+ xl:2px) !default;
+
+// .bg-checks-{sm, md, lg, xl}
+@if index($pattern-list, 'checks') {
+
+ @each $name,
+ $size in $pattern-sizes {
+ .#{$pattern-prefix}-checks-#{$name} {
+ background-image:
+ repeating-linear-gradient(45deg, currentColor 25%, transparent 25%, transparent 75%, currentColor 75%, currentColor),
+ repeating-linear-gradient(45deg, currentColor 25%, transparent 25%, transparent 75%, currentColor 75%, currentColor);
+ background-position: 0 0,
+ #{$size} #{$size};
+ background-size: calc(2 * #{$size}) calc(2 * #{$size});
+ }
+ }
+}
+
+// .bg-grid-{sm, md, lg, xl}
+@if index($pattern-list, 'grid') {
+
+ @each $name,
+ $size in $pattern-sizes {
+ .#{$pattern-prefix}-grid-#{$name} {
+ background-image:
+ linear-gradient(currentColor 1px, transparent 1px),
+ linear-gradient(to right, currentColor 1px, transparent 1px);
+ background-size: #{$size} #{$size};
+ // background-position: calc(-0.5 * #{$size}) calc(-0.5 * #{$size});
+ }
+ }
+}
+
+// .bg-dots-{sm, md, lg, xl}
+@if index($pattern-list, 'dots') {
+
+ @each $name,
+ $size in $dots {
+ .#{$pattern-prefix}-dots-#{$name} {
+ background-image: radial-gradient(currentColor #{$size}, transparent #{$size});
+ background-size: calc(10 * #{$size}) calc(10 * #{$size});
+ }
+ }
+}
+
+// .bg-cross-dots-{sm, md, lg, xl}
+@if index($pattern-list, 'cross-dots') {
+
+ @each $name,
+ $size in $dots {
+ .#{$pattern-prefix}-cross-dots-#{$name} {
+ background-image: radial-gradient(currentColor #{$size}, transparent #{$size}),
+ radial-gradient(currentColor #{$size}, transparent #{$size});
+ background-size: calc(20 * #{$size}) calc(20 * #{$size});
+ background-position: 0 0,
+ calc(10 * #{$size}) calc(10 * #{$size});
+ }
+ }
+}
+
+@each $name,
+$size in $pattern-sizes {
+
+ // .bg-vertical-lines-{sm, md, lg, xl}
+ @if index($pattern-list, 'vertical-lines') {
+ .#{$pattern-prefix}-vertical-lines-#{$name} {
+ background-image: repeating-linear-gradient(to right,
+ currentColor,
+ currentColor 1px,
+ transparent 1px,
+ transparent);
+ background-size: #{$size} #{$size};
+ }
+ }
+
+ // .bg-horizontal-lines-{sm, md, lg, xl}
+ @if index($pattern-list, 'horizontal-lines') {
+ .#{$pattern-prefix}-horizontal-lines-#{$name} {
+ background-image: repeating-linear-gradient(0deg,
+ currentColor,
+ currentColor 1px,
+ transparent 1px,
+ transparent);
+ background-size: #{$size} #{$size};
+ }
+ }
+
+ // .bg-diagonal-lines-{sm, md, lg, xl}
+ @if index($pattern-list, 'diagonal-lines') {
+ .#{$pattern-prefix}-diagonal-lines-#{$name} {
+ background-image: repeating-linear-gradient(45deg,
+ currentColor 0,
+ currentColor 1px,
+ transparent 0,
+ transparent 50%);
+ background-size: #{$size} #{$size};
+ }
+ }
+}
+
+
+@each $name,
+$size in $pattern-sizes {
+
+ // .bg-vertical-stripes-{sm, md, lg, xl}
+ @if index($pattern-list, 'vertical-stripes') {
+ .#{$pattern-prefix}-vertical-stripes-#{$name} {
+ background-image: linear-gradient(90deg, transparent 50%, currentColor 50%);
+ background-size: #{$size} #{$size};
+ }
+ }
+
+ // .bg-horizontal-stripes-{sm, md, lg, xl}
+ @if index($pattern-list, 'horizontal-stripes') {
+ .#{$pattern-prefix}-horizontal-stripes-#{$name} {
+ background-image: linear-gradient(0deg, transparent 50%, currentColor 50%);
+ background-size: #{$size} #{$size};
+ }
+ }
+
+ // .bg-diagonal-stripes-{sm, md, lg, xl}
+ @if index($pattern-list, 'diagonal-stripes') {
+ .#{$pattern-prefix}-diagonal-stripes-#{$name} {
+ background: repeating-linear-gradient(45deg,
+ transparent,
+ transparent #{$size},
+ currentColor #{$size},
+ currentColor calc(2 * #{$size}));
+ }
+ }
+}
+
+// .bg-zigzag-{sm, md, lg, xl}
+@if index($pattern-list, 'zigzag') {
+
+ @each $name,
+ $size in $pattern-sizes {
+ .#{$pattern-prefix}-zigzag-#{$name} {
+ background: linear-gradient(135deg, currentColor 25%, transparent 25%) -#{$size} 0,
+ linear-gradient(225deg, currentColor 25%, transparent 25%) -#{$size} 0,
+ linear-gradient(315deg, currentColor 25%, transparent 25%),
+ linear-gradient(45deg, currentColor 25%, transparent 25%);
+ background-size: calc(2 * #{$size}) calc(2 * #{$size});
+ }
+ }
+}
+
+// .bg-triangles-{sm, md, lg, xl}
+@if index($pattern-list, 'triangles') {
+
+ @each $name,
+ $size in $pattern-sizes {
+ .#{$pattern-prefix}-triangles-#{$name} {
+ background-image: linear-gradient(45deg,
+ currentColor 50%,
+ transparent 50%);
+ background-size: #{$size} #{$size};
+ }
+ }
+}
+
+// .text-pattern
+.text-pattern {
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+// Width and Height
+@each $name,
+$size in $pattern-sizes {
+ .#{$pattern-prefix}-w-#{$name} {
+ width: $size;
+ }
+
+ .#{$pattern-prefix}-h-#{$name} {
+ height: $size;
+ }
+}
diff --git a/sass/spectre-exp.scss b/sass/spectre-exp.scss
new file mode 100644
index 0000000..33ed3fe
--- /dev/null
+++ b/sass/spectre-exp.scss
@@ -0,0 +1,18 @@
+// Variables and mixins
+@import "variables";
+@import "mixins";
+
+/*! Spectre.css Experimentals v#{$version} | MIT License | github.com/picturepan2/spectre */
+// Experimentals
+@import "autocomplete";
+@import "calendars";
+@import "carousels";
+@import "comparison-sliders";
+@import "filters";
+@import "meters";
+@import "off-canvas";
+@import "parallax";
+@import "progress";
+@import "sliders";
+@import "timelines";
+@import "viewer-360";
diff --git a/sass/spectre-icons.scss b/sass/spectre-icons.scss
new file mode 100644
index 0000000..383624e
--- /dev/null
+++ b/sass/spectre-icons.scss
@@ -0,0 +1,10 @@
+// Variables and mixins
+@import "variables";
+@import "mixins";
+
+/*! Spectre.css Icons v#{$version} | MIT License | github.com/picturepan2/spectre */
+// Icons
+@import "icons/icons-core";
+@import "icons/icons-navigation";
+@import "icons/icons-action";
+@import "icons/icons-object";
diff --git a/sass/spectre.scss b/sass/spectre.scss
new file mode 100644
index 0000000..407d7fe
--- /dev/null
+++ b/sass/spectre.scss
@@ -0,0 +1,48 @@
+// Variables and mixins
+@import "variables";
+@import "mixins";
+
+/*! Spectre.css v#{$version} | MIT License | github.com/picturepan2/spectre */
+// Reset and dependencies
+@import "normalize";
+@import "base";
+
+// Elements
+@import "typography";
+@import "tables";
+@import "buttons";
+@import "forms";
+@import "labels";
+@import "codes";
+@import "media";
+
+// Layout
+@import "layout";
+@import "hero";
+@import "navbar";
+
+// Components
+@import "accordions";
+@import "avatars";
+@import "badges";
+@import "breadcrumbs";
+@import "bars";
+@import "cards";
+@import "chips";
+@import "dropdowns";
+@import "empty";
+@import "menus";
+@import "modals";
+@import "navs";
+@import "pagination";
+@import "panels";
+@import "popovers";
+@import "steps";
+@import "tabs";
+@import "tiles";
+@import "toasts";
+@import "tooltips";
+
+// Utility classes
+@import "animations";
+@import "utilities";
diff --git a/sass/utilities/_colors.scss b/sass/utilities/_colors.scss
new file mode 100644
index 0000000..5e5bec2
--- /dev/null
+++ b/sass/utilities/_colors.scss
@@ -0,0 +1,37 @@
+// Text colors
+@include text-color-variant(".text-primary", $primary-color);
+
+@include text-color-variant(".text-secondary", $secondary-color-dark);
+
+@include text-color-variant(".text-gray", $gray-color);
+
+@include text-color-variant(".text-gray-dark", $gray-color-dark);
+
+@include text-color-variant(".text-light", $light-color);
+
+@include text-color-variant(".text-dark", $body-font-color);
+
+@include text-color-variant(".text-success", $success-color);
+
+@include text-color-variant(".text-warning", $warning-color);
+
+@include text-color-variant(".text-error", $error-color);
+
+// Background colors
+@include bg-color-variant(".bg-primary", $primary-color);
+
+@include bg-color-variant(".bg-secondary", $secondary-color);
+
+@include bg-color-variant(".bg-dark", $dark-color);
+
+@include bg-color-variant(".bg-gray", $bg-color);
+
+@include bg-color-variant(".bg-light-gray", $gray-color-light);
+
+@include bg-color-variant(".bg-dark-gray", $bg-color-dark);
+
+@include bg-color-variant(".bg-success", $success-color);
+
+@include bg-color-variant(".bg-warning", $warning-color);
+
+@include bg-color-variant(".bg-error", $error-color);
diff --git a/sass/utilities/_cursors.scss b/sass/utilities/_cursors.scss
new file mode 100644
index 0000000..367fe84
--- /dev/null
+++ b/sass/utilities/_cursors.scss
@@ -0,0 +1,30 @@
+// Cursors
+.c-hand {
+ cursor: pointer;
+}
+
+.c-move {
+ cursor: move;
+}
+
+.c-zoom-in {
+ cursor: zoom-in;
+}
+
+.c-zoom-out {
+ cursor: zoom-out;
+}
+
+.c-not-allowed {
+ cursor: not-allowed;
+}
+
+.c-auto {
+ cursor: auto;
+}
+
+
+.clickable {
+ cursor: pointer;
+}
+
diff --git a/sass/utilities/_display.scss b/sass/utilities/_display.scss
new file mode 100644
index 0000000..c6248e0
--- /dev/null
+++ b/sass/utilities/_display.scss
@@ -0,0 +1,44 @@
+// Display
+.d-block {
+ display: block;
+}
+.d-inline {
+ display: inline;
+}
+.d-inline-block {
+ display: inline-block;
+}
+.d-flex {
+ display: flex;
+}
+.d-inline-flex {
+ display: inline-flex;
+}
+.d-none,
+.d-hide {
+ display: none !important;
+}
+.d-visible {
+ visibility: visible;
+}
+.d-invisible {
+ visibility: hidden;
+}
+.text-hide {
+ background: transparent;
+ border: 0;
+ color: transparent;
+ font-size: 0;
+ line-height: 0;
+ text-shadow: none;
+}
+.text-assistive {
+ border: 0;
+ clip: rect(0,0,0,0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
diff --git a/sass/utilities/_divider.scss b/sass/utilities/_divider.scss
new file mode 100644
index 0000000..e6c09d2
--- /dev/null
+++ b/sass/utilities/_divider.scss
@@ -0,0 +1,50 @@
+// Divider
+.divider,
+.divider-vert {
+ display: block;
+ position: relative;
+
+ &[data-content]::after {
+ background: $bg-color-light;
+ color: $gray-color;
+ content: attr(data-content);
+ display: inline-block;
+ font-size: $font-size-sm;
+ padding: 0 $unit-2;
+ transform: translateY(-$font-size-sm + $border-width);
+ }
+}
+
+.divider {
+ border-top: $border-width solid $border-color-light;
+ height: $border-width;
+ margin: $unit-2 0;
+
+ &[data-content] {
+ margin: $unit-4 0;
+ }
+}
+
+.divider-vert {
+ display: block;
+ padding: $unit-4;
+
+ &::before {
+ border-left: $border-width solid $border-color;
+ bottom: $unit-2;
+ content: "";
+ display: block;
+ left: 50%;
+ position: absolute;
+ top: $unit-2;
+ transform: translateX(-50%);
+ }
+
+ &[data-content]::after {
+ left: 50%;
+ padding: $unit-1 0;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+}
diff --git a/sass/utilities/_loading.scss b/sass/utilities/_loading.scss
new file mode 100644
index 0000000..1b4ea60
--- /dev/null
+++ b/sass/utilities/_loading.scss
@@ -0,0 +1,34 @@
+// Loading
+.loading {
+ color: transparent !important;
+ min-height: $unit-4;
+ pointer-events: none;
+ position: relative;
+ &::after {
+ animation: loading 500ms infinite linear;
+ border: $border-width-lg solid $primary-color;
+ border-radius: 50%;
+ border-right-color: transparent;
+ border-top-color: transparent;
+ content: "";
+ display: block;
+ height: $unit-4;
+ left: 50%;
+ margin-left: -$unit-2;
+ margin-top: -$unit-2;
+ position: absolute;
+ top: 50%;
+ width: $unit-4;
+ z-index: $zindex-0;
+ }
+
+ &.loading-lg {
+ min-height: $unit-10;
+ &::after {
+ height: $unit-8;
+ margin-left: -$unit-4;
+ margin-top: -$unit-4;
+ width: $unit-8;
+ }
+ }
+}
diff --git a/sass/utilities/_position.scss b/sass/utilities/_position.scss
new file mode 100644
index 0000000..c1a7f75
--- /dev/null
+++ b/sass/utilities/_position.scss
@@ -0,0 +1,54 @@
+// Position
+.clearfix {
+ @include clearfix();
+}
+
+.float-left {
+ float: left !important;
+}
+
+.float-right {
+ float: right !important;
+}
+
+.p-relative {
+ position: relative !important;
+}
+
+.p-absolute {
+ position: absolute !important;
+}
+
+.p-fixed {
+ position: fixed !important;
+}
+
+.p-sticky {
+ position: sticky !important;
+}
+
+.p-centered {
+ display: block;
+ float: none;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.flex-centered {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+
+// Spacing
+@include margin-variant(0, 0);
+
+@include margin-variant(1, $unit-1);
+
+@include margin-variant(2, $unit-2);
+
+@include padding-variant(0, 0);
+
+@include padding-variant(1, $unit-1);
+
+@include padding-variant(2, $unit-2);
diff --git a/sass/utilities/_shapes.scss b/sass/utilities/_shapes.scss
new file mode 100644
index 0000000..23e131e
--- /dev/null
+++ b/sass/utilities/_shapes.scss
@@ -0,0 +1,8 @@
+// Shapes
+.s-rounded {
+ border-radius: $border-radius;
+}
+
+.s-circle {
+ border-radius: 50%;
+}
\ No newline at end of file
diff --git a/sass/utilities/_text.scss b/sass/utilities/_text.scss
new file mode 100644
index 0000000..67793ac
--- /dev/null
+++ b/sass/utilities/_text.scss
@@ -0,0 +1,64 @@
+// Text
+// Text alignment utilities
+.text-left {
+ text-align: left;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-center {
+ text-align: center;
+}
+
+.text-justify {
+ text-align: justify;
+}
+
+// Text transform utilities
+.text-lowercase {
+ text-transform: lowercase;
+}
+
+.text-uppercase {
+ text-transform: uppercase;
+}
+
+.text-capitalize {
+ text-transform: capitalize;
+}
+
+// Text style utilities
+.text-normal {
+ font-weight: normal;
+}
+
+.text-bold {
+ font-weight: bold;
+}
+
+.text-italic {
+ font-style: italic;
+}
+
+.text-large {
+ font-size: 1.2em;
+}
+
+// Text overflow utilities
+.text-ellipsis {
+ @include text-ellipsis();
+}
+
+.text-clip {
+ overflow: hidden;
+ text-overflow: clip;
+ white-space: nowrap;
+}
+
+.text-break {
+ hyphens: auto;
+ word-break: break-word;
+ word-wrap: break-word;
+}
diff --git a/src/client.js b/src/client.js
new file mode 100644
index 0000000..cec9172
--- /dev/null
+++ b/src/client.js
@@ -0,0 +1,5 @@
+import * as sapper from '@sapper/app';
+
+sapper.start({
+ target: document.querySelector('#sapper')
+});
\ No newline at end of file
diff --git a/src/components/Icon.svelte b/src/components/Icon.svelte
new file mode 100644
index 0000000..9a4c7c6
--- /dev/null
+++ b/src/components/Icon.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/node_modules/buttons.js b/src/node_modules/buttons.js
new file mode 100644
index 0000000..ed904c9
--- /dev/null
+++ b/src/node_modules/buttons.js
@@ -0,0 +1,185 @@
+
+
+class ButtonMachine {
+
+ constructor(code) {
+ this.stack = [];
+ this.ip = 0;
+ this.code = code;
+ this.max_ticks = 128;
+ this.tick = 0;
+ this.registers = {};
+ this.error = '';
+ this.error_line = 0;
+ this.halted = false;
+ }
+
+ assert(test, message) {
+
+ // I should use exceptions but not sure if I want to do that too early in the course
+ if(!test) {
+ let display_op = this.cur_op ? this.cur_op.join(' ') : 'NONE';
+ this.error_line = this.ip;
+ console.log(`HALT[FIRE]: ${message} at line #${this.ip}: ${display_op}`);
+ this.error = message;
+ this.halted = true;
+ }
+
+ return test;
+ }
+
+ get operations() {
+ return Object.getOwnPropertyNames(ButtonMachine.prototype)
+ .filter(x => x.startsWith('op_'))
+ .map(x => x.slice(3));
+ }
+
+ get stack_top() {
+ return this.stack[0];
+ }
+
+ get cur_op() {
+ return this.code[this.ip];
+ }
+
+ get register_entries() {
+ return Object.entries(this.registers);
+ }
+
+ infix(op_name, cb) {
+ let b = this.stack.pop();
+ this.assert(b !== undefined, `${op_name} right operand POP empty stack`);
+
+ let a = this.stack.pop();
+ this.assert(b !== undefined, `${op_name} left operand POP empty stack`);
+
+ let res = cb(a, b);
+ this.assert(res != NaN, `${op_name} results in NaN value`);
+ this.assert(res !== undefined, `${op_name} results in undefined value`);
+
+ this.stack.push(res);
+ this.next();
+ }
+
+ op_ADD() {
+ this.infix('ADD', (a,b) => a + b);
+ }
+
+ op_SUB() {
+ this.infix('SUB', (a,b) => a - b);
+ }
+
+ op_DIV() {
+ this.infix('DIV', (a,b) => a / b);
+ }
+
+ op_MUL() {
+ this.infix('MUL', (a,b) => a * b);
+ }
+
+ op_MOD() {
+ this.infix('MOD', (a,b) => a % b);
+ }
+
+ op_POP() {
+ let val = this.stack.pop();
+ this.next();
+ return val;
+ }
+
+ op_PUSH(value) {
+ this.stack.push(value);
+ this.next();
+ }
+
+ op_HALT(message) {
+ this.halted = true;
+ this.error = message;
+ }
+
+ op_JUMP(line) {
+ if(!this.assert(line !== undefined, `Invalid jump! You need to give a line number.`)) return;
+ if(!this.assert(line <= this.code.length, `Invalid jump to line ${line} last line is ${this.code.length}`)) return;
+
+ this.ip = line;
+ }
+
+ op_JZ(line) {
+ if(!this.assert(line !== undefined, `Invalid jump! You need to give a line number.`)) return;
+ if(!this.assert(line <= this.code.length, `Invalid jump to line ${line} last line is ${this.code.length}`)) return;
+
+ if(this.stack_top == 0) {
+ this.op_JUMP(line);
+ } else {
+ this.next();
+ }
+ }
+
+ op_JNZ(line) {
+ if(!this.assert(line !== undefined, `Invalid jump! You need to give a line number.`)) return;
+ if(!this.assert(line <= this.code.length, `Invalid jump to line ${line} last line is ${this.code.length}`)) return;
+
+ if(this.stack_top != 0) {
+ this.op_JUMP(line);
+ } else {
+ this.next();
+ }
+ }
+
+ op_CLR() {
+ Object.keys(this.registers).forEach(key => delete this.registers[key]); // clears register
+ this.stack.splice(0, this.stack.length); // clears the stack contents
+
+ this.ip = 0;
+ this.tick = 0;
+ this.error = '';
+ this.error_line = 0;
+ this.halted = false;
+ }
+
+ op_STOR(reg) {
+ this.registers[reg] = this.stack_top;
+ this.next();
+ }
+
+ op_RSTOR(reg) {
+ let val = this.registers[reg];
+ this.assert(val !== undefined, `Invalid register ${reg}`);
+
+ this.stack.push(val);
+ this.next();
+ }
+
+ get running() {
+ return this.halted === false && this.tick < this.max_ticks && this.ip < this.code.length && this.cur_op !== undefined;
+ }
+
+ next() {
+ this.ip++;
+ }
+
+ dump(leader) {
+ console.log(leader, "TICK", this.tick, "CUR", this.cur_op, "IP", this.ip, "STACK", this.stack);
+ }
+
+ step() {
+ if(this.running) {
+ let [op, data] = this.cur_op;
+ let op_func = this[`op_${op}`];
+ this.assert(op_func !== undefined, `Invalid operation ${op}`);
+ op_func.call(this, data);
+ this.tick++;
+ }
+ }
+
+ run(debug=false) {
+ while(this.running === true) {
+ if(debug) this.dump(">>>");
+ this.step();
+ if(debug) this.dump("<<<");
+ // this.tick is managed by this.step
+ }
+ }
+}
+
+module.exports = { ButtonMachine };
diff --git a/src/routes/_error.svelte b/src/routes/_error.svelte
new file mode 100644
index 0000000..320e587
--- /dev/null
+++ b/src/routes/_error.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+ {status}
+
+
+{status}
+
+ {error.message}
+
+{#if dev && error.stack}
+ {error.stack}
+{/if}
diff --git a/src/routes/_layout.svelte b/src/routes/_layout.svelte
new file mode 100644
index 0000000..1a5e350
--- /dev/null
+++ b/src/routes/_layout.svelte
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/routes/index.svelte b/src/routes/index.svelte
new file mode 100644
index 0000000..6a19a57
--- /dev/null
+++ b/src/routes/index.svelte
@@ -0,0 +1,180 @@
+
+ Buttons the Programming Language
+
+
+
+
+
+
+
+
+
+
+
+
+ IP
+ TICK
+ HALT
+ ERROR
+
+
+
+
+ { machine.ip }
+ { machine.tick }
+ { machine.halted }
+ { machine.error }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#each code as [op, data], i}
+
+ {/each}
+
+
+
+
+ STACK
+
+
+
+ {#each machine.stack as datum, i}
+
+ {datum}
+
+ {/each}
+
+
+
+
+
+
+ REGISTER
+ VALUE
+
+
+
+ {#each machine.register_entries as [name, value] }
+
+ { name }
+ { value }
+
+ {/each}
+
+
+
+
+
diff --git a/src/server.js b/src/server.js
new file mode 100644
index 0000000..c77f593
--- /dev/null
+++ b/src/server.js
@@ -0,0 +1,17 @@
+import sirv from 'sirv';
+import polka from 'polka';
+import compression from 'compression';
+import * as sapper from '@sapper/server';
+
+const { PORT, NODE_ENV } = process.env;
+const dev = NODE_ENV === 'development';
+
+polka() // You can also use Express
+ .use(
+ compression({ threshold: 0 }),
+ sirv('static', { dev }),
+ sapper.middleware()
+ )
+ .listen(PORT, err => {
+ if (err) console.log('error', err);
+ });
diff --git a/src/service-worker.js b/src/service-worker.js
new file mode 100644
index 0000000..2289a55
--- /dev/null
+++ b/src/service-worker.js
@@ -0,0 +1,82 @@
+import { timestamp, files, shell, routes } from '@sapper/service-worker';
+
+const ASSETS = `cache${timestamp}`;
+
+// `shell` is an array of all the files generated by the bundler,
+// `files` is an array of everything in the `static` directory
+const to_cache = shell.concat(files);
+const cached = new Set(to_cache);
+
+self.addEventListener('install', event => {
+ event.waitUntil(
+ caches
+ .open(ASSETS)
+ .then(cache => cache.addAll(to_cache))
+ .then(() => {
+ self.skipWaiting();
+ })
+ );
+});
+
+self.addEventListener('activate', event => {
+ event.waitUntil(
+ caches.keys().then(async keys => {
+ // delete old caches
+ for (const key of keys) {
+ if (key !== ASSETS) await caches.delete(key);
+ }
+
+ self.clients.claim();
+ })
+ );
+});
+
+self.addEventListener('fetch', event => {
+ if (event.request.method !== 'GET' || event.request.headers.has('range')) return;
+
+ const url = new URL(event.request.url);
+
+ // don't try to handle e.g. data: URIs
+ if (!url.protocol.startsWith('http')) return;
+
+ // ignore dev server requests
+ if (url.hostname === self.location.hostname && url.port !== self.location.port) return;
+
+ // always serve static files and bundler-generated assets from cache
+ if (url.host === self.location.host && cached.has(url.pathname)) {
+ event.respondWith(caches.match(event.request));
+ return;
+ }
+
+ // for pages, you might want to serve a shell `service-worker-index.html` file,
+ // which Sapper has generated for you. It's not right for every
+ // app, but if it's right for yours then uncomment this section
+ /*
+ if (url.origin === self.origin && routes.find(route => route.pattern.test(url.pathname))) {
+ event.respondWith(caches.match('/service-worker-index.html'));
+ return;
+ }
+ */
+
+ if (event.request.cache === 'only-if-cached') return;
+
+ // for everything else, try the network first, falling back to
+ // cache if the user is offline. (If the pages never change, you
+ // might prefer a cache-first approach to a network-first one.)
+ event.respondWith(
+ caches
+ .open(`offline${timestamp}`)
+ .then(async cache => {
+ try {
+ const response = await fetch(event.request);
+ cache.put(event.request, response.clone());
+ return response;
+ } catch(err) {
+ const response = await cache.match(event.request);
+ if (response) return response;
+
+ throw err;
+ }
+ })
+ );
+});
diff --git a/src/template.html b/src/template.html
new file mode 100644
index 0000000..bed4238
--- /dev/null
+++ b/src/template.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %sapper.base%
+
+
+
+
+
+ %sapper.scripts%
+
+
+ %sapper.styles%
+
+
+ %sapper.head%
+
+
+
+ %sapper.html%
+
+
diff --git a/static/css/pattern.min.css b/static/css/pattern.min.css
new file mode 100644
index 0000000..5359843
--- /dev/null
+++ b/static/css/pattern.min.css
@@ -0,0 +1 @@
+.pattern-checks-sm{background-image:repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor),repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor);background-position:0 0,10px 10px;background-size:calc(2 * 10px) calc(2 * 10px)}.pattern-checks-md{background-image:repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor),repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor);background-position:0 0,25px 25px;background-size:calc(2 * 25px) calc(2 * 25px)}.pattern-checks-lg{background-image:repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor),repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor);background-position:0 0,50px 50px;background-size:calc(2 * 50px) calc(2 * 50px)}.pattern-checks-xl{background-image:repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor),repeating-linear-gradient(45deg,currentColor 25%,transparent 25%,transparent 75%,currentColor 75%,currentColor);background-position:0 0,100px 100px;background-size:calc(2 * 100px) calc(2 * 100px)}.pattern-grid-sm{background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(to right,currentColor 1px,transparent 1px);background-size:10px 10px}.pattern-grid-md{background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(to right,currentColor 1px,transparent 1px);background-size:25px 25px}.pattern-grid-lg{background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(to right,currentColor 1px,transparent 1px);background-size:50px 50px}.pattern-grid-xl{background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(to right,currentColor 1px,transparent 1px);background-size:100px 100px}.pattern-dots-sm{background-image:radial-gradient(currentColor .5px,transparent .5px);background-size:calc(10 * .5px) calc(10 * .5px)}.pattern-dots-md{background-image:radial-gradient(currentColor 1px,transparent 1px);background-size:calc(10 * 1px) calc(10 * 1px)}.pattern-dots-lg{background-image:radial-gradient(currentColor 1.5px,transparent 1.5px);background-size:calc(10 * 1.5px) calc(10 * 1.5px)}.pattern-dots-xl{background-image:radial-gradient(currentColor 2px,transparent 2px);background-size:calc(10 * 2px) calc(10 * 2px)}.pattern-cross-dots-sm{background-image:radial-gradient(currentColor .5px,transparent .5px),radial-gradient(currentColor .5px,transparent .5px);background-position:0 0,calc(10 * .5px) calc(10 * .5px);background-size:calc(20 * .5px) calc(20 * .5px)}.pattern-cross-dots-md{background-image:radial-gradient(currentColor 1px,transparent 1px),radial-gradient(currentColor 1px,transparent 1px);background-position:0 0,calc(10 * 1px) calc(10 * 1px);background-size:calc(20 * 1px) calc(20 * 1px)}.pattern-cross-dots-lg{background-image:radial-gradient(currentColor 1.5px,transparent 1.5px),radial-gradient(currentColor 1.5px,transparent 1.5px);background-position:0 0,calc(10 * 1.5px) calc(10 * 1.5px);background-size:calc(20 * 1.5px) calc(20 * 1.5px)}.pattern-cross-dots-xl{background-image:radial-gradient(currentColor 2px,transparent 2px),radial-gradient(currentColor 2px,transparent 2px);background-position:0 0,calc(10 * 2px) calc(10 * 2px);background-size:calc(20 * 2px) calc(20 * 2px)}.pattern-vertical-lines-sm{background-image:repeating-linear-gradient(to right,currentColor,currentColor 1px,transparent 1px,transparent);background-size:10px 10px}.pattern-horizontal-lines-sm{background-image:repeating-linear-gradient(0deg,currentColor,currentColor 1px,transparent 1px,transparent);background-size:10px 10px}.pattern-diagonal-lines-sm{background-image:repeating-linear-gradient(45deg,currentColor 0,currentColor 1px,transparent 0,transparent 50%);background-size:10px 10px}.pattern-vertical-lines-md{background-image:repeating-linear-gradient(to right,currentColor,currentColor 1px,transparent 1px,transparent);background-size:25px 25px}.pattern-horizontal-lines-md{background-image:repeating-linear-gradient(0deg,currentColor,currentColor 1px,transparent 1px,transparent);background-size:25px 25px}.pattern-diagonal-lines-md{background-image:repeating-linear-gradient(45deg,currentColor 0,currentColor 1px,transparent 0,transparent 50%);background-size:25px 25px}.pattern-vertical-lines-lg{background-image:repeating-linear-gradient(to right,currentColor,currentColor 1px,transparent 1px,transparent);background-size:50px 50px}.pattern-horizontal-lines-lg{background-image:repeating-linear-gradient(0deg,currentColor,currentColor 1px,transparent 1px,transparent);background-size:50px 50px}.pattern-diagonal-lines-lg{background-image:repeating-linear-gradient(45deg,currentColor 0,currentColor 1px,transparent 0,transparent 50%);background-size:50px 50px}.pattern-vertical-lines-xl{background-image:repeating-linear-gradient(to right,currentColor,currentColor 1px,transparent 1px,transparent);background-size:100px 100px}.pattern-horizontal-lines-xl{background-image:repeating-linear-gradient(0deg,currentColor,currentColor 1px,transparent 1px,transparent);background-size:100px 100px}.pattern-diagonal-lines-xl{background-image:repeating-linear-gradient(45deg,currentColor 0,currentColor 1px,transparent 0,transparent 50%);background-size:100px 100px}.pattern-vertical-stripes-sm{background-image:linear-gradient(90deg,transparent 50%,currentColor 50%);background-size:10px 10px}.pattern-horizontal-stripes-sm{background-image:linear-gradient(0deg,transparent 50%,currentColor 50%);background-size:10px 10px}.pattern-diagonal-stripes-sm{background:repeating-linear-gradient(45deg,transparent,transparent 10px,currentColor 10px,currentColor calc(2 * 10px))}.pattern-vertical-stripes-md{background-image:linear-gradient(90deg,transparent 50%,currentColor 50%);background-size:25px 25px}.pattern-horizontal-stripes-md{background-image:linear-gradient(0deg,transparent 50%,currentColor 50%);background-size:25px 25px}.pattern-diagonal-stripes-md{background:repeating-linear-gradient(45deg,transparent,transparent 25px,currentColor 25px,currentColor calc(2 * 25px))}.pattern-vertical-stripes-lg{background-image:linear-gradient(90deg,transparent 50%,currentColor 50%);background-size:50px 50px}.pattern-horizontal-stripes-lg{background-image:linear-gradient(0deg,transparent 50%,currentColor 50%);background-size:50px 50px}.pattern-diagonal-stripes-lg{background:repeating-linear-gradient(45deg,transparent,transparent 50px,currentColor 50px,currentColor calc(2 * 50px))}.pattern-vertical-stripes-xl{background-image:linear-gradient(90deg,transparent 50%,currentColor 50%);background-size:100px 100px}.pattern-horizontal-stripes-xl{background-image:linear-gradient(0deg,transparent 50%,currentColor 50%);background-size:100px 100px}.pattern-diagonal-stripes-xl{background:repeating-linear-gradient(45deg,transparent,transparent 100px,currentColor 100px,currentColor calc(2 * 100px))}.pattern-zigzag-sm{background:linear-gradient(135deg,currentColor 25%,transparent 25%) -10px 0,linear-gradient(225deg,currentColor 25%,transparent 25%) -10px 0,linear-gradient(315deg,currentColor 25%,transparent 25%),linear-gradient(45deg,currentColor 25%,transparent 25%);background-size:calc(2 * 10px) calc(2 * 10px)}.pattern-zigzag-md{background:linear-gradient(135deg,currentColor 25%,transparent 25%) -25px 0,linear-gradient(225deg,currentColor 25%,transparent 25%) -25px 0,linear-gradient(315deg,currentColor 25%,transparent 25%),linear-gradient(45deg,currentColor 25%,transparent 25%);background-size:calc(2 * 25px) calc(2 * 25px)}.pattern-zigzag-lg{background:linear-gradient(135deg,currentColor 25%,transparent 25%) -50px 0,linear-gradient(225deg,currentColor 25%,transparent 25%) -50px 0,linear-gradient(315deg,currentColor 25%,transparent 25%),linear-gradient(45deg,currentColor 25%,transparent 25%);background-size:calc(2 * 50px) calc(2 * 50px)}.pattern-zigzag-xl{background:linear-gradient(135deg,currentColor 25%,transparent 25%) -100px 0,linear-gradient(225deg,currentColor 25%,transparent 25%) -100px 0,linear-gradient(315deg,currentColor 25%,transparent 25%),linear-gradient(45deg,currentColor 25%,transparent 25%);background-size:calc(2 * 100px) calc(2 * 100px)}.pattern-triangles-sm{background-image:linear-gradient(45deg,currentColor 50%,transparent 50%);background-size:10px 10px}.pattern-triangles-md{background-image:linear-gradient(45deg,currentColor 50%,transparent 50%);background-size:25px 25px}.pattern-triangles-lg{background-image:linear-gradient(45deg,currentColor 50%,transparent 50%);background-size:50px 50px}.pattern-triangles-xl{background-image:linear-gradient(45deg,currentColor 50%,transparent 50%);background-size:100px 100px}.text-pattern{-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.pattern-w-sm{width:10px}.pattern-h-sm{height:10px}.pattern-w-md{width:25px}.pattern-h-md{height:25px}.pattern-w-lg{width:50px}.pattern-h-lg{height:50px}.pattern-w-xl{width:100px}.pattern-h-xl{height:100px}
\ No newline at end of file
diff --git a/static/css/spectre-exp.min.css b/static/css/spectre-exp.min.css
new file mode 100644
index 0000000..32a2541
--- /dev/null
+++ b/static/css/spectre-exp.min.css
@@ -0,0 +1 @@
+/*! Spectre.css Experimentals v0.5.8 | MIT License | github.com/picturepan2/spectre */.form-autocomplete{position:relative}.form-autocomplete .form-autocomplete-input{display:flex;height:auto;min-height:1.7rem;padding:.2rem;align-content:flex-start;flex-wrap:wrap}.form-autocomplete .form-autocomplete-input.is-focused{border-color:#1f314d;box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.form-autocomplete .form-autocomplete-input .form-input{line-height:.9rem;display:inline-block;width:auto;height:1.3rem;margin:.2rem;border-color:transparent;box-shadow:none;flex:1 0 auto}.form-autocomplete .menu{position:absolute;top:100%;left:0;width:100%}.form-autocomplete.autocomplete-oneline .form-autocomplete-input{overflow-x:auto;flex-wrap:nowrap}.form-autocomplete.autocomplete-oneline .chip{flex:1 0 auto}.calendar{display:block;min-width:280px;border:.1rem solid #bacae3;border-radius:.2rem}.calendar .calendar-nav{font-size:1.1rem;display:flex;padding:.5rem;border-top-left-radius:.2rem;border-top-right-radius:.2rem;background:#e9eef6;align-items:center}.calendar .calendar-body,.calendar .calendar-header{display:flex;padding:.5rem 0;flex-wrap:wrap;justify-content:center}.calendar .calendar-body .calendar-date,.calendar .calendar-header .calendar-date{max-width:14.28%;flex:0 0 14.28%}.calendar .calendar-header{font-size:.9rem;text-align:center;color:#a7bddc;border-bottom:.1rem solid #bacae3;background:#e9eef6}.calendar .calendar-body{color:#436ba8}.calendar .calendar-date{padding:.3rem;border:0}.calendar .calendar-date .date-item{font-size:.9rem;line-height:1.1rem;position:relative;width:1.5rem;height:1.5rem;padding:.2rem;cursor:pointer;transition:background .2s,border .2s,box-shadow .2s,color .2s;text-align:center;vertical-align:middle;white-space:nowrap;text-decoration:none;color:#436ba8;border:.1rem solid transparent;border-radius:50%;outline:0;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.calendar .calendar-date .date-item.date-today{color:#1f314d;border-color:#3f4e5f}.calendar .calendar-date .date-item:focus{box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.calendar .calendar-date .date-item:focus,.calendar .calendar-date .date-item:hover{text-decoration:none;color:#1f314d;border-color:#3f4e5f;background:#c1c1cd}.calendar .calendar-date .date-item.active,.calendar .calendar-date .date-item:active{color:#f8f9f6;border-color:#0c090b;background:#1a1419}.calendar .calendar-date .date-item.badge::after{position:absolute;top:3px;right:3px;transform:translate(50%,-50%)}.calendar .calendar-date .calendar-event.disabled,.calendar .calendar-date .calendar-event:disabled,.calendar .calendar-date .date-item.disabled,.calendar .calendar-date .date-item:disabled{cursor:default;pointer-events:none;opacity:.25}.calendar .calendar-date.next-month .calendar-event,.calendar .calendar-date.next-month .date-item,.calendar .calendar-date.prev-month .calendar-event,.calendar .calendar-date.prev-month .date-item{opacity:.25}.calendar .calendar-range{position:relative}.calendar .calendar-range::before{position:absolute;top:50%;right:0;left:0;height:1.5rem;content:'';transform:translateY(-50%);background:#999fa8}.calendar .calendar-range.range-start::before{left:50%}.calendar .calendar-range.range-end::before{right:50%}.calendar .calendar-range.range-end .date-item,.calendar .calendar-range.range-start .date-item{color:#f8f9f6;border-color:#0c090b;background:#1a1419}.calendar .calendar-range .date-item{color:#1f314d}.calendar.calendar-lg .calendar-body{padding:0}.calendar.calendar-lg .calendar-body .calendar-date{display:flex;flex-direction:column;height:5.5rem;padding:0;border-right:.1rem solid #bacae3;border-bottom:.1rem solid #bacae3}.calendar.calendar-lg .calendar-body .calendar-date:nth-child(7n){border-right:0}.calendar.calendar-lg .calendar-body .calendar-date:nth-last-child(-n+7){border-bottom:0}.calendar.calendar-lg .date-item{height:1.5rem;margin-top:.3rem;margin-right:.3rem;align-self:flex-end}.calendar.calendar-lg .calendar-range::before{top:19px}.calendar.calendar-lg .calendar-range.range-start::before{left:auto;width:19px}.calendar.calendar-lg .calendar-range.range-end::before{right:19px}.calendar.calendar-lg .calendar-events{line-height:1;overflow-y:auto;padding:.3rem;flex-grow:1}.calendar.calendar-lg .calendar-event{font-size:.9rem;display:block;overflow:hidden;margin:.2rem auto;padding:3px 4px;white-space:nowrap;text-overflow:ellipsis;border-radius:.2rem}.carousel .carousel-locator:nth-of-type(1):checked~.carousel-container .carousel-item:nth-of-type(1),.carousel .carousel-locator:nth-of-type(2):checked~.carousel-container .carousel-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-container .carousel-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-container .carousel-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-container .carousel-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-container .carousel-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-container .carousel-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-container .carousel-item:nth-of-type(8){z-index:100;-webkit-animation:carousel-slidein .75s ease-in-out 1;animation:carousel-slidein .75s ease-in-out 1;opacity:1}.carousel .carousel-locator:nth-of-type(1):checked~.carousel-nav .nav-item:nth-of-type(1),.carousel .carousel-locator:nth-of-type(2):checked~.carousel-nav .nav-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-nav .nav-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-nav .nav-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-nav .nav-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-nav .nav-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-nav .nav-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-nav .nav-item:nth-of-type(8){color:#e9eef6}.carousel{position:relative;z-index:1;display:block;overflow:hidden;width:100%;background:#e9eef6;-webkit-overflow-scrolling:touch}.carousel .carousel-container{position:relative;left:0;height:100%}.carousel .carousel-container::before{display:block;padding-bottom:56.25%;content:''}.carousel .carousel-container .carousel-item{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;-webkit-animation:carousel-slideout 1s ease-in-out 1;animation:carousel-slideout 1s ease-in-out 1;opacity:0}.carousel .carousel-container .carousel-item:hover .item-next,.carousel .carousel-container .carousel-item:hover .item-prev{opacity:1}.carousel .carousel-container .item-next,.carousel .carousel-container .item-prev{position:absolute;z-index:100;top:50%;transition:all .4s;transform:translateY(-50%);opacity:0;color:#e9eef6;border-color:rgba(233,238,246,.5);background:rgba(233,238,246,.25)}.carousel .carousel-container .item-prev{left:1rem}.carousel .carousel-container .item-next{right:1rem}.carousel .carousel-nav{position:absolute;z-index:100;bottom:.5rem;left:50%;display:flex;width:10rem;transform:translateX(-50%);justify-content:center}.carousel .carousel-nav .nav-item{position:relative;display:block;max-width:2.5rem;height:1.7rem;margin:.3rem;color:rgba(233,238,246,.5);flex:1 0 auto}.carousel .carousel-nav .nav-item::before{position:absolute;top:.5rem;display:block;width:100%;height:.2rem;content:'';background:currentColor}@-webkit-keyframes carousel-slidein{0%{transform:translateX(100%)}100%{transform:translateX(0)}}@keyframes carousel-slidein{0%{transform:translateX(100%)}100%{transform:translateX(0)}}@-webkit-keyframes carousel-slideout{0%{transform:translateX(0);opacity:1}100%{transform:translateX(-50%);opacity:1}}@keyframes carousel-slideout{0%{transform:translateX(0);opacity:1}100%{transform:translateX(-50%);opacity:1}}.comparison-slider{position:relative;overflow:hidden;width:100%;height:50vh;-webkit-overflow-scrolling:touch}.comparison-slider .comparison-after,.comparison-slider .comparison-before{position:absolute;top:0;left:0;overflow:hidden;height:100%;margin:0}.comparison-slider .comparison-after img,.comparison-slider .comparison-before img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:left center;object-position:left center}.comparison-slider .comparison-before{z-index:1;width:100%}.comparison-slider .comparison-before .comparison-label{right:.9rem}.comparison-slider .comparison-after{z-index:2;min-width:0;max-width:100%}.comparison-slider .comparison-after::before{position:absolute;z-index:1;top:0;right:.9rem;left:0;height:100%;content:'';cursor:default;background:0 0}.comparison-slider .comparison-after::after{position:absolute;top:50%;right:.5rem;width:3px;height:3px;content:'';transform:translate(50%,-50%);color:#f8f9f6;border-radius:50%;background:currentColor;box-shadow:0 -5px,0 5px}.comparison-slider .comparison-after .comparison-label{left:.9rem}.comparison-slider .comparison-resizer{position:relative;top:50%;left:0;width:0;min-width:.9rem;max-width:100%;height:.9rem;resize:horizontal;cursor:ew-resize;transform:translateY(-50%) scaleY(30);-webkit-animation:first-run 1.5s 1 ease-in-out;animation:first-run 1.5s 1 ease-in-out;opacity:0;outline:0}.comparison-slider .comparison-label{position:absolute;bottom:.9rem;padding:.3rem .5rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#f8f9f6;background:rgba(23,37,58,.5)}@-webkit-keyframes first-run{0%{width:0}25%{width:2.5rem}50%{width:.9rem}75%{width:1.3rem}100%{width:0}}@keyframes first-run{0%{width:0}25%{width:2.5rem}50%{width:.9rem}75%{width:1.3rem}100%{width:0}}.filter .filter-tag#tag-0:checked~.filter-nav .chip[for=tag-0],.filter .filter-tag#tag-1:checked~.filter-nav .chip[for=tag-1],.filter .filter-tag#tag-2:checked~.filter-nav .chip[for=tag-2],.filter .filter-tag#tag-3:checked~.filter-nav .chip[for=tag-3],.filter .filter-tag#tag-4:checked~.filter-nav .chip[for=tag-4],.filter .filter-tag#tag-5:checked~.filter-nav .chip[for=tag-5],.filter .filter-tag#tag-6:checked~.filter-nav .chip[for=tag-6],.filter .filter-tag#tag-7:checked~.filter-nav .chip[for=tag-7],.filter .filter-tag#tag-8:checked~.filter-nav .chip[for=tag-8]{color:#f8f9f6;background:#1f314d}.filter .filter-tag#tag-1:checked~.filter-body .filter-item:not([data-tag~=tag-1]),.filter .filter-tag#tag-2:checked~.filter-body .filter-item:not([data-tag~=tag-2]),.filter .filter-tag#tag-3:checked~.filter-body .filter-item:not([data-tag~=tag-3]),.filter .filter-tag#tag-4:checked~.filter-body .filter-item:not([data-tag~=tag-4]),.filter .filter-tag#tag-5:checked~.filter-body .filter-item:not([data-tag~=tag-5]),.filter .filter-tag#tag-6:checked~.filter-body .filter-item:not([data-tag~=tag-6]),.filter .filter-tag#tag-7:checked~.filter-body .filter-item:not([data-tag~=tag-7]),.filter .filter-tag#tag-8:checked~.filter-body .filter-item:not([data-tag~=tag-8]){display:none}.filter .filter-nav{margin:.5rem 0}.filter .filter-body{display:flex;flex-wrap:wrap}.meter{display:block;width:100%;height:.9rem;border:0;border-radius:.2rem;background:#e9eef6;-webkit-appearance:none;-moz-appearance:none;appearance:none}.meter::-webkit-meter-inner-element{display:block}.meter::-webkit-meter-bar,.meter::-webkit-meter-even-less-good-value,.meter::-webkit-meter-optimum-value,.meter::-webkit-meter-suboptimum-value{border-radius:.2rem}.meter::-webkit-meter-bar{background:#e9eef6}.meter::-webkit-meter-optimum-value{background:#40bf82}.meter::-webkit-meter-suboptimum-value{background:#dba21f}.meter::-webkit-meter-even-less-good-value{background:#6d1219}.meter:-moz-meter-optimum,.meter:-moz-meter-sub-optimum,.meter:-moz-meter-sub-sub-optimum,.meter::-moz-meter-bar{border-radius:.2rem}.meter:-moz-meter-optimum::-moz-meter-bar{background:#40bf82}.meter:-moz-meter-sub-optimum::-moz-meter-bar{background:#dba21f}.meter:-moz-meter-sub-sub-optimum::-moz-meter-bar{background:#6d1219}.off-canvas{position:relative;display:flex;width:100%;height:100%;flex-flow:nowrap}.off-canvas .off-canvas-toggle{position:absolute;z-index:1;top:.5rem;left:.5rem;display:block;transition:none}.off-canvas .off-canvas-sidebar{position:fixed;z-index:200;top:0;bottom:0;left:0;overflow-y:auto;min-width:10rem;transition:transform .25s;transform:translateX(-100%);background:#e9eef6}.off-canvas .off-canvas-content{height:100%;padding:.5rem 1rem .5rem 1rem;flex:1 1 auto}.off-canvas .off-canvas-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:none;width:100%;height:100%;border-color:transparent;border-radius:0;background:rgba(23,37,58,.1)}.off-canvas .off-canvas-sidebar.active,.off-canvas .off-canvas-sidebar:target{transform:translateX(0)}.off-canvas .off-canvas-sidebar.active~.off-canvas-overlay,.off-canvas .off-canvas-sidebar:target~.off-canvas-overlay{z-index:100;display:block}@media (min-width:960px){.off-canvas.off-canvas-sidebar-show .off-canvas-toggle{display:none}.off-canvas.off-canvas-sidebar-show .off-canvas-sidebar{position:relative;transform:none;flex:0 0 auto}.off-canvas.off-canvas-sidebar-show .off-canvas-overlay{display:none!important}}.off-canvas .nav{margin:0;padding:2px}.off-canvas .nav .nav-item{margin:0}.parallax{position:relative;display:block;width:auto;height:auto}.parallax .parallax-content{width:100%;height:auto;transition:all .4s ease;transform:perspective(1000px);box-shadow:0 1rem 2.1rem rgba(23,37,58,.3);transform-style:preserve-3d}.parallax .parallax-content::before{position:absolute;top:0;left:0;display:block;width:100%;height:100%;content:''}.parallax .parallax-front{position:absolute;z-index:1;top:0;left:0;display:flex;width:100%;height:100%;transition:transform .4s;transform:translateZ(50px) scale(.95);text-align:center;color:#f8f9f6;text-shadow:0 0 20px rgba(23,37,58,.75);align-items:center;justify-content:center}.parallax .parallax-top-left{position:absolute;z-index:100;top:0;left:0;width:50%;height:50%;outline:0}.parallax .parallax-top-left:focus~.parallax-content,.parallax .parallax-top-left:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(-3deg)}.parallax .parallax-top-left:focus~.parallax-content::before,.parallax .parallax-top-left:hover~.parallax-content::before{background:linear-gradient(135deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-top-left:focus~.parallax-content .parallax-front,.parallax .parallax-top-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,4.5px,50px) scale(.95)}.parallax .parallax-top-right{position:absolute;z-index:100;top:0;right:0;width:50%;height:50%;outline:0}.parallax .parallax-top-right:focus~.parallax-content,.parallax .parallax-top-right:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(3deg)}.parallax .parallax-top-right:focus~.parallax-content::before,.parallax .parallax-top-right:hover~.parallax-content::before{background:linear-gradient(-135deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-top-right:focus~.parallax-content .parallax-front,.parallax .parallax-top-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,4.5px,50px) scale(.95)}.parallax .parallax-bottom-left{position:absolute;z-index:100;bottom:0;left:0;width:50%;height:50%;outline:0}.parallax .parallax-bottom-left:focus~.parallax-content,.parallax .parallax-bottom-left:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(-3deg)}.parallax .parallax-bottom-left:focus~.parallax-content::before,.parallax .parallax-bottom-left:hover~.parallax-content::before{background:linear-gradient(45deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-bottom-left:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,-4.5px,50px) scale(.95)}.parallax .parallax-bottom-right{position:absolute;z-index:100;right:0;bottom:0;width:50%;height:50%;outline:0}.parallax .parallax-bottom-right:focus~.parallax-content,.parallax .parallax-bottom-right:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(3deg)}.parallax .parallax-bottom-right:focus~.parallax-content::before,.parallax .parallax-bottom-right:hover~.parallax-content::before{background:linear-gradient(-45deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-bottom-right:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,-4.5px,50px) scale(.95)}.progress{position:relative;width:100%;height:.3rem;color:#1f314d;border:0;border-radius:.2rem;background:#dee6f2;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{border-radius:.2rem;background:0 0}.progress::-webkit-progress-value{border-radius:.2rem;background:#1f314d}.progress::-moz-progress-bar{border-radius:.2rem;background:#1f314d}.progress:indeterminate{-webkit-animation:progress-indeterminate 1.5s linear infinite;animation:progress-indeterminate 1.5s linear infinite;background:#dee6f2 linear-gradient(to right,#1f314d 30%,#dee6f2 30%) top left/150% 150% no-repeat}.progress:indeterminate::-moz-progress-bar{background:0 0}@-webkit-keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}.slider{display:block;width:100%;height:1.3rem;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.slider:focus{outline:0;box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.slider.tooltip:not([data-tooltip])::after{content:attr(value)}.slider::-webkit-slider-thumb{width:.7rem;height:.7rem;margin-top:-.25rem;-webkit-transition:transform .2s;transition:transform .2s;border:0;border-radius:50%;background:#1f314d;-webkit-appearance:none}.slider::-moz-range-thumb{width:.7rem;height:.7rem;-moz-transition:transform .2s;transition:transform .2s;border:0;border-radius:50%;background:#1f314d}.slider::-ms-thumb{width:.7rem;height:.7rem;-ms-transition:transform .2s;transition:transform .2s;border:0;border-radius:50%;background:#1f314d}.slider:active::-webkit-slider-thumb{transform:scale(1.25)}.slider:active::-moz-range-thumb{transform:scale(1.25)}.slider:active::-ms-thumb{transform:scale(1.25)}.slider.disabled::-webkit-slider-thumb,.slider:disabled::-webkit-slider-thumb{transform:scale(1);background:#e9eef6}.slider.disabled::-moz-range-thumb,.slider:disabled::-moz-range-thumb{transform:scale(1);background:#e9eef6}.slider.disabled::-ms-thumb,.slider:disabled::-ms-thumb{transform:scale(1);background:#e9eef6}.slider::-webkit-slider-runnable-track{width:100%;height:.2rem;border-radius:.2rem;background:#dee6f2}.slider::-moz-range-track{width:100%;height:.2rem;border-radius:.2rem;background:#dee6f2}.slider::-ms-track{width:100%;height:.2rem;border-radius:.2rem;background:#dee6f2}.slider::-ms-fill-lower{background:#1f314d}.timeline .timeline-item{position:relative;display:flex;margin-bottom:1.3rem}.timeline .timeline-item::before{position:absolute;top:1.3rem;left:11px;width:2px;height:100%;content:'';background:#bacae3}.timeline .timeline-item .timeline-left{flex:0 0 auto}.timeline .timeline-item .timeline-content{padding:2px 0 2px .9rem;flex:1 1 auto}.timeline .timeline-item .timeline-icon{display:flex;width:1.3rem;height:1.3rem;text-align:center;color:#f8f9f6;border-radius:50%;align-items:center;justify-content:center}.timeline .timeline-item .timeline-icon::before{position:absolute;top:.5rem;left:.5rem;display:block;width:.5rem;height:.5rem;content:'';border:.2rem solid #1f314d;border-radius:50%}.timeline .timeline-item .timeline-icon.icon-lg{line-height:1.4rem;background:#1f314d}.timeline .timeline-item .timeline-icon.icon-lg::before{content:none}.viewer-360{display:flex;flex-direction:column;align-items:center}.viewer-360 .viewer-slider[max='36'][value='1']+.viewer-image{background-position-y:0}.viewer-360 .viewer-slider[max='36'][value='2']+.viewer-image{background-position-y:2.8571428571%}.viewer-360 .viewer-slider[max='36'][value='3']+.viewer-image{background-position-y:5.7142857143%}.viewer-360 .viewer-slider[max='36'][value='4']+.viewer-image{background-position-y:8.5714285714%}.viewer-360 .viewer-slider[max='36'][value='5']+.viewer-image{background-position-y:11.4285714286%}.viewer-360 .viewer-slider[max='36'][value='6']+.viewer-image{background-position-y:14.2857142857%}.viewer-360 .viewer-slider[max='36'][value='7']+.viewer-image{background-position-y:17.1428571429%}.viewer-360 .viewer-slider[max='36'][value='8']+.viewer-image{background-position-y:20%}.viewer-360 .viewer-slider[max='36'][value='9']+.viewer-image{background-position-y:22.8571428571%}.viewer-360 .viewer-slider[max='36'][value='10']+.viewer-image{background-position-y:25.7142857143%}.viewer-360 .viewer-slider[max='36'][value='11']+.viewer-image{background-position-y:28.5714285714%}.viewer-360 .viewer-slider[max='36'][value='12']+.viewer-image{background-position-y:31.4285714286%}.viewer-360 .viewer-slider[max='36'][value='13']+.viewer-image{background-position-y:34.2857142857%}.viewer-360 .viewer-slider[max='36'][value='14']+.viewer-image{background-position-y:37.1428571429%}.viewer-360 .viewer-slider[max='36'][value='15']+.viewer-image{background-position-y:40%}.viewer-360 .viewer-slider[max='36'][value='16']+.viewer-image{background-position-y:42.8571428571%}.viewer-360 .viewer-slider[max='36'][value='17']+.viewer-image{background-position-y:45.7142857143%}.viewer-360 .viewer-slider[max='36'][value='18']+.viewer-image{background-position-y:48.5714285714%}.viewer-360 .viewer-slider[max='36'][value='19']+.viewer-image{background-position-y:51.4285714286%}.viewer-360 .viewer-slider[max='36'][value='20']+.viewer-image{background-position-y:54.2857142857%}.viewer-360 .viewer-slider[max='36'][value='21']+.viewer-image{background-position-y:57.1428571429%}.viewer-360 .viewer-slider[max='36'][value='22']+.viewer-image{background-position-y:60%}.viewer-360 .viewer-slider[max='36'][value='23']+.viewer-image{background-position-y:62.8571428571%}.viewer-360 .viewer-slider[max='36'][value='24']+.viewer-image{background-position-y:65.7142857143%}.viewer-360 .viewer-slider[max='36'][value='25']+.viewer-image{background-position-y:68.5714285714%}.viewer-360 .viewer-slider[max='36'][value='26']+.viewer-image{background-position-y:71.4285714286%}.viewer-360 .viewer-slider[max='36'][value='27']+.viewer-image{background-position-y:74.2857142857%}.viewer-360 .viewer-slider[max='36'][value='28']+.viewer-image{background-position-y:77.1428571429%}.viewer-360 .viewer-slider[max='36'][value='29']+.viewer-image{background-position-y:80%}.viewer-360 .viewer-slider[max='36'][value='30']+.viewer-image{background-position-y:82.8571428571%}.viewer-360 .viewer-slider[max='36'][value='31']+.viewer-image{background-position-y:85.7142857143%}.viewer-360 .viewer-slider[max='36'][value='32']+.viewer-image{background-position-y:88.5714285714%}.viewer-360 .viewer-slider[max='36'][value='33']+.viewer-image{background-position-y:91.4285714286%}.viewer-360 .viewer-slider[max='36'][value='34']+.viewer-image{background-position-y:94.2857142857%}.viewer-360 .viewer-slider[max='36'][value='35']+.viewer-image{background-position-y:97.1428571429%}.viewer-360 .viewer-slider[max='36'][value='36']+.viewer-image{background-position-y:100%}.viewer-360 .viewer-slider{width:60%;margin:1rem;cursor:ew-resize;order:2}.viewer-360 .viewer-image{max-width:100%;background-repeat:no-repeat;background-position-y:0;background-size:100%;order:1}
\ No newline at end of file
diff --git a/static/css/spectre-icons.min.css b/static/css/spectre-icons.min.css
new file mode 100644
index 0000000..61fe32b
--- /dev/null
+++ b/static/css/spectre-icons.min.css
@@ -0,0 +1 @@
+/*! Spectre.css Icons v0.5.8 | MIT License | github.com/picturepan2/spectre */.icon{font-size:inherit;font-style:normal;position:relative;display:inline-block;box-sizing:border-box;width:1em;height:1em;vertical-align:middle;text-indent:-9999px}.icon::after,.icon::before{position:absolute;top:50%;left:50%;display:block;content:'';transform:translate(-50%,-50%)}.icon.icon-2x{font-size:1.6rem}.icon.icon-3x{font-size:2.4rem}.icon.icon-4x{font-size:3.2rem}.accordion .icon,.btn .icon,.menu .icon,.toast .icon{vertical-align:-10%}.btn-lg .icon{vertical-align:-15%}.icon-arrow-down::before,.icon-arrow-left::before,.icon-arrow-right::before,.icon-arrow-up::before,.icon-back::before,.icon-downward::before,.icon-forward::before,.icon-upward::before{width:.65em;height:.65em;border:.2rem solid currentColor;border-right:0;border-bottom:0}.icon-arrow-down::before{transform:translate(-50%,-75%) rotate(225deg)}.icon-arrow-left::before{transform:translate(-25%,-50%) rotate(-45deg)}.icon-arrow-right::before{transform:translate(-75%,-50%) rotate(135deg)}.icon-arrow-up::before{transform:translate(-50%,-25%) rotate(45deg)}.icon-back::after,.icon-forward::after{width:.8em;height:.2rem;background:currentColor}.icon-downward::after,.icon-upward::after{width:.2rem;height:.8em;background:currentColor}.icon-back::after{left:55%}.icon-back::before{transform:translate(-50%,-50%) rotate(-45deg)}.icon-downward::after{top:45%}.icon-downward::before{transform:translate(-50%,-50%) rotate(-135deg)}.icon-forward::after{left:45%}.icon-forward::before{transform:translate(-50%,-50%) rotate(135deg)}.icon-upward::after{top:55%}.icon-upward::before{transform:translate(-50%,-50%) rotate(45deg)}.icon-caret::before{width:0;height:0;transform:translate(-50%,-25%);border-top:.3em solid currentColor;border-right:.3em solid transparent;border-left:.3em solid transparent}.icon-menu::before{width:100%;height:.2rem;background:currentColor;box-shadow:0 -.35em,0 .35em}.icon-apps::before{width:3px;height:3px;background:currentColor;box-shadow:-.35em -.35em,-.35em 0,-.35em .35em,0 -.35em,0 .35em,.35em -.35em,.35em 0,.35em .35em}.icon-resize-horiz::after,.icon-resize-horiz::before,.icon-resize-vert::after,.icon-resize-vert::before{width:.45em;height:.45em;border:.2rem solid currentColor;border-right:0;border-bottom:0}.icon-resize-horiz::before,.icon-resize-vert::before{transform:translate(-50%,-90%) rotate(45deg)}.icon-resize-horiz::after,.icon-resize-vert::after{transform:translate(-50%,-10%) rotate(225deg)}.icon-resize-horiz::before{transform:translate(-90%,-50%) rotate(-45deg)}.icon-resize-horiz::after{transform:translate(-10%,-50%) rotate(135deg)}.icon-more-horiz::before,.icon-more-vert::before{width:3px;height:3px;border-radius:50%;background:currentColor;box-shadow:-.4em 0,.4em 0}.icon-more-vert::before{box-shadow:0 -.4em,0 .4em}.icon-cross::before,.icon-minus::before,.icon-plus::before{width:100%;height:.2rem;background:currentColor}.icon-cross::after,.icon-plus::after{width:.2rem;height:100%;background:currentColor}.icon-cross::before{width:100%}.icon-cross::after{height:100%}.icon-cross::after,.icon-cross::before{transform:translate(-50%,-50%) rotate(45deg)}.icon-check::before{width:.9em;height:.5em;transform:translate(-50%,-75%) rotate(-45deg);border:.2rem solid currentColor;border-top:0;border-right:0}.icon-stop{border:.2rem solid currentColor;border-radius:50%}.icon-stop::before{width:1em;height:.2rem;transform:translate(-50%,-50%) rotate(45deg);background:currentColor}.icon-shutdown{border:.2rem solid currentColor;border-top-color:transparent;border-radius:50%}.icon-shutdown::before{top:.1em;width:.2rem;height:.5em;content:'';background:currentColor}.icon-refresh::before{width:1em;height:1em;border:.2rem solid currentColor;border-right-color:transparent;border-radius:50%}.icon-refresh::after{top:20%;left:80%;width:0;height:0;border:.2em solid currentColor;border-top-color:transparent;border-left-color:transparent}.icon-search::before{top:5%;left:5%;width:.75em;height:.75em;transform:translate(0,0) rotate(45deg);border:.2rem solid currentColor;border-radius:50%}.icon-search::after{top:80%;left:80%;width:.4em;height:.2rem;transform:translate(-50%,-50%) rotate(45deg);background:currentColor}.icon-edit::before{width:.85em;height:.4em;transform:translate(-40%,-60%) rotate(-45deg);border:.2rem solid currentColor}.icon-edit::after{top:95%;left:5%;width:0;height:0;transform:translate(0,-100%);border:.15em solid currentColor;border-top-color:transparent;border-right-color:transparent}.icon-delete::before{top:60%;width:.75em;height:.75em;border:.2rem solid currentColor;border-top:0;border-bottom-right-radius:.2rem;border-bottom-left-radius:.2rem}.icon-delete::after{top:.1rem;width:.5em;height:.2rem;background:currentColor;box-shadow:-.25em .2em,.25em .2em}.icon-share{border:.2rem solid currentColor;border-top:0;border-right:0;border-radius:.2rem}.icon-share::before{top:.25em;left:100%;width:.4em;height:.4em;transform:translate(-125%,-50%) rotate(-45deg);border:.2rem solid currentColor;border-top:0;border-left:0}.icon-share::after{width:.6em;height:.5em;border:.2rem solid currentColor;border-right:0;border-bottom:0;border-radius:75% 0}.icon-flag::before{left:15%;width:.2rem;height:1em;background:currentColor}.icon-flag::after{top:35%;left:60%;width:.8em;height:.65em;border:.2rem solid currentColor;border-left:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.icon-bookmark::before{width:.8em;height:.9em;border:.2rem solid currentColor;border-bottom:0;border-top-left-radius:.2rem;border-top-right-radius:.2rem}.icon-bookmark::after{width:.5em;height:.5em;transform:translate(-50%,35%) rotate(-45deg) skew(15deg,15deg);border:.2rem solid currentColor;border-bottom:0;border-left:0;border-radius:.2rem}.icon-download,.icon-upload{border-bottom:.2rem solid currentColor}.icon-download::before,.icon-upload::before{width:.5em;height:.5em;transform:translate(-50%,-60%) rotate(-135deg);border:.2rem solid currentColor;border-right:0;border-bottom:0}.icon-download::after,.icon-upload::after{top:40%;width:.2rem;height:.6em;background:currentColor}.icon-upload::before{transform:translate(-50%,-60%) rotate(45deg)}.icon-upload::after{top:50%}.icon-copy::before{top:35%;left:40%;width:.8em;height:.8em;border:.2rem solid currentColor;border-right:0;border-bottom:0;border-radius:.2rem}.icon-copy::after{top:60%;left:60%;width:.8em;height:.8em;border:.2rem solid currentColor;border-radius:.2rem}.icon-time{border:.2rem solid currentColor;border-radius:50%}.icon-time::before{width:.2rem;height:.4em;transform:translate(-50%,-75%);background:currentColor}.icon-time::after{width:.2rem;height:.3em;transform:translate(-50%,-75%) rotate(90deg);transform-origin:50% 90%;background:currentColor}.icon-mail::before{width:1em;height:.8em;border:.2rem solid currentColor;border-radius:.2rem}.icon-mail::after{width:.5em;height:.5em;transform:translate(-50%,-90%) rotate(-45deg) skew(10deg,10deg);border:.2rem solid currentColor;border-top:0;border-right:0}.icon-people::before{top:25%;width:.45em;height:.45em;border:.2rem solid currentColor;border-radius:50%}.icon-people::after{top:75%;width:.9em;height:.4em;border:.2rem solid currentColor;border-radius:50% 50% 0 0}.icon-message{border:.2rem solid currentColor;border-right:0;border-bottom:0;border-radius:.2rem}.icon-message::before{top:40%;left:65%;width:.7em;height:.8em;border:.2rem solid currentColor;border-top:0;border-left:0;border-bottom-right-radius:.2rem}.icon-message::after{top:100%;left:10%;width:.2rem;height:.3em;transform:translate(0,-90%) rotate(45deg);border-radius:.2rem;background:currentColor}.icon-photo{border:.2rem solid currentColor;border-radius:.2rem}.icon-photo::before{top:35%;left:35%;width:.25em;height:.25em;border:.2rem solid currentColor;border-radius:50%}.icon-photo::after{left:60%;width:.5em;height:.5em;transform:translate(-50%,25%) rotate(-45deg);border:.2rem solid currentColor;border-bottom:0;border-left:0}.icon-link::after,.icon-link::before{width:.75em;height:.5em;border:.2rem solid currentColor;border-right:0;border-radius:5em 0 0 5em}.icon-link::before{transform:translate(-70%,-45%) rotate(-45deg)}.icon-link::after{transform:translate(-30%,-55%) rotate(135deg)}.icon-location::before{width:.8em;height:.8em;transform:translate(-50%,-60%) rotate(-45deg);border:.2rem solid currentColor;border-radius:50% 50% 50% 0}.icon-location::after{width:.2em;height:.2em;transform:translate(-50%,-80%);border:.2rem solid currentColor;border-radius:50%}.icon-emoji{border:.2rem solid currentColor;border-radius:50%}.icon-emoji::before{width:.15em;height:.15em;border-radius:50%;box-shadow:-.17em -.1em,.17em -.1em}.icon-emoji::after{width:.5em;height:.5em;transform:translate(-50%,-40%) rotate(-135deg);border:.2rem solid currentColor;border-right-color:transparent;border-bottom-color:transparent;border-radius:50%}
\ No newline at end of file
diff --git a/static/css/spectre.min.css b/static/css/spectre.min.css
new file mode 100644
index 0000000..a2413bb
--- /dev/null
+++ b/static/css/spectre.min.css
@@ -0,0 +1 @@
+@charset 'UTF-8';/*! Spectre.css v0.5.8 | MIT License | github.com/picturepan2/spectre */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}hr{overflow:visible;box-sizing:content-box;height:0}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}address{font-style:normal}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:“Roboto”,“Droid Sans”,“Helvetica Neue”,sans-serif;font-size:1em}dfn{font-style:italic}small{font-size:80%;font-weight:400}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}fieldset{margin:0;padding:0;border:0}legend{display:table;box-sizing:border-box;max-width:100%;padding:0;white-space:normal;color:inherit}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details,menu{display:block}summary{display:list-item;outline:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:inherit}html{font-size:22px;line-height:35px;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:Arial,'Helvetica Neue',sans-serif;font-size:1rem;overflow-x:hidden;color:#1f314d;background:#f8f9f6;text-rendering:optimizeLegibility}a{text-decoration:underline;color:#1f314d;outline:0}a:focus{box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}a.active,a:active,a:focus,a:hover{text-decoration:underline;color:#160405}h1,h2,h3,h4,h5,h6{font-family:'Arial Black';font-weight:700;margin-top:0;margin-bottom:.5em}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{text-decoration:none!important;color:#1f314d!important}.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Arial Black';font-weight:700}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a{text-decoration:none!important;color:#1f314d!important}.h1,h1{font-size:58px;line-height:87px}.h2,h2{font-size:45px;line-height:69px}.h3,h3{font-size:36px;line-height:56px}.h4,h4{font-size:28px;line-height:44px}.h5,h5{font-size:22px;line-height:35px}.h6,h6{font-size:17px;line-height:18px}p{margin:0 0 1.4rem;color:#1a1419}a,ins,u{-webkit-text-decoration-skip:ink edges;text-decoration-skip:ink edges}abbr[title]{cursor:help;text-decoration:none;border-bottom:.1rem dotted}kbd{font-size:.9rem;line-height:1.25;padding:.1rem .2rem;color:#f8f9f6;border-radius:.2rem;background:#17253a}mark{padding:.1rem .2rem 0;color:#1f314d;border-bottom:.1rem solid #ffd367;border-radius:.2rem;background:#ffe9b3}blockquote{margin-left:0;padding:.5rem .9rem;border-left:.2rem solid #bacae3;background-color:#f4f7fb}blockquote p:last-child{margin-bottom:0}ol,ul{margin:.9rem .9rem .9rem .9rem;padding:.5em;background-color:#f4f7fb}ol ol,ol ul,ul ol,ul ul{margin:.9rem .9rem .9rem .9rem}ol li,ul li{margin-top:.5rem}ul{list-style:disc inside}ul ul{list-style-type:circle}ol{list-style:none;counter-reset:high-contrast-counter}ol ol{list-style-type:lower-alpha}ol li{counter-increment:high-contrast-counter}ol li::before{margin-right:.3em;padding:3px;content:'0' counter(high-contrast-counter) '.';color:#f0f3ec;border-radius:.2rem;background-color:#1a1419}dl dt{font-weight:700}dl dd{margin:.5rem 0 .9rem 0}.table{width:100%;border-spacing:0;border-collapse:collapse;text-align:left}.table.table-striped tbody tr:nth-of-type(odd){background:#e9eef6}.table tbody tr.active,.table.table-striped tbody tr.active{background:#dee6f2}.table.table-hover tbody tr:hover{background:#dee6f2}.table.table-scroll{display:block;overflow-x:auto;padding-bottom:.75rem;white-space:nowrap}.table td,.table th{padding:.7rem .5rem;border-bottom:.1rem solid #bacae3}.table th{border-bottom-width:.2rem}.btn{font-size:1rem;line-height:1.4rem;display:inline-block;height:1.9rem;padding:.15rem .5rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;text-align:center;vertical-align:middle;white-space:nowrap;text-decoration:none;color:#1f314d;border:.1rem solid #1f314d;border-radius:.2rem;outline:0;background:#f8f9f6;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:focus{box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.btn:focus,.btn:hover{text-decoration:none;color:#f8f9f6;border-color:#1a1419;background:#999fa8}.btn.active,.btn:active{text-decoration:none;color:#f8f9f6;border-color:#0c090b;background:#1a1419}.btn.active.loading::after,.btn:active.loading::after{border-bottom-color:#f8f9f6;border-left-color:#f8f9f6}.btn.disabled,.btn:disabled,.btn[disabled]{cursor:default;pointer-events:none;opacity:.5}.btn.btn-primary{color:#f8f9f6;border-color:#1a1419;background:#1f314d}.btn.btn-primary:focus,.btn.btn-primary:hover{color:#f8f9f6;border-color:#0c090b;background:#150f14}.btn.btn-primary.active,.btn.btn-primary:active{color:#f8f9f6;border-color:#060406;background:#0f0b0e}.btn.btn-primary.loading::after{border-bottom-color:#f8f9f6;border-left-color:#f8f9f6}.btn.btn-success{color:#f8f9f6;border-color:#3cb47a;background:#40bf82}.btn.btn-success:focus{box-shadow:0 0 0 .1rem rgba(64,191,130,.2)}.btn.btn-success:focus,.btn.btn-success:hover{color:#f8f9f6;border-color:#39ac75;background:#3db87c}.btn.btn-success.active,.btn.btn-success:active{color:#f8f9f6;border-color:#339968;background:#37a46f}.btn.btn-success.loading::after{border-bottom-color:#f8f9f6;border-left-color:#f8f9f6}.btn.btn-warning{color:#f8f9f6;border-color:#cd981d;background:#dba21f}.btn.btn-warning:focus{box-shadow:0 0 0 .1rem rgba(219,162,31,.2)}.btn.btn-warning:focus,.btn.btn-warning:hover{color:#f8f9f6;border-color:#c4921c;background:#d29c1e}.btn.btn-warning.active,.btn.btn-warning:active{color:#f8f9f6;border-color:#ae8119;background:#bb8b1b}.btn.btn-warning.loading::after{border-bottom-color:#f8f9f6;border-left-color:#f8f9f6}.btn.btn-error{color:#f8f9f6;border-color:#601016;background:#6d1219}.btn.btn-error:focus{box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.btn.btn-error:focus,.btn.btn-error:hover{color:#f8f9f6;border-color:#570f14;background:#641117}.btn.btn-error.active,.btn.btn-error:active{color:#f8f9f6;border-color:#410b0f;background:#4e0d12}.btn.btn-error.loading::after{border-bottom-color:#f8f9f6;border-left-color:#f8f9f6}.btn.btn-link{color:#1f314d;border-color:transparent;background:0 0}.btn.btn-link.active,.btn.btn-link:active,.btn.btn-link:focus,.btn.btn-link:hover{color:#160405}.btn.btn-sm{font-size:.9rem;height:1.5rem}.btn.btn-lg{font-size:1.1rem;height:2.1rem;padding:.25rem .75rem}.btn.btn-block{display:block;width:100%}.btn.btn-action{width:1.9rem;padding-right:0;padding-left:0}.btn.btn-action.btn-sm{width:1.5rem}.btn.btn-action.btn-lg{width:2.1rem}.btn.btn-clear{line-height:.9rem;width:1.1rem;height:1.1rem;margin-right:-2px;margin-left:.3rem;padding:.2rem;text-decoration:none;opacity:1;color:currentColor;border:0;background:0 0}.btn.btn-clear:focus,.btn.btn-clear:hover{opacity:.95;background:rgba(233,238,246,.5)}.btn.btn-clear::before{content:'\2715'}.btn-group{display:inline-flex;flex-wrap:wrap}.btn-group .btn{flex:1 0 auto}.btn-group .btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group .btn:not(:first-child):not(:last-child){margin-left:-.1rem;border-radius:0}.btn-group .btn:last-child:not(:first-child){margin-left:-.1rem;border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .btn.active,.btn-group .btn:active,.btn-group .btn:focus,.btn-group .btn:hover{z-index:1}.btn-group.btn-group-block{display:flex}.btn-group.btn-group-block .btn{flex:1 0 0}.form-group:not(:last-child){margin-bottom:.5rem}fieldset{margin-bottom:.9rem}legend{font-size:1.1rem;font-weight:500;margin-bottom:.9rem}.form-label{line-height:1.4rem;display:block;margin-top:.3rem;padding:.25rem 0}.form-label.label-sm{font-size:.9rem;padding:.05rem 0}.form-label.label-lg{font-size:1.1rem;padding:.35rem 0}.form-input{font-size:1rem;line-height:1.4rem;position:relative;display:block;width:100%;max-width:100%;height:1.9rem;padding:.15rem .5rem;transition:background .2s,border .2s,box-shadow .2s,color .2s;color:#1f314d;border:.1rem solid #95afd5;border-radius:.2rem;outline:0;background:#f8f9f6;background-image:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-input:focus{border-color:#1f314d;box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.form-input::-moz-placeholder{color:#a7bddc}.form-input:-ms-input-placeholder{color:#a7bddc}.form-input::-ms-input-placeholder{color:#a7bddc}.form-input::placeholder{color:#a7bddc}.form-input.input-sm{font-size:.9rem;height:1.5rem}.form-input.input-lg{font-size:1.1rem;height:2.1rem;padding:.25rem .75rem}.form-input.input-inline{display:inline-block;width:auto;vertical-align:middle}.form-input[type=file]{height:auto}textarea.form-input,textarea.form-input.input-lg,textarea.form-input.input-sm{height:auto}.form-input-hint{font-size:.9rem;margin-top:.3rem;color:#a7bddc}.has-success .form-input-hint,.is-success+.form-input-hint{color:#40bf82}.has-error .form-input-hint,.is-error+.form-input-hint{color:#6d1219}.form-select{font-size:1rem;line-height:1.4rem;width:100%;height:1.9rem;padding:.15rem .5rem;vertical-align:middle;color:inherit;border:.1rem solid #95afd5;border-radius:.2rem;outline:0;background:#f8f9f6;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select:focus{border-color:#1f314d;box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.form-select::-ms-expand{display:none}.form-select.select-sm{font-size:.9rem;height:1.5rem}.form-select.select-lg{font-size:1.1rem;height:2.1rem;padding:.25rem 1.75rem .25rem .75rem}.form-select[multiple],.form-select[size]{height:auto;padding:.15rem .5rem}.form-select[multiple] option,.form-select[size] option{padding:.2rem .3rem}.form-select:not([multiple]):not([size]){padding-right:1.5rem;background:#f8f9f6 url('data:image/svg+xml;charset=utf8,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%204%205\'%3E%3Cpath%20fill=\'%23667189\'%20d=\'M2%200L0%202h4zm0%205L0%203h4z\'/%3E%3C/svg%3E') no-repeat right .35rem center/.4rem .5rem}.has-icon-left,.has-icon-right{position:relative}.has-icon-left .form-icon,.has-icon-right .form-icon{position:absolute;z-index:2;top:50%;width:1rem;height:1rem;margin:0 .15rem;transform:translateY(-50%)}.has-icon-left .form-icon{left:.1rem}.has-icon-left .form-input{padding-left:1.3rem}.has-icon-right .form-icon{right:.1rem}.has-icon-right .form-input{padding-right:1.3rem}.form-checkbox,.form-radio,.form-switch{line-height:1.4rem;position:relative;display:block;min-height:1.5rem;margin:.4rem 0;padding:.05rem .5rem .05rem 1.5rem}.form-checkbox input,.form-radio input,.form-switch input{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px}.form-checkbox input:focus+.form-icon,.form-radio input:focus+.form-icon,.form-switch input:focus+.form-icon{border-color:#1f314d;box-shadow:0 0 0 .1rem rgba(31,49,77,.2)}.form-checkbox input:checked+.form-icon,.form-radio input:checked+.form-icon,.form-switch input:checked+.form-icon{border-color:#1f314d;background:#1f314d}.form-checkbox .form-icon,.form-radio .form-icon,.form-switch .form-icon{position:absolute;display:inline-block;cursor:pointer;transition:background .2s,border .2s,box-shadow .2s,color .2s;border:.1rem solid #95afd5}.form-checkbox.input-sm,.form-radio.input-sm,.form-switch.input-sm{font-size:.9rem;margin:0}.form-checkbox.input-lg,.form-radio.input-lg,.form-switch.input-lg{font-size:1.1rem;margin:.3rem 0}.form-checkbox .form-icon,.form-radio .form-icon{top:.25rem;left:0;width:1rem;height:1rem;background:#f8f9f6}.form-checkbox input:active+.form-icon,.form-radio input:active+.form-icon{background:#dee6f2}.form-checkbox .form-icon{border-radius:.2rem}.form-checkbox input:checked+.form-icon::before{position:absolute;top:50%;left:50%;width:6px;height:9px;margin-top:-6px;margin-left:-3px;content:'';transform:rotate(45deg);border:.1rem solid #f8f9f6;border-top-width:0;border-left-width:0;background-clip:padding-box}.form-checkbox input:indeterminate+.form-icon{border-color:#1f314d;background:#1f314d}.form-checkbox input:indeterminate+.form-icon::before{position:absolute;top:50%;left:50%;width:10px;height:2px;margin-top:-1px;margin-left:-5px;content:'';background:#f8f9f6}.form-radio .form-icon{border-radius:50%}.form-radio input:checked+.form-icon::before{position:absolute;top:50%;left:50%;width:6px;height:6px;content:'';transform:translate(-50%,-50%);border-radius:50%;background:#f8f9f6}.form-switch{padding-left:2.2rem}.form-switch .form-icon{top:.2rem;left:0;width:1.7rem;height:1.1rem;border-radius:.6rem;background:#a7bddc;background-clip:padding-box}.form-switch .form-icon::before{position:absolute;top:0;left:0;display:block;width:.9rem;height:.9rem;content:'';transition:background .2s,border .2s,box-shadow .2s,color .2s,left .2s;border-radius:50%;background:#f8f9f6}.form-switch input:checked+.form-icon::before{left:14px}.form-switch input:active+.form-icon::before{background:#e9eef6}.input-group{display:flex}.input-group .input-group-addon{line-height:1.4rem;padding:.15rem .5rem;white-space:nowrap;border:.1rem solid #95afd5;border-radius:.2rem;background:#e9eef6}.input-group .input-group-addon.addon-sm{font-size:.9rem}.input-group .input-group-addon.addon-lg{font-size:1.1rem;padding:.25rem .75rem}.input-group .form-input,.input-group .form-select{width:1%;flex:1 1 auto}.input-group .input-group-btn{z-index:1}.input-group .form-input:first-child:not(:last-child),.input-group .form-select:first-child:not(:last-child),.input-group .input-group-addon:first-child:not(:last-child),.input-group .input-group-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-input:not(:first-child):not(:last-child),.input-group .form-select:not(:first-child):not(:last-child),.input-group .input-group-addon:not(:first-child):not(:last-child),.input-group .input-group-btn:not(:first-child):not(:last-child){margin-left:-.1rem;border-radius:0}.input-group .form-input:last-child:not(:first-child),.input-group .form-select:last-child:not(:first-child),.input-group .input-group-addon:last-child:not(:first-child),.input-group .input-group-btn:last-child:not(:first-child){margin-left:-.1rem;border-top-left-radius:0;border-bottom-left-radius:0}.input-group .form-input:focus,.input-group .form-select:focus,.input-group .input-group-addon:focus,.input-group .input-group-btn:focus{z-index:2}.input-group .form-select{width:auto}.input-group.input-inline{display:inline-flex}.form-input.is-success,.form-select.is-success,.has-success .form-input,.has-success .form-select{border-color:#40bf82;background:#fff}.form-input.is-success:focus,.form-select.is-success:focus,.has-success .form-input:focus,.has-success .form-select:focus{box-shadow:0 0 0 .1rem rgba(64,191,130,.2)}.form-input.is-error,.form-select.is-error,.has-error .form-input,.has-error .form-select{border-color:#6d1219;background:#ef9fa4}.form-input.is-error:focus,.form-select.is-error:focus,.has-error .form-input:focus,.has-error .form-select:focus{box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.form-checkbox.is-error .form-icon,.form-radio.is-error .form-icon,.form-switch.is-error .form-icon,.has-error .form-checkbox .form-icon,.has-error .form-radio .form-icon,.has-error .form-switch .form-icon{border-color:#6d1219}.form-checkbox.is-error input:checked+.form-icon,.form-radio.is-error input:checked+.form-icon,.form-switch.is-error input:checked+.form-icon,.has-error .form-checkbox input:checked+.form-icon,.has-error .form-radio input:checked+.form-icon,.has-error .form-switch input:checked+.form-icon{border-color:#6d1219;background:#6d1219}.form-checkbox.is-error input:focus+.form-icon,.form-radio.is-error input:focus+.form-icon,.form-switch.is-error input:focus+.form-icon,.has-error .form-checkbox input:focus+.form-icon,.has-error .form-radio input:focus+.form-icon,.has-error .form-switch input:focus+.form-icon{border-color:#6d1219;box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.form-checkbox.is-error input:indeterminate+.form-icon,.has-error .form-checkbox input:indeterminate+.form-icon{border-color:#6d1219;background:#6d1219}.form-input:not(:-moz-placeholder-shown):invalid{border-color:#6d1219}.form-input:not(:-ms-input-placeholder):invalid{border-color:#6d1219}.form-input:not(:placeholder-shown):invalid{border-color:#6d1219}.form-input:not(:-moz-placeholder-shown):invalid:focus{background:#ef9fa4;box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.form-input:not(:-ms-input-placeholder):invalid:focus{background:#ef9fa4;box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.form-input:not(:placeholder-shown):invalid:focus{background:#ef9fa4;box-shadow:0 0 0 .1rem rgba(109,18,25,.2)}.form-input:not(:-moz-placeholder-shown):invalid+.form-input-hint{color:#6d1219}.form-input:not(:-ms-input-placeholder):invalid+.form-input-hint{color:#6d1219}.form-input:not(:placeholder-shown):invalid+.form-input-hint{color:#6d1219}.form-input.disabled,.form-input:disabled,.form-select.disabled,.form-select:disabled{cursor:not-allowed;opacity:.5;color:#1a1419!important;background-color:#dee6f2}.form-input[readonly]{background-color:#e9eef6}input.disabled+.form-icon,input:disabled+.form-icon{cursor:not-allowed;opacity:.5;background:#dee6f2}.form-switch input.disabled+.form-icon::before,.form-switch input:disabled+.form-icon::before{background:#f8f9f6}.form-horizontal{padding:.5rem 0}.form-horizontal .form-group{display:flex;flex-wrap:wrap}.form-inline{display:inline-block}.label{line-height:1.25;display:inline-block;padding:.1rem .2rem;color:#263d5f;border-radius:.2rem;background:#dee6f2}.label.label-rounded{padding-right:.4rem;padding-left:.4rem;border-radius:5rem}.label.label-primary{color:#f8f9f6;background:#1f314d}.label.label-secondary{color:#1f314d;background:#999fa8}.label.label-success{color:#f8f9f6;background:#40bf82}.label.label-warning{color:#f8f9f6;background:#dba21f}.label.label-error{color:#f8f9f6;background:#6d1219}code{font-size:85%;line-height:1.25;padding:.1rem .2rem;color:#f0f3ec;border-radius:.2rem;background:#1a1419}pre{position:relative;color:#f8f8f2;border-radius:.2rem;background-color:#1a1419}pre::before{font-size:.9rem;position:absolute;top:.2rem;right:.5rem;content:attr(data-lang);color:#a7bddc}pre code{line-height:1.5;display:block;overflow-x:auto;width:100%;padding:1rem;color:inherit}.img-responsive{display:block;max-width:100%;height:auto}.img-fit-cover{-o-object-fit:cover;object-fit:cover}.img-fit-contain{-o-object-fit:contain;object-fit:contain}.video-responsive{position:relative;display:block;overflow:hidden;width:100%;padding:0}.video-responsive::before{display:block;padding-bottom:56.25%;content:''}.video-responsive embed,.video-responsive iframe,.video-responsive object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}video.video-responsive{max-width:100%;height:auto}video.video-responsive::before{content:none}.video-responsive-4-3::before{padding-bottom:75%}.video-responsive-1-1::before{padding-bottom:100%}.figure{margin:0 0 .5rem 0}.figure .figure-caption{margin-top:.5rem;color:#436ba8}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:.5rem;padding-left:.5rem}.container.grid-xl{max-width:1462px}.container.grid-lg{max-width:982px}.container.grid-md{max-width:862px}.container.grid-sm{max-width:622px}.container.grid-xs{max-width:502px}.show-lg,.show-md,.show-sm,.show-xl,.show-xs{display:none!important}.columns{display:flex;margin-right:-.5rem;margin-left:-.5rem;flex-wrap:wrap}.columns.col-gapless{margin-right:0;margin-left:0}.columns.col-gapless>.column{padding-right:0;padding-left:0}.columns.col-oneline{overflow-x:auto;flex-wrap:nowrap}.column{max-width:100%;padding-right:.5rem;padding-left:.5rem;flex:1}.column.col-1,.column.col-10,.column.col-11,.column.col-12,.column.col-2,.column.col-3,.column.col-4,.column.col-5,.column.col-6,.column.col-7,.column.col-8,.column.col-9,.column.col-auto{flex:none}.col-12{width:100%}.col-11{width:91.66666667%}.col-10{width:83.33333333%}.col-9{width:75%}.col-8{width:66.66666667%}.col-7{width:58.33333333%}.col-6{width:50%}.col-5{width:41.66666667%}.col-4{width:33.33333333%}.col-3{width:25%}.col-2{width:16.66666667%}.col-1{width:8.33333333%}.col-auto{width:auto;max-width:none;flex:0 0 auto}.col-mx-auto{margin-right:auto;margin-left:auto}.col-ml-auto{margin-left:auto}.col-mr-auto{margin-right:auto}@media (max-width:1257px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{flex:none}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-auto{width:auto}.hide-xl{display:none!important}.show-xl{display:block!important}}@media (max-width:960px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto{flex:none}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-auto{width:auto}.hide-lg{display:none!important}.show-lg{display:block!important}}@media (max-width:840px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto{flex:none}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-auto{width:auto}.hide-md{display:none!important}.show-md{display:block!important}}@media (max-width:600px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto{flex:none}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-auto{width:auto}.hide-sm{display:none!important}.show-sm{display:block!important}}@media (max-width:480px){.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-auto{flex:none}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-auto{width:auto}.hide-xs{display:none!important}.show-xs{display:block!important}}.full-width{padding-right:0!important;padding-left:0!important}.full-width-gray{padding-right:0!important;padding-left:0!important;background-color:#e9eef6!important}.grid{display:grid;grid-gap:.2rem;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-auto-rows:320px;grid-auto-flow:dense}.grid-tall{grid-row:span 2}.grid-tall-3{grid-row:span 3}.grid-tall-4{grid-row:span 4}.grid-square{grid-row:span 1;grid-column:span 1}.grid-square-2{grid-row:span 2;grid-column:span 2}.grid-square-3{grid-row:span 3;grid-column:span 3}.grid-wide{grid-column:span 2}.grid-wide-3{grid-column:span 3}.grid-wide-4{grid-column:span 4}.hero{display:flex;flex-direction:column;padding-top:4rem;padding-bottom:4rem;justify-content:space-between}.hero.hero-sm{padding-top:2rem;padding-bottom:2rem}.hero.hero-lg{padding-top:6rem;padding-bottom:6rem}.hero .hero-body{padding:.5rem}.navbar{display:flex;padding-right:.7rem;padding-left:.7rem;border-bottom:2px solid #c1c1cd;align-items:stretch;flex-wrap:wrap;justify-content:space-between}.navbar .navbar-section{display:flex;align-items:center;flex:1 0 0}.navbar .navbar-section:not(:first-child):last-child{justify-content:flex-end}.navbar .navbar-center{display:flex;align-items:center;flex:0 0 auto}.navbar .navbar-brand{font-size:1.1rem;position:relative;top:15%;text-decoration:none}.accordion input:checked~.accordion-header .icon,.accordion[open] .accordion-header .icon{transform:rotate(90deg)}.accordion input:checked~.accordion-body,.accordion[open] .accordion-body{max-height:50rem}.accordion .accordion-header{display:block;padding:.3rem .5rem}.accordion .accordion-header .icon{transition:transform .25s}.accordion .accordion-body{overflow:hidden;max-height:0;margin-bottom:.5rem;transition:max-height .25s}summary.accordion-header::-webkit-details-marker{display:none}.avatar{font-size:.85rem;font-weight:300;line-height:1.25;position:relative;display:inline-block;width:1.7rem;height:1.7rem;margin:0;vertical-align:middle;color:rgba(248,249,246,.85);border-radius:50%;background:#1f314d}.avatar.avatar-xs{font-size:.45rem;width:.9rem;height:.9rem}.avatar.avatar-sm{font-size:.65rem;width:1.3rem;height:1.3rem}.avatar.avatar-lg{font-size:1.25rem;width:2.5rem;height:2.5rem}.avatar.avatar-xl{font-size:1.65rem;width:3.3rem;height:3.3rem}.avatar img{position:relative;z-index:1;width:100%;height:100%;border-radius:50%}.avatar .avatar-icon,.avatar .avatar-presence{position:absolute;z-index:2;right:14.64%;bottom:14.64%;width:50%;height:50%;padding:.2rem;transform:translate(50%,50%);background:#f8f9f6}.avatar .avatar-presence{width:.5em;height:.5em;border-radius:50%;background:#a7bddc;box-shadow:0 0 0 .2rem #f8f9f6}.avatar .avatar-presence.online{background:#40bf82}.avatar .avatar-presence.busy{background:#6d1219}.avatar .avatar-presence.away{background:#dba21f}.avatar[data-initial]::before{position:absolute;z-index:1;top:50%;left:50%;content:attr(data-initial);transform:translate(-50%,-50%);color:currentColor}.badge{position:relative;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge]::after{display:inline-block;content:attr(data-badge);transform:translate(-.05rem,-.5rem);color:#f8f9f6;border-radius:.5rem;background:#1f314d;background-clip:padding-box;box-shadow:0 0 0 .1rem #f8f9f6}.badge[data-badge]::after{font-size:.9rem;line-height:1;min-width:.9rem;height:.9rem;padding:.1rem .2rem;text-align:center;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge='']::after{width:6px;min-width:6px;height:6px;padding:0}.badge.btn::after{position:absolute;top:0;right:0;transform:translate(50%,-50%)}.badge.avatar::after{position:absolute;z-index:100;top:14.64%;right:14.64%;transform:translate(50%,-50%)}.breadcrumb{margin:.3rem 0;padding:.3rem 0;list-style:none}.breadcrumb .breadcrumb-item{display:inline-block;margin:0;padding:.3rem 0;color:#436ba8}.breadcrumb .breadcrumb-item:not(:last-child){margin-right:.3rem}.breadcrumb .breadcrumb-item:not(:last-child) a{color:#436ba8}.breadcrumb .breadcrumb-item:not(:first-child)::before{padding-right:.5rem;content:'/';color:#436ba8}.bar{display:flex;width:100%;height:.9rem;border-radius:.2rem;background:#dee6f2;flex-wrap:nowrap}.bar.bar-sm{height:.3rem}.bar .bar-item{font-size:.9rem;line-height:.9rem;position:relative;display:block;width:0;height:100%;text-align:center;color:#f8f9f6;background:#1f314d;flex-shrink:0}.bar .bar-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.bar .bar-item:last-child{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;flex-shrink:1}.bar-slider{position:relative;height:.2rem;margin:.5rem 0}.bar-slider .bar-item{position:absolute;left:0;padding:0}.bar-slider .bar-item:not(:last-child):first-child{z-index:1;background:#dee6f2}.bar-slider .bar-slider-btn{position:absolute;top:50%;right:0;width:.7rem;height:.7rem;padding:0;transform:translate(50%,-50%);border:0;border-radius:50%;background:#1f314d}.bar-slider .bar-slider-btn:active{box-shadow:0 0 0 .1rem #1f314d}.card{display:flex;flex-direction:column;border:.1rem solid #bacae3;border-radius:.2rem;background:#f8f9f6}.card .card-body,.card .card-footer,.card .card-header{padding:.9rem;padding-bottom:0}.card .card-body:last-child,.card .card-footer:last-child,.card .card-header:last-child{padding-bottom:.9rem}.card .card-body{flex:1 1 auto}.card .card-image{padding-top:.9rem}.card .card-image:first-child{padding-top:0}.card .card-image:first-child img{border-top-left-radius:.2rem;border-top-right-radius:.2rem}.card .card-image:last-child img{border-bottom-right-radius:.2rem;border-bottom-left-radius:.2rem}.chip{font-size:90%;line-height:.9rem;display:inline-flex;overflow:hidden;max-width:320px;height:1.3rem;margin:.2rem;padding:.3rem .5rem;vertical-align:middle;white-space:nowrap;text-decoration:none;text-overflow:ellipsis;border-radius:5rem;background:#dee6f2;align-items:center}.chip.active{color:#f8f9f6;background:#1f314d}.chip .avatar{margin-right:.3rem;margin-left:-.5rem}.chip .btn-clear{transform:scale(.75);border-radius:50%}.dropdown{position:relative;display:inline-block}.dropdown .menu{position:absolute;top:100%;left:0;display:none;overflow-y:auto;max-height:50vh;-webkit-animation:slide-down .15s ease 1;animation:slide-down .15s ease 1}.dropdown.dropdown-right .menu{right:0;left:auto}.dropdown .dropdown-toggle:focus+.menu,.dropdown .menu:hover,.dropdown.active .menu{display:block}.dropdown .btn-group .dropdown-toggle:nth-last-child(2){border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.empty{padding:3.3rem 1.7rem;text-align:center;color:#436ba8;border-radius:.2rem;background:#e9eef6}.empty .empty-icon{margin-bottom:.9rem}.empty .empty-subtitle,.empty .empty-title{margin:.5rem auto}.empty .empty-action{margin-top:.9rem}.menu{z-index:300;min-width:180px;margin:0;padding:.5rem;list-style:none;transform:translateY(.3rem);border-radius:.2rem;background:#f8f9f6;box-shadow:0 .05rem .2rem rgba(23,37,58,.3)}.menu.menu-nav{background:0 0;box-shadow:none}.menu .menu-item{position:relative;margin-top:0;padding:0 .5rem}.menu .menu-item>a{display:block;margin:0 -.5rem;padding:.1rem .1rem;text-decoration:none;color:inherit;border-radius:.2rem}.menu .menu-item>a:focus,.menu .menu-item>a:hover{color:#1f314d;background:#e9eef6}.menu .menu-item>a.active,.menu .menu-item>a:active{color:#1f314d;background:#a7bddc}.menu .menu-item .form-checkbox,.menu .menu-item .form-radio,.menu .menu-item .form-switch{margin:.2rem 0}.menu .menu-item+.menu-item{font-size:.9rem;margin-top:.3rem}.menu .menu-badge{position:absolute;top:0;right:0;display:flex;height:100%;align-items:center}.menu .menu-badge .label{margin-right:.5rem}.modal{position:fixed;top:-30vh;right:0;bottom:0;left:0;display:none;overflow:hidden;padding:.5rem;opacity:0;align-items:center;justify-content:center}.modal.active,.modal:target{z-index:400;display:flex;opacity:1}.modal.active .modal-overlay,.modal:target .modal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;cursor:default;background:rgba(233,238,246,.75)}.modal.active .modal-container,.modal:target .modal-container{z-index:1;-webkit-animation:slide-down .2s ease 1;animation:slide-down .2s ease 1}.modal.modal-sm .modal-container{max-width:320px;padding:0 .5rem}.modal.modal-lg .modal-overlay{background:#f8f9f6}.modal.modal-lg .modal-container{max-width:960px;box-shadow:none}.modal-container{display:flex;flex-direction:column;width:100%;max-width:640px;max-height:75vh;padding:0 .9rem;border-radius:.2rem;background:#f8f9f6;box-shadow:0 .2rem .5rem rgba(23,37,58,.3)}.modal-container.modal-fullheight{max-height:100vh}.modal-container .modal-header{padding:.9rem;color:#17253a}.modal-container .modal-body{position:relative;overflow-y:auto;padding:.9rem}.modal-container .modal-footer{padding:.9rem;text-align:right}.nav{font-family:“Roboto”,“Droid Sans”,“Helvetica Neue”,sans-serif;display:flex;flex-direction:column;margin:.3rem 0;list-style:none;background-color:inherit}.nav .divider{margin:1px}.nav .h4{font-family:“Roboto”,“Droid Sans”,“Helvetica Neue”,sans-serif}.nav .nav-item a{padding:.3rem .5rem;text-decoration:none;color:#1f314d}.nav .nav-item a:focus,.nav .nav-item a:hover{text-decoration:underline;color:#1a1419}.nav .nav-item.active>a{font-weight:700;color:#101a28}.nav .nav-item.active>a:focus,.nav .nav-item.active>a:hover{color:#1f314d}.nav .nav{margin-bottom:.5rem;margin-left:.9rem}.nav ul{background-color:inherit}.pagination{display:flex;margin:.3rem 0;padding:.3rem 0;list-style:none}.pagination .page-item{margin:.3rem .1rem}.pagination .page-item span{display:inline-block;padding:.3rem .3rem}.pagination .page-item a{display:inline-block;padding:.3rem .5rem;text-decoration:none;border-radius:.2rem}.pagination .page-item a:focus,.pagination .page-item a:hover{color:#1f314d}.pagination .page-item.disabled a{cursor:default;pointer-events:none;opacity:.5}.pagination .page-item.active a{color:#f8f9f6;background:#1f314d}.pagination .page-item.page-next,.pagination .page-item.page-prev{flex:1 0 50%}.pagination .page-item.page-next{text-align:right}.pagination .page-item .page-item-title{margin:0}.pagination .page-item .page-item-subtitle{margin:0;opacity:.5}.panel{display:flex;flex-direction:column;border:.1rem solid #bacae3;border-radius:.2rem}.panel .panel-footer,.panel .panel-header{padding:.9rem;flex:0 0 auto}.panel .panel-nav{flex:0 0 auto}.panel .panel-body{overflow-y:auto;padding:0 .9rem;flex:1 1 auto}.popover{position:relative;display:inline-block}.popover .popover-container{position:absolute;z-index:300;top:0;left:50%;width:320px;padding:.5rem;transition:transform .2s;transform:translate(-50%,-50%) scale(0);opacity:0}.popover :focus+.popover-container,.popover:hover .popover-container{display:block;transform:translate(-50%,-100%) scale(1);opacity:1}.popover.popover-right .popover-container{top:50%;left:100%}.popover.popover-right :focus+.popover-container,.popover.popover-right:hover .popover-container{transform:translate(0,-50%) scale(1)}.popover.popover-bottom .popover-container{top:100%;left:50%}.popover.popover-bottom :focus+.popover-container,.popover.popover-bottom:hover .popover-container{transform:translate(-50%,0) scale(1)}.popover.popover-left .popover-container{top:50%;left:0}.popover.popover-left :focus+.popover-container,.popover.popover-left:hover .popover-container{transform:translate(-100%,-50%) scale(1)}.popover .card{border:0;box-shadow:0 .2rem .5rem rgba(23,37,58,.3)}.step{display:flex;width:100%;margin:.3rem 0;list-style:none;flex-wrap:nowrap}.step .step-item{position:relative;min-height:1rem;margin-top:0;text-align:center;flex:1 1 0}.step .step-item:not(:first-child)::before{position:absolute;top:9px;left:-50%;width:100%;height:2px;content:'';background:#1f314d}.step .step-item a{display:inline-block;padding:20px 10px 0;text-decoration:none;color:#1f314d}.step .step-item a::before{position:absolute;z-index:1;top:.3rem;left:50%;display:block;width:.7rem;height:.7rem;content:'';transform:translateX(-50%);border:.2rem solid #f8f9f6;border-radius:50%;background:#1f314d}.step .step-item.active a::before{border:.2rem solid #1f314d;background:#f8f9f6}.step .step-item.active~.step-item::before{background:#bacae3}.step .step-item.active~.step-item a{color:#a7bddc}.step .step-item.active~.step-item a::before{background:#bacae3}.tab{display:flex;margin:.3rem 0 .2rem 0;list-style:none;border-bottom:.1rem solid #bacae3;align-items:center;flex-wrap:wrap}.tab .tab-item{margin-top:0}.tab .tab-item a{display:block;margin:0 .5rem 0 0;padding:.5rem .3rem .3rem .3rem;text-decoration:none;color:inherit;border-bottom:.2rem solid transparent}.tab .tab-item a:focus,.tab .tab-item a:hover{color:#1f314d}.tab .tab-item a.active,.tab .tab-item.active a{color:#1f314d;border-bottom-color:#1f314d}.tab .tab-item.tab-action{text-align:right;flex:1 0 auto}.tab .tab-item .btn-clear{margin-top:-.3rem}.tab.tab-block .tab-item{text-align:center;flex:1 0 0}.tab.tab-block .tab-item a{margin:0}.tab.tab-block .tab-item .badge[data-badge]::after{position:absolute;top:.2rem;right:.2rem;transform:translate(0,0)}.tab:not(.tab-block) .badge{padding-right:0}.tile{display:flex;align-content:space-between;align-items:flex-start}.tile .tile-action,.tile .tile-icon{flex:0 0 auto}.tile .tile-content{flex:1 1 auto}.tile .tile-content:not(:first-child){padding-left:.5rem}.tile .tile-content:not(:last-child){padding-right:.5rem}.tile .tile-subtitle,.tile .tile-title{line-height:1.4rem}.tile.tile-centered{align-items:center}.tile.tile-centered .tile-content{overflow:hidden}.tile.tile-centered .tile-subtitle,.tile.tile-centered .tile-title{overflow:hidden;margin-bottom:0;white-space:nowrap;text-overflow:ellipsis}.toast{display:block;width:100%;padding:.5rem;color:#1a1419!important;border:.1rem solid #a7bddc;border-radius:.2rem;background:rgba(23,37,58,.95)}.toast.toast-primary{border:.1rem solid #1f314d;background:rgba(233,238,246,.95)}.toast.toast-success{border:.1rem solid #40bf82;background:rgba(179,230,205,.95)}.toast.toast-warning{border:.1rem solid #dba21f;background:rgba(242,218,161,.95)}.toast.toast-error{border:.1rem solid #6d1219;background:rgba(244,190,193,.95)}.toast a{text-decoration:underline;color:#1a1419!important}.toast a.active,.toast a:active,.toast a:focus,.toast a:hover{opacity:.75}.toast .btn-clear{margin:.2rem}.toast p:last-child{margin-bottom:0}.tooltip{position:relative}.tooltip::after{font-size:.9rem;position:absolute;z-index:300;bottom:100%;left:50%;display:block;overflow:hidden;max-width:320px;padding:.3rem .5rem;content:attr(data-tooltip);transition:opacity .2s,transform .2s;transform:translate(-50%,.5rem);white-space:pre;text-overflow:ellipsis;pointer-events:none;opacity:0;color:#f8f9f6;border-radius:.2rem;background:rgba(23,37,58,.95)}.tooltip:focus::after,.tooltip:hover::after{transform:translate(-50%,-.3rem);opacity:1}.tooltip.disabled,.tooltip[disabled]{pointer-events:auto}.tooltip.tooltip-right::after{bottom:50%;left:100%;transform:translate(-.3rem,50%)}.tooltip.tooltip-right:focus::after,.tooltip.tooltip-right:hover::after{transform:translate(.3rem,50%)}.tooltip.tooltip-bottom::after{top:100%;bottom:auto;transform:translate(-50%,-.5rem)}.tooltip.tooltip-bottom:focus::after,.tooltip.tooltip-bottom:hover::after{transform:translate(-50%,.3rem)}.tooltip.tooltip-left::after{right:100%;bottom:50%;left:auto;transform:translate(.5rem,50%)}.tooltip.tooltip-left:focus::after,.tooltip.tooltip-left:hover::after{transform:translate(-.3rem,50%)}@-webkit-keyframes loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@-webkit-keyframes slide-down{0%{transform:translateY(-1.7rem);opacity:0}100%{transform:translateY(0);opacity:1}}@keyframes slide-down{0%{transform:translateY(-1.7rem);opacity:0}100%{transform:translateY(0);opacity:1}}.text-primary{color:#1f314d!important}a.text-primary:focus,a.text-primary:hover{color:#17253a}a.text-primary:visited{color:#263d5f}.text-secondary{color:#3f4e5f!important}a.text-secondary:focus,a.text-secondary:hover{color:#354150}a.text-secondary:visited{color:#495b6e}.text-gray{color:#a7bddc!important}a.text-gray:focus,a.text-gray:hover{color:#95afd5}a.text-gray:visited{color:#bacae3}.text-gray-dark{color:#436ba8!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#3c6096}a.text-gray-dark:visited{color:#4c77b8}.text-light{color:#f8f9f6!important}a.text-light:focus,a.text-light:hover{color:#ebefe6}a.text-light:visited{color:#fff}.text-dark{color:#1f314d!important}a.text-dark:focus,a.text-dark:hover{color:#17253a}a.text-dark:visited{color:#263d5f}.text-success{color:#40bf82!important}a.text-success:focus,a.text-success:hover{color:#39ac75}a.text-success:visited{color:#53c68e}.text-warning{color:#dba21f!important}a.text-warning:focus,a.text-warning:hover{color:#c4921c}a.text-warning:visited{color:#e2ad32}.text-error{color:#6d1219!important}a.text-error:focus,a.text-error:hover{color:#570f14}a.text-error:visited{color:#83161d}.bg-primary{color:#f8f9f6;background:#1f314d!important}.bg-secondary{background:#999fa8!important}.bg-dark{color:#f8f9f6;background:#17253a!important}.bg-gray{background:#e9eef6!important}.bg-light-gray{background:#e9eef6!important}.bg-dark-gray{background:#dee6f2!important}.bg-success{color:#f8f9f6;background:#40bf82!important}.bg-warning{color:#f8f9f6;background:#dba21f!important}.bg-error{color:#f8f9f6;background:#6d1219!important}.c-hand{cursor:pointer}.c-move{cursor:move}.c-zoom-in{cursor:zoom-in}.c-zoom-out{cursor:zoom-out}.c-not-allowed{cursor:not-allowed}.c-auto{cursor:auto}.clickable{cursor:pointer}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-hide,.d-none{display:none!important}.d-visible{visibility:visible}.d-invisible{visibility:hidden}.text-hide{font-size:0;line-height:0;color:transparent;border:0;background:0 0;text-shadow:none}.text-assistive{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border:0}.divider,.divider-vert{position:relative;display:block}.divider-vert[data-content]::after,.divider[data-content]::after{font-size:.9rem;display:inline-block;padding:0 .5rem;content:attr(data-content);transform:translateY(-.8rem);color:#a7bddc;background:#f8f9f6}.divider{height:.1rem;margin:.5rem 0;border-top:.1rem solid #d7e1ef}.divider[data-content]{margin:.9rem 0}.divider-vert{display:block;padding:.9rem}.divider-vert::before{position:absolute;top:.5rem;bottom:.5rem;left:50%;display:block;content:'';transform:translateX(-50%);border-left:.1rem solid #bacae3}.divider-vert[data-content]::after{position:absolute;top:50%;left:50%;padding:.3rem 0;transform:translate(-50%,-50%)}.loading{position:relative;min-height:.9rem;pointer-events:none;color:transparent!important}.loading::after{position:absolute;z-index:1;top:50%;left:50%;display:block;width:.9rem;height:.9rem;margin-top:-.5rem;margin-left:-.5rem;content:'';-webkit-animation:loading .5s infinite linear;animation:loading .5s infinite linear;border:.2rem solid #1f314d;border-top-color:transparent;border-right-color:transparent;border-radius:50%}.loading.loading-lg{min-height:2.1rem}.loading.loading-lg::after{width:1.7rem;height:1.7rem;margin-top:-.9rem;margin-left:-.9rem}.clearfix::after{display:table;clear:both;content:''}.float-left{float:left!important}.float-right{float:right!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-sticky{position:-webkit-sticky!important;position:sticky!important}.p-centered{display:block;float:none;margin-right:auto;margin-left:auto}.flex-centered{display:flex;align-items:center;justify-content:center}.m-0{margin:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.3rem!important}.mb-1{margin-bottom:.3rem!important}.ml-1{margin-left:.3rem!important}.mr-1{margin-right:.3rem!important}.mt-1{margin-top:.3rem!important}.mx-1{margin-right:.3rem!important;margin-left:.3rem!important}.my-1{margin-top:.3rem!important;margin-bottom:.3rem!important}.m-2{margin:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mr-2{margin-right:.5rem!important}.mt-2{margin-top:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.p-0{padding:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.pr-0{padding-right:0!important}.pt-0{padding-top:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.3rem!important}.pb-1{padding-bottom:.3rem!important}.pl-1{padding-left:.3rem!important}.pr-1{padding-right:.3rem!important}.pt-1{padding-top:.3rem!important}.px-1{padding-right:.3rem!important;padding-left:.3rem!important}.py-1{padding-top:.3rem!important;padding-bottom:.3rem!important}.p-2{padding:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.pr-2{padding-right:.5rem!important}.pt-2{padding-top:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.s-rounded{border-radius:.2rem}.s-circle{border-radius:50%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-large{font-size:1.2em}.text-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.text-clip{overflow:hidden;white-space:nowrap;text-overflow:clip}.text-break{word-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;-ms-hyphens:auto}
\ No newline at end of file
diff --git a/static/favicon.png b/static/favicon.png
new file mode 100644
index 0000000..e69de29
diff --git a/static/icons/feather-sprite.svg b/static/icons/feather-sprite.svg
new file mode 100644
index 0000000..aa361de
--- /dev/null
+++ b/static/icons/feather-sprite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/manifest.json b/static/manifest.json
new file mode 100644
index 0000000..d89c8f9
--- /dev/null
+++ b/static/manifest.json
@@ -0,0 +1,20 @@
+{
+ "background_color": "#ffffff",
+ "theme_color": "#333333",
+ "name": "Buttons the Computer",
+ "short_name": "Buttons",
+ "display": "minimal-ui",
+ "start_url": "/",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-256x256.png",
+ "sizes": "256x256",
+ "type": "image/png"
+ }
+ ]
+}